【发布时间】:2017-01-30 00:38:30
【问题描述】:
可能是简单但棘手的问题,尤其是对于较大的数据集。给定两个相同维度的数据框 (df1,df2),如下所示:
head(df1)
a b c
1 0.8569720 0.45839112 NA
2 0.7789126 0.36591578 NA
3 0.6901663 0.88095485 NA
4 0.7705756 0.54775807 NA
5 0.1743111 0.89087819 NA
6 0.5812786 0.04361905 NA
和
head(df2)
a b c
1 0.21210312 0.7670091 NA
2 0.19767464 0.3050934 1
3 0.08982958 0.4453491 2
4 0.75196925 0.6745908 3
5 0.73216793 0.6418483 4
6 0.73640209 0.7448011 5
如何找到if(all(is.na(df1))的所有列,在这种情况下为c,转到df2并将匹配列(c)中的所有值设置为NAs。
期望的输出
head(df3)
a b c
1 0.21210312 0.7670091 NA
2 0.19767464 0.3050934 NA
3 0.08982958 0.4453491 NA
4 0.75196925 0.6745908 NA
5 0.73216793 0.6418483 NA
6 0.73640209 0.7448011 NA
我的实际数据框有多个 140000 列。
【问题讨论】:
-
您可以使用此代码获取“空”列:
which(colSums(is.na(x)) == nrow(x)),此处实现:github.com/sjPlot/sjmisc/blob/master/R/is_empty.R#L94 -
所以,
df2[, empty_cols(df1)] <- NA应该可以工作(暂时无法测试,手机评论)。