我有一个数据框(df),其中包含NA和数值。 df的样本如下:
col1 col2
8145 NA
8078 8156
NA NA
8223 NA
8112 8003
即
df<-data.frame(col1=c(8145,8078,NA,8223,8112), col2=c(NA,8156,NA,NA,8003))
所需的输出是:
col1 col2 col3
8145 NA 8145
8078 8156 8156
NA NA NA
8223 NA 8223
8112 8003 8003
即,
我是R的新人。我知道这是一个非常简单的问题,但我无法处理它。我会很高兴得到任何帮助。非常感谢。
答案 0 :(得分:3)
如果条件是根据“col2”中的NA
值替换元素
indx <- is.na(df$col2)
df$col3 <- ifelse(indx, df$col1, df$col2)
df
# col1 col2 col3
#1 8145 NA 8145
#2 8078 8156 8156
#3 NA NA NA
#4 8223 NA 8223
#5 8112 8003 8003
或者
df$col3 <- df$col2
df$col3[indx] <- df$col1[indx]
或者您可以使用行/列索引
df$col3 <- df[cbind(seq_len(nrow(df)), (!is.na(df$col2))+1)]