我似乎无法解决这个问题:我有一个R数据集(data.frame
),其中包含大量包含NA
的列。我想为包含NA
的每个列创建一个额外的列。如果1
和NA
,我希望附加列为0
的虚拟列。当然,我可以手动为每一列做事,但这只会是一种痛苦......但是,到现在为止我应该这样做了。我试过玩plyr
但到目前为止还不成功。
答案 0 :(得分:3)
你可以试试这个
df <- as.data.frame(matrix(sample(c(0,1, NA), 100, replace=TRUE), 10, 10))
is.na(df)*1 # dummy data.frame
答案 1 :(得分:3)
您可以使用Map
将新列与data.frame
的原始列相关联:
do.call(cbind, Map(function(u,v) data.frame(u,v), df, data.frame(is.na(df)+0L)))
# col1.u col1.v col2.u col2.v
#1 <NA> 1 NA 1
#2 a 0 NA 1
#3 b 0 NA 1
#4 <NA> 1 33 0
数据:强>
df = data.frame(col1=c(NA,'a','b',NA), col2=c(NA,NA,NA,33))