1

我有一个看起来像这样的数据框:数据框

这些列每三个月只有一次数据。对于除第一列之外的所有列,我想要一个新数据框中最后 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”库)但没有任何运气。

我希望有人能够提供帮助,并提前感谢!

最好的问候拉斯穆斯

4

1 回答 1

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)
于 2017-05-18T14:37:06.083 回答