可能很简单但棘手的问题,特别是对于较大的数据集。给定两个dataframes(df1
,df2
)相同尺寸如下的:在两个数据框中有条件地替换NA R
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
我的实际dataframes有超过140000
列。
你可以使用此代码“空”列: 'colSums(is.na(x))== nrow(x))',这在这里实现:https://github.com/sjPlot/sjmisc/blob/master/R/is_empty.R#L94 – Daniel
因此,'df2 [,empty_cols(df1)] < - NA'应该工作(现在不能测试,从手机发表评论)。 – Daniel