且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

快速滚动平均值+总结

更新时间:2022-12-20 07:48:28

内存管理(即分配和复制)正在用您的方法杀死您。

Memory management, i.e. allocation and copies, is killing you with your approach.

这里是data.table方法,通过引用进行分配:

Here is a data.table approach, which assigns by reference:

library(data.table)
setDT(df)
alloc.col(df, 200) #allocate sufficient columns

#assign rolling means in a loop
for (i in seq_along(ww)) 
  set(df, j = paste0("D", i),  value = roll_mean(df[["rawdata"]], 
                                        ww[i], na.rm=TRUE, fill=NA))

dfsumm <- df[, lapply(.SD, max, na.rm = TRUE), by = year] #aggregate