我的问题是我的数据框m
如下所示
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值&#34;在&#34;前面填写NA。这个NA。我的输出应该如下所示:
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
有关如何使用dplyr
来实现此目标的任何想法吗?
答案 0 :(得分:19)
之前可能已经回答过,但我不知道它是否已在dplyr
上下文中得到解答。 zoo::na.locf()
是你的朋友:
m %>% group_by(y1) %>% mutate(y4=zoo::na.locf(y3))