【问题标题】:data.table - removing all groups with unequal count in R [duplicate]data.table - 删除 R 中计数不等的所有组 [重复]
【发布时间】:2020-09-01 05:06:50
【问题描述】:

我想按 ID 对我的 data.table 进行分组,并删除所有 count 确实多年来具有相同值的组。

也许如果 ID 和计数组合不是唯一的,则删除所有具有该 ID 的行?

我正在寻找适合大型data.table的解决方案

数据:

# example data
ID <- c(rep("A", 5), rep("B", 6), rep("C", 2), rep("D", 3), rep("E", 4))
count <- c(rep(3, 5), rep(4, 6), rep(1, 2), c(1,3,3), rep(1, 4))
year <- as.numeric(c(rep(c(2012, 2013, 2014, 2015), 4), 2012, 2013, 2015, 2016))
mydata <- cbind(ID, year, count)
mydata <- as.data.table(mydata)
mydata <- setorder(unique(mydata))

【问题讨论】:

    标签: r count duplicates data.table unique


    【解决方案1】:

    不确定这是最优雅的解决方案,也许有人有更好的解决方案。同时:

    mydata[, k := length(unique(count)), by=ID][k==1][,k:=NULL]
    

    编辑: 从上面的链接复制,正确的解决方案:

    mydata[ , if(uniqueN(count) == 1) .SD, by = ID]
    

    【讨论】:

    • 嗯,比我想出的要好
    【解决方案2】:

    我实际上找到了我的问题的答案:

     q <- which(duplicated(mydata[,c('ID','year')]))
      if(length(k) > 0){
        prob <- mydata[k, ID]
        mydata <- mydata[!ID %in% prob]
      }
    

    【讨论】:

      猜你喜欢
      • 2016-01-20
      • 1970-01-01
      • 2015-05-06
      • 1970-01-01
      • 1970-01-01
      • 2019-08-10
      • 1970-01-01
      • 2016-04-22
      • 2020-05-08
      相关资源
      最近更新 更多