为包含NA的每个列创建附加(虚拟)列的函数(在R中)

时间:2015-07-15 07:15:49

标签: r na

我似乎无法解决这个问题:我有一个R数据集(data.frame),其中包含大量包含NA的列。我想为包含NA每个列创建一个额外的列。如果1NA,我希望附加列为0的虚拟列。当然,我可以手动为每一列做事,但这只会是一种痛苦......但是,到现在为止我应该这样做了。我试过玩plyr但到目前为止还不成功。

2 个答案:

答案 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))