【发布时间】:2021-09-22 13:17:43
【问题描述】:
我有一个包含多个(最多 30 个)整数列的 R data.table,并希望找到它们的值的最频繁组合,包括小计。
此代码有效:
library(data.table)
set.seed(1107)
dt<-data.table(col1=sample(1:10,1000,TRUE),col2=sample(1:20,1000,TRUE),col3=sample(1:5,1000,TRUE),col4=sample(1:15,1000,TRUE),col5=sample(1:33,1000,TRUE))
group_vars<-c('col1','col2','col3','col4','col5')
dt_cube<-cube(dt,.(N=.N),by=group_vars)
dt_cube[order(-1*N)][1:5,]
并提供如下输出:
col1 col2 col3 col4 col5 N
1: NA NA NA NA NA 1000
2: NA NA 3 NA NA 210
3: NA NA 1 NA NA 209
4: NA NA 5 NA NA 198
5: NA NA 2 NA NA 197
问题是真实数据非常大,无法计算整个立方体。我对前 100 个最常见的组合(包括小计)感兴趣。有什么方法可以在不产生整个立方体的情况下获得它?
【问题讨论】:
-
您多次提到 "包括小计",但您的代码没有计算总和,而且(对我而言)您的意思并不明显。请您再解释一下好吗?
-
对不起,我的意思是立方体产生的小计 - 例如输出中的第一行是总计(col1 的所有值和 col2 的所有值 ...),第二行是小计,col3 中有 3,其余列中的任何值等等。
-
你能在 cube() 之前生成一个包含前 100 个结果的表吗?比如 dt_top100
标签: r data.table