首页 > 解决方案 > data.table - 删除 R 中计数不等的所有组

问题描述

我想按 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))

标签: rcountduplicatesdata.tableunique

解决方案


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

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

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

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

推荐阅读