计算某些值的累积总和

Hag*_*ner 5 r

假设您有一个这样的数据框:

df <- data.frame(Nums = c(1,2,3,4,5,6,7,8,9,10), Cum.sums = NA)
> df
   Nums Cum.sums
1     1       NA
2     2       NA
3     3       NA
4     4       NA
5     5       NA
6     6       NA
7     7       NA
8     8       NA
9     9       NA
10   10       NA
Run Code Online (Sandbox Code Playgroud)

你想要一个像这样的输出:

   Nums Cum.sums
1     1        0
2     2        0
3     3        0
4     4        3
5     5        5
6     6        7
7     7        9
8     8       11
9     9       13
10   10       15
Run Code Online (Sandbox Code Playgroud)

Cum.sum列的4.元素是1和2的总和,Column Cum.sum的5.元素是2和3的总和,依此类推......这意味着,我想构建第一行的累积和,并将其保存在第二行.但是,我不希望正常的累积和,而是当前行上方的元素2行加上当前行上方3行的元素之和.

我已经尝试过使用sum和cumsum函数,但我失败了.

有任何想法吗?

谢谢!

Jos*_*ich 3

您可以使用该embed函数创建适当的滞后,rowSums求和,然后适当滞后(我使用head)。

df$Cum.sums[-(1:3)] <- head(rowSums(embed(df$Nums,2)),-2)
Run Code Online (Sandbox Code Playgroud)