Groupby 或在 big df 上聚合

Groupby or aggregate on big df

我不明白如何在 R 中对大 df 进行分组。

第 0-12 列是标识符,唯一的,我想保持原样

我试过很多变体

aggregate(cbind(names(preferences[-c(0, 12)])) ~ 
            cbind(names(preferences[c(0, 12)])), data=preferences, FUN=sum)

我得到

Error in model.frame.default(formula = cbind(names(preferences[-c(0, 12)])) ~  : 
  variable lengths differ (found for 'cbind(names(preferences[c(0, 12)]))')

a  b     c   d   e
1  f(1)  11  2   15
1  f(1)  12  2   15
2  f(2)  13  4   3
2  f(2)  14  6   4
3  f(3)  15  5   6

a  b     c   d   e
1  f(1)  23  4   30
2  f(2)  27  10  7
3  f(3)  15  5   6

Python相当于df[11:624].groupby(by=col11)

df 是 48GB,所以速度很重要(python 由于内存不足 (250GB) 而崩溃)

收到 I went and looked at some benchmarks 之后,这真是太快了!!!!

library(data.table)

setDT(df)

x <- names(df)[13:ncol(df)]

y <- names(df)[1:12]

df_2 <- df[, lapply(.SD, \(i) sum(i)), .SDcols=x, by=y]

不过要注意 R 与 Python 中的索引。 R 从 1 开始计数(而 Python 的索引为零)