首页 文章

data.table滚动/窗口几何平均值[关闭]

提问于
浏览
-2

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)是关于整体几何平均值,而不是窗口/滚动几何平均值 .

具有手动编码(运行较慢)几何方式的包包括:

不是意思,但它很快:

  • Gmedian,Gmedian,中位而不是平均值,但 Build 得更快 . 使用Rcpp进行计算 .

也许,但不确定:

  • 轮换,意思是.SO3

1 回答

  • 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]
    

相关问题