【问题标题】:Identify a list of (or remove) variables in a data frame that are completely empty (NAs)识别数据框中完全为空 (NA) 的变量列表(或删除)
【发布时间】:2016-03-09 18:47:50
【问题描述】:

我有一个非常大的数据框,其中包含许多完全为空 (NA) 的变量。我的目标是删除这些变量。我想排除空变量,而不是缺失值。这似乎是一个非常基本的问题,但我无法弄清楚。

#sample data
A<-rbinom(100,1,1/2)
B<-rbinom(100,1,1/2)
C<-NA
D<-NA
df<-as.data.frame(cbind((1:100),A,B,C,D))
df<-as.data.frame(lapply(df, function(x) 
               "is.na<-"(x, sample(seq(x), floor(length(x) * runif(1, 0, .2))))))
Hmisc::describe(df)

我可以使用 Hmisc::describe() 列出这些变量,但我不知道如何提取或使用这个列表。

【问题讨论】:

  • 拒绝解释。以前肯定有人问过这个问题。
  • 有人会这么认为,但我找不到。
  • 我不认为在这里使用这个例子会有那么困难,即使它指的是行而不是列:stackoverflow.com/questions/25599139/… 我在[r] identify columns all NA 上的搜索获得了 36 次点击跨度>

标签: r subset na


【解决方案1】:

试试这个:

df[,!sapply(df,function(x) all(is.na(x)))]

或者,为了更加安全:

df[,!sapply(df,function(x) all(is.na(x))),drop = FALSE]

【讨论】:

  • 太棒了!这行得通。 12 分钟冷静期过后,我会立即接受它作为答案。 :)
【解决方案2】:

试试:

apply(df,2,function(x) sum(!is.na(x)))

所有只有 NA 的变量总和为 0

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-06-13
    • 1970-01-01
    • 2021-05-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-09-22
    • 2021-08-19
    相关资源
    最近更新 更多