【发布时间】:2017-02-13 19:51:01
【问题描述】:
如何根据是否存在以相同前缀开头的其他列中的值来将列中的 NA 替换为全 0?例如,对于 A1 列,我只想将 NA 替换为 0,其中 A2 或 A3 列是 NONBLANK。我的真实数据有数百组列。
我的数据:
ID<-c(1,2,3,4,5,6,7,8)
A1<-c(1,NA,1,NA,1,1,1,NA)
A2<-c(1,NA,NA,1,NA,1,NA,NA)
A3<-c(1,NA,NA,NA,1,NA,NA,NA)
B1<-c(1,1,1,1,1,1,NA,1)
B2<-c(1,1,1,1,NA,1,NA,NA)
B3<-c(1,1,NA,NA,1,NA,NA,NA)
mydata<-cbind.data.frame(ID,A1,A2,A3,B1,B2,B3)
拥有:
通缉:
如果 A2 或 A3 列有 1,则 A1 列中的 0 应替换 NA。如果 A1 或 A3 列中有 1,则 A2 列中的 0 应替换 NA,依此类推,如下所示:
【问题讨论】:
-
部分答案,因为我必须跑去开会,但是您可以使用以下命令索引 A1 和 A2 中的非缺失值: mydata[!is.na(mydata[c('A1',' A2')])