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