我想在两个或多个间隙中使用最后一个观察结果(locf)或下一个观察结果向后(nocb)来估算缺失值。
为了确定填充缺失值的方向(上/下),对数据框中的第一列(间隔)进行加权。插值(locf/nocb)应该从最小值结束(对应于向外的 NAs 行的间隔值)。默认的 fillna 是 locf。
示例:异常 nafill 的逻辑:在 ID2 列第 5-7 行(包括标题)中,方向将为 nocb,因为 (Interval[7,] value= 50) 小于 Interval[5,] value=100。
尝试使用df1 <-df %>%fill(ID1, ID2, ID3,which.min(Interval)) %>% #default direction down
fill(ID1, ID2, ID3, .direction = "up",which.min(Interval))
aint 工作,请协助更正或建议另一种有效的 R 解决方案。预先感谢您的帮助。
输入
df = data.frame(
Interval = c(0,20,80,100,50,50,130,100,70,80,200),
ID1 = c(0,1,1,0,NA,NA,NA,NA,1,NA,1),
ID2 = c(1,0,0,NA,NA,NA,1,1,3,NA,1),
ID3 = c(1,NA,1,0,3,NA,NA,NA,1,NA,1)
)
Interval ID1 ID2 ID3
0 0 1 1
20 1 0 NA
80 1 0 1
100 0 NA 0
50 NA NA 3
50 NA NA NA
130 NA 1 NA
100 NA 1 NA
70 1 3 1
80 NA NA NA
200 1 1 1
预期产出
Interval ID1 ID2 ID3
0 0 1 1
20 1 0 NA
80 1 0 1
100 0 1 0
50 0 1 3
50 0 1 3
130 0 1 3
100 0 1 3
70 1 3 1
80 NA NA NA
200 1 1 1