【问题标题】:What is the most efficient way to remove empty columns in a datatable in R在 R 中删除数据表中的空列的最有效方法是什么
【发布时间】:2020-11-09 22:09:29
【问题描述】:

我有一些文件导入问题,在末尾创建了一个空列,例如:

library(data.table)
library(tidyverse)
MWE <- data.table(var1=c(1,2),var2=c(3,4),var3=c(NA,NA))

现在我可以轻松删除它,因为我知道空列是最后一列:

MWE2 <- MWE[,c(length(MWE)):=NULL]

但我想知道如果我只是想删除一个随机的空列而不知道它的编号该怎么办。在这里和数据表页面上的快速搜索给了我很多关于如何的例子:

  • 删除数据表中的空行,通过na.omit
  • 删除数据框中的空列,例如here

但我没有找到删除数据表中空列的解决方案。有哪些选项,哪个最快?

【问题讨论】:

标签: r datatable null data-manipulation


【解决方案1】:

我们可以检查列中的all 值是否为NA,获取列名并将其分配给NULL

nm1 <- MWE[, names(which(sapply(.SD, function(x) all(is.na(x)))))] 
# or
# nm1 <- MWE[, names(which(!colSums(!is.na(.SD))))]
MWE[, (nm1) := NULL]

Filter

MWE[, Filter(function(x) any(!is.na(x)), .SD)]

或使用select

library(dplyr)
MWE %>%
     select(where(~ any(!is.na(.))))

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-06
    相关资源
    最近更新 更多