R:如何在特定条件下替换NA值

  • 本文关键字:条件下 替换 NA r
  • 更新时间 :
  • 英文 :


everyone.我想将 NA 值替换为相同参与者的非 NA 值。我试过这个,但它返回了原来的df,我不知道发生了什么。

df = data.frame(block = c('1',NA,NA,'2',NA,NA,'3',NA,NA),
subject = c('31','31','31','32','32','32','33','33','33'))
df[df$subject == 1 & is.na(df$block)] = df[df$subject == 31 &!is.na(df$block)]
# define a for loop with from 1 to n 
for (i in 1: length(unique(df$subject))){
subjects
# replace the block with NA in block that is not NA for the same participant    
df[df$subject == i & is.na(df$block)] = df[df$subject == i & !is.na(df$block)]  
}

这就是我想要得到的。 在此处输入图像描述

使用 dplyr 和 zoo 库,我将块列中的 NA 值替换为以前的非 NA 行值:

library(dplyr)
library(zoo)
df2 <- df %>%
do(na.locf(.))

最终结果如下所示:

df2
block subject
1     1      31
2     1      31
3     1      31
4     2      32
5     2      32
6     2      32
7     3      33
8     3      33
9     3      33

最新更新