【发布时间】:2023-03-17 03:07:01
【问题描述】:
我正在寻找一种方法来优化 data.table 中的聚合,我有几百万个数据,而我目前的实现速度很慢。
可重现的例子:
library(data.table)
df <- data.table(Factor = as.factor(rep(LETTERS[1:3], 3)),
Variable = 1:9)
当前实施:
aux <- df[, .(sumVar = sum(Variable)/sum(df$Variable)), by = .(Factor)]
df[aux, sumVar := sumVar, on = .(Factor = Factor)]
期望的输出:
> df
Factor Variable sumVar
1: A 1 0.2666667
2: B 2 0.3333333
3: C 3 0.4000000
4: A 4 0.2666667
5: B 5 0.3333333
6: C 6 0.4000000
7: A 7 0.2666667
8: B 8 0.3333333
9: C 9 0.4000000
我认为我的问题在merge,但我不知道如何改进它,我对dplyr不熟悉,我还没有找到任何方法可以与data.table一起操作.
感谢任何帮助!
【问题讨论】:
-
这里使用
dplyrdf %>% group_by(Factor) %>% mutate(A=sum(Variable)/sum(df$Variable))
标签: r performance dplyr data.table