假设您有一个这样的数据框:
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函数,但我失败了.
有任何想法吗?
谢谢!
您可以使用该embed函数创建适当的滞后,rowSums求和,然后适当滞后(我使用head)。
df$Cum.sums[-(1:3)] <- head(rowSums(embed(df$Nums,2)),-2)
Run Code Online (Sandbox Code Playgroud)