我正在尝试填充数据集中的一些值。我的数据的简化版本如下:
> example_df
Date GROUP value
157 2018-01-31 10180 3.464
158 2018-02-28 10180 3.413
159 2018-03-31 10180 3.418
160 2018-04-30 10180 NA
161 2018-05-31 10180 NA
162 2018-06-30 10180 NA
163 2018-07-31 10180 NA
164 2018-08-31 10180 NA
165 2018-09-30 10180 NA
166 2018-10-31 10180 NA
167 2018-11-30 10180 NA
168 2018-12-31 10180 NA
169 2019-01-31 10180 NA
170 2019-02-28 10180 NA
171 2019-03-31 10180 NA
172 2019-04-30 10180 NA
173 2019-05-31 10180 NA
174 2019-06-30 10180 NA
175 2019-07-31 10180 NA
176 2019-08-31 10180 NA
177 2019-09-30 10180 NA
178 2019-10-31 10180 NA
179 2019-11-30 10180 NA
373 2018-01-31 10420 5.085
374 2018-02-28 10420 5.051
375 2018-03-31 10420 4.993
376 2018-04-30 10420 NA
377 2018-05-31 10420 NA
378 2018-06-30 10420 NA
379 2018-07-31 10420 NA
380 2018-08-31 10420 NA
381 2018-09-30 10420 NA
382 2018-10-31 10420 NA
383 2018-11-30 10420 NA
384 2018-12-31 10420 NA
385 2019-01-31 10420 NA
386 2019-02-28 10420 NA
387 2019-03-31 10420 NA
388 2019-04-30 10420 NA
389 2019-05-31 10420 NA
390 2019-06-30 10420 NA
391 2019-07-31 10420 NA
392 2019-08-31 10420 NA
393 2019-09-30 10420 NA
394 2019-10-31 10420 NA
395 2019-11-30 10420 NA
589 2018-01-31 10500 5.796
590 2018-02-28 10500 5.860
591 2018-03-31 10500 5.913
592 2018-04-30 10500 NA
593 2018-05-31 10500 NA
594 2018-06-30 10500 NA
595 2018-07-31 10500 NA
596 2018-08-31 10500 NA
597 2018-09-30 10500 NA
598 2018-10-31 10500 NA
599 2018-11-30 10500 NA
600 2018-12-31 10500 NA
601 2019-01-31 10500 NA
602 2019-02-28 10500 NA
603 2019-03-31 10500 NA
604 2019-04-30 10500 NA
605 2019-05-31 10500 NA
606 2019-06-30 10500 NA
607 2019-07-31 10500 NA
608 2019-08-31 10500 NA
609 2019-09-30 10500 NA
610 2019-10-31 10500 NA
611 2019-11-30 10500 NA
如你看到的。对于每个组,我都有截至今天月份的值,然后是一组 NA,直到下一组开始。我想要做的是,对于每个组,用一个序列填充这些 NA,该序列源自最后一个非 NULL 值,并增加一个固定值(我选择了 0.065),直到该组的最终日期。我更喜欢 dplyr 解决方案,但任何有关如何实现这一目标的信息都会非常有帮助。谢谢。
library(data.table)
dt = as.data.table(yourdf) # or convert in place using setDT
dt[, value := value[1] + 0.065 * (1:.N - 1)
, by = .(GROUP, cumsum(!is.na(value)))]
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)