如何在每个新NA上增加1的值替换NAs,该值不符合之前的值?
以下是一个例子:
ID
1
1
NA (replaced by 1)
NA (replaced by 1)
2
2
NA (replaced by 2)
NA (replaced by 2)
3
3
NA (replaced by 3)
NA (replaced by 3)
...
这种情况下的预期结果是:
ID
1
1
1
1
2
2
2
2
3
3
3
3
...
数据
df <- data.frame(ID=c( 1 , 1 , NA , NA , 2 , 2 , NA , NA , 3 , 3 , NA , NA ))
答案 0 :(得分:4)
这是一个非常快速且无痛的解决方案:
library(zoo)
df <- data.frame(ID=c( 1 , 1 , NA , NA , 2 , 2 , NA , NA , 3 , 3 , NA , NA ))
na.locf(df)
......应该返回
ID
1
1
1
1
2
2
2
2
3
3
3
3
答案 1 :(得分:1)
或者这个:
df <- c(1,1,NA,NA,2,2,NA,NA,3,3,NA,NA)
c(NA, df[!is.na(df)])[cumsum(!is.na(df)) + 1]
[1] 1 1 1 1 2 2 2 2 3 3 3 3