data.table滚动/窗口几何平均值

时间:2017-07-20 16:03:02

标签: r statistics data.table

问题:
有没有一种干净,快速运行的方法来使用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)是关于整体几何平均值,而不是窗口/滚动几何平均值。

具有手动编码(运行较慢)几何平均值的软件包包括:

不是故意的,但速度很快:

  • Gmedian,Gmedian,中位数而非平均数,但建立得更快。使用Rcpp进行计算。

也许,但不确定:

  • 旋转,意思是.SO3

1 个答案:

答案 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]