Question:
是否有一种干净,快速运行的方法来使用data.table计算几何平均值?
Background:
所以我使用这个:
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)是关于整体几何平均值,而不是窗口/滚动几何平均值 .
具有手动编码(运行较慢)几何方式的包包括:
-
psych,geometric.mean,手工编码
-
PerformanceAnalytics,mean.geometric,手工编码
-
pracma,geomean,手工编码
-
FinCal,geometric.mean,一种新颖的手工编码版本(prod vs. mean)
-
fdaMixed,dataTrans,手动编码
-
evolqg,MeanMatrix,手工编码,在协方差矩阵上运行,使用chol
不是意思,但它很快:
- Gmedian,Gmedian,中位而不是平均值,但 Build 得更快 . 使用Rcpp进行计算 .
也许,但不确定:
- 轮换,意思是.SO3
1 回答
只需使用自己的代码包
psych
函数geometric.mean