更高效的汇总/R 中的汇总

问题描述 投票:0回答:1

我有执行大量汇总的代码,需要很长时间才能运行。

例如:

library(dplyr)

df <- data.frame(Letter = letters, Num = c(1 : (26*10) ))

for (x in 1:10000){
  df_sum_Tot = summarise(df, Sum_Num = sum(Num)  )
  df_sum_Letter = summarise(df, Sum_Num = sum(Num) , .by =  Letter )

}

是否有更有效的替代方案来总结我可以用来加快速度?

r dplyr
1个回答
0
投票

如果您正在处理数千个不同的数据集,您可以将它们全部放入一个列表中并使用

lapply
来汇总它们,而不是使用
for
循环。

其他软件包的汇总效率也比

dplyr
高效得多,尤其是对于大型数据集。例如,
data.table
collapse
:

# Assuming datasets is your list of all your data.frames:
# Using data.table
library(data.table)
results <- lapply(datasets, function(df) {
  setDT(df) 
  df_sum_Tot <- df[, .(Sum_Num = sum(Num))]
  df_sum_Letter <- df[, .(Sum_Num = sum(Num)), by = Letter]
  list(Total = df_sum_Tot, ByLetter = df_sum_Letter)
})

# Using collapse:
library(collapse)
results <- lapply(datasets, function(df) {
  df <- as.data.table(df)  
  df_sum_Tot <- collap(df, Sum_Num = fsum(Num))
  df_sum_Letter <- collap(df, Sum_Num = fsum(Num), by = "Letter")
  list(Total = df_sum_Tot, ByLetter = df_sum_Letter)
})
© www.soinside.com 2019 - 2024. All rights reserved.