【发布时间】:2016-12-23 00:06:44
【问题描述】:
我有一个面板数据,其 NA 值如下所示:
uid year month day value
1 1 2016 8 1 NA
2 1 2016 8 2 NA
3 1 2016 8 3 30
4 1 2016 8 4 NA
5 1 2016 8 5 20
6 2 2016 8 1 40
7 2 2016 8 2 NA
8 2 2016 8 3 50
9 2 2016 8 4 NA
10 2 2016 8 5 NA
我想进行线性插值,所以我写了这段代码:
library(dplyr)
library(zoo)
panel_df <- group_by(panel_df, userid)
panel_df <- mutate(panel_df, value=na.approx(value, na.rm=FALSE))
然后我得到输出:
uid year month day value
1 1 2016 8 1 NA
2 1 2016 8 2 NA
3 1 2016 8 3 30
4 1 2016 8 4 25
5 1 2016 8 5 20
6 2 2016 8 1 40
7 2 2016 8 2 45
8 2 2016 8 3 50
9 2 2016 8 4 NA
10 2 2016 8 5 NA
这里的 approx 方法成功地插入了 NA 值,但没有外推。
有没有什么好方法可以用这个用户的第一个非 NA 值(30)替换第一行和第二行的值?同样,如何将第 9 行和第 10 行的值替换为该用户的最后一个非 NA 值(50)?
【问题讨论】:
标签: r