【问题标题】:Rolling sum of last 12 rows for every column in a data frame in rr中数据框中每一列的最后12行的滚动总和
【发布时间】:2017-05-18 22:59:12
【问题描述】:

我有一个如下所示的数据框:Data frame

这些列每三个月才有一次数据。对于除第一列之外的所有列,我想要一个新数据框中最后 12 行的运行总和。我已经使用带有代码的 for 循环成功地做到了这一点:

for (j in 2:3537){
 for (i in 10:415){
  EBIT_total[i,j]<-EBIT[i-9,j]+EBIT[i-6,j]+EBIT[i-3,j]+EBIT[i,j]
  Sales_total[i,j]<-Sales[i-9,j]+Sales[i-6,j]+Sales[i-3,j]+Sales[i,j]
}}

但是,由于列的数量,这需要很多时间。

我已经在互联网上搜索了解决方案,并尝试使用 apply 和 rollapply(来自“zoo”库)但没有任何运气。

希望有人能提供帮助,在此先感谢!

最好的问候拉斯穆斯

【问题讨论】:

    标签: r rolling-sum


    【解决方案1】:

    试试这个:

    library(zoo)
    DF <- data.frame(a = 1:25, b = 1:25) # test data
    
    rollapplyr(DF, 10, function(x) sum(x[c(1, 4, 7, 10)]), fill = NA)
    
    # or even shorter
    
    rollapplyr(DF, list(c(-9, -6, -3, 0)), sum, fill = NA)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-08-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-08-31
      • 1970-01-01
      • 2018-08-22
      相关资源
      最近更新 更多