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

Function that creates an additional (dummy) column for each column that contains NA (in R)

我似乎无法解决这个问题:我有一个 R 数据集 (data.frame),其中包含大量包含 NA 的列。我想为包含 NAeach 列创建一个附加列。我希望附加列是一个虚拟列,即 1 if NA0 else。当然,我可以为每一列手动执行操作,但这会很痛苦……但是,到现在为止我可能应该这样做了。我试过 plyr 但到目前为止没有成功。

你可以试试这个

df <- as.data.frame(matrix(sample(c(0,1, NA), 100, replace=TRUE), 10, 10))
is.na(df)*1 # dummy data.frame

您可以使用 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))