【问题标题】:Subset data.table fulfilling condition子集 data.table 满足条件
【发布时间】:2018-12-18 10:07:27
【问题描述】:

我有一个 data.table,我希望它只包含那些长度大于 length_x 的列的子集。

DT[, lapply(.SD, function(x) sum(!is.na(x)) > length_x)]

还有

DT[, lapply(.SD, function(x) sum(!is.na(x)) > length_x), with = FALSE]

将只返回一个逻辑向量,为每一列分配一个 TRUE 或 FALSE。

【问题讨论】:

    标签: r data.table


    【解决方案1】:

    输出是一个逻辑向量list,每个元素长度为1。我们可以unlist它来创建一个逻辑vector,并用它来对列进行子集化

    i1 <- DT[, unlist(lapply(.SD, function(x) sum(!is.na(x)) > length_x))]
    DT[, i1, with = FALSE]
    

    或者用colSums创建一个逻辑索引

    DT[, DT[, colSums(!is.na(.SD)) > length_x], with = FALSE]
    

    数据

    set.seed(24)
    DT <- as.data.table(matrix(sample(c(NA, 1:3), 10 * 5, 
          replace = TRUE), nrow = 10))
    length_x <- 6
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-03-21
      • 2016-12-04
      • 2018-03-02
      • 1970-01-01
      • 2012-01-22
      • 1970-01-01
      相关资源
      最近更新 更多