我使用data.table
根据变量的频率对data.table的行进行子集化(仅当给定列变量的值超过阈值时才保留行)。
以下代码有效。我喜欢它是如何动态计算的,没有中间任务混乱命名空间,但包括dt
在另一个dt
内部似乎是un-data.table-like?我想知道是否有更有效的方法来改善优雅和/或性能。
可能是函数(.N
,table
,length
或其他)在J参数中的方法,基于这些值的行子集在I参数中单个data.table调用?
dt <- data.table(mtcars)
print(table(dt[,cyl]))
# 4 6 8
# 11 7 14
只保留cyl
的任何值出现超过10次的行(在这种情况下为4和8个汽缸)
library('data.table')
dt <- data.table(mtcars)
dt[cyl %in% dt[,.N, by=cyl][N>10, cyl],]