问题:
有没有一种干净,快速运行的方法来使用data.table计算几何平均值?
背景
所以我正在使用它:
my_col_list <- names(mydata)[ my_start:ncol(mydata)]
my_name_list<- paste0(my_col_list, "_", "arithmean")
mydata[, (my_name_list) := unlist(lapply(.SD,
function(x) rollapply(x,
5,
mean,
na.pad = TRUE)),
recursive = F),
.SDcols = my_col_list]
但我想要计算geometric mean。我正在研究大约2000万行和大约1500列,因此首选内置快速内置。
我看到了这些(link)计算几何平均值的方法,但它们是手工编码的,所以它们会变慢。这个(link)是关于整体几何平均值,而不是窗口/滚动几何平均值。
具有手动编码(运行较慢)几何平均值的软件包包括:
不是故意的,但速度很快:
也许,但不确定:
答案 0 :(得分:3)
只需使用自己的代码psych
函数geometric.mean
mydata[, (my_name_list) := unlist(lapply(.SD,
function(x) rollapply(x,
5,
geometric.mean,
na.pad = TRUE)),recursive = F),
.SDcols = my_col_list]