【问题标题】:Subset data.table by condition but retain all rows belonging to group按条件子集 data.table 但保留属于组的所有行
【发布时间】:2019-07-13 08:05:42
【问题描述】:

我的数据如下所示:

require("data.table")
dt1 <- data.table(
  code=c("A001", "A001","A001","A002","A002","A002","A002","A003","A003"),
  value=c(40,38,55,10,12,16,18,77,87))

我想对其进行子集化,以便保留包含大于或小于给定数字的值的任何组 (code)。例如,如果我想要任何包含超过 50 的值的组,那么结果将如下所示:

dt2 <- data.table(
  code=c("A001", "A001","A001","A003","A003"),
  value=c(40,38,55,77,87))

【问题讨论】:

    标签: r data.table subset


    【解决方案1】:

    在按“代码”分组后,我们使用any 创建条件以对行进行子集化

    dt1[, if(any(value > 50)) .SD,  code]
    

    或者没有if 条件

    dt1[,  .SD[any(value > 50)],  code]
    

    或者根据它获取行索引 (.I) 和子集

    dt1[dt1[,  .I[any(value > 50)],  code]$V1]
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-11-27
      • 2014-03-24
      • 1970-01-01
      • 1970-01-01
      • 2017-08-23
      相关资源
      最近更新 更多