fill in NA based on the last non-NA value for each group in R
本问题已经有最佳答案,请猛点这里访问。
我的问题是我有一个数据框
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | y1 =c( rep("A",5),rep("B",5)) y2 = rep(c(1:5),2) y3 = y2 y3[c(2,7,9)]=NA m = data.frame(y1,y2,y3) y1 y2 y3 1 A 1 1 2 A 2 <NA> 3 A 3 3 4 A 4 4 5 A 5 5 6 B 1 1 7 B 2 <NA> 8 B 3 3 9 B 4 <NA> 10 B 5 5 |
我想基于该NA前面最接近的非NA值来填写NA。我的输出应如下所示:
1 2 3 4 5 6 7 8 9 10 11 | y1 y2 y3 y4 1 A 1 1 1 2 A 2 <NA> 1 3 A 3 3 3 4 A 4 4 4 5 A 5 5 5 6 B 1 1 1 7 B 2 <NA> 1 8 B 3 3 3 9 B 4 <NA> 3 10 B 5 5 5 |
关于如何使用
这可能以前已经回答过,但是我不知道是否在
1 | m %>% group_by(y1) %>% mutate(y4=zoo::na.locf(y3)) |