根据 R 中每个组的最后一个非 NA 值填写 NA [英] fill in NA based on the last non-NA value for each group in R
本文介绍了根据 R 中每个组的最后一个非 NA 值填写 NA的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我的问题是我有一个数据框 m
如下
My question is I have a dataframe m
as below
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.我的输出应该是这样的:
I want to fill in the NA based on the closest non-NA value "in front of" this NA. My output should look like this:
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
来实现这个目标吗?
Any idea about how to use dplyr
to achieve this goal?
推荐答案
这可能之前已经回答过,但我不知道它是否在 dplyr
上下文中得到了回答.zoo::na.locf()
是你的朋友:
This may have been answered before, but I don't know if it's been answered in a dplyr
context. zoo::na.locf()
is your friend:
m %>% group_by(y1) %>% mutate(y4=zoo::na.locf(y3))
这篇关于根据 R 中每个组的最后一个非 NA 值填写 NA的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文