您好我正在根据优先级聚合两列中的值并创建最终的第三列。如果第1列中的值缺失或为NA,那么我将进入第2列。
df=data.frame(internal=c(1,5,"",6,"NA"),external=c("",6,8,9,10))
df
internal external
1 1
2 5 6
3 8
4 6 9
5 NA 10
df$final <- df$internal
df$final <- ifelse((df$final=="" | df$final=="NA"),df$external,df$final)
df
internal external final
1 1 2
2 5 6 3
3 8 4
4 6 9 4
5 NA 10 2
当外部为8和2时,如何将第3行和第5行的最终值设为4和2.我不知道错误但是这些值不会产生任何问题对我有意义。
答案 0 :(得分:2)
出现问题是因为R将您的值转换为因子。
您的代码可以正常使用
df=data.frame(internal=c(1,5,"",6,"NA"),external=c("",6,8,9,10),stringsAsFactors = FALSE)
PS:这种对因素的可怕转换应该属于R Inferno,http://www.burns-stat.com/pages/Tutor/R_inferno.pdf