[英]R - Rolling sum of two columns in data.table
我有一個 data.table 如下 -
dt = data.table(
date = seq(as.Date("2015-12-01"), as.Date("2015-12-10"), by="days"),
v1 = c(seq(1, 9), 20),
v2 = c(5, rep(NA, 9))
)
dt
date v1 v2
1: 2015-12-01 1 5
2: 2015-12-02 2 NA
3: 2015-12-03 3 NA
4: 2015-12-04 4 NA
5: 2015-12-05 5 NA
6: 2015-12-06 6 NA
7: 2015-12-07 7 NA
8: 2015-12-08 8 NA
9: 2015-12-09 9 NA
10: 2015-12-10 20 NA
問題 1:我想將 v1 的當前行值與 v2 的前一行值相加,因此 output 如下所示。
date v1 v2
1: 2015-12-01 1 5
2: 2015-12-02 2 7
3: 2015-12-03 3 10
4: 2015-12-04 4 14
5: 2015-12-05 5 19
6: 2015-12-06 6 25
7: 2015-12-07 7 32
8: 2015-12-08 8 40
9: 2015-12-09 9 49
10: 2015-12-10 20 69
我曾嘗試使用 rollapplyr function 來實現這一點,但失敗了。
問題 2:而不是添加(如問題 1),我想滾動應用 function qma 到 v1 的當前行值,前一行值為 v2 qma <- function(x, y){(x+y+7)/2}
我確信必須有一種簡單的方法可以使用 data.table 在一行中執行此操作。
謝謝
您可以將first
v2
值添加到v1
的累積總和中。
library(data.table)
dt[, v2:= first(v2) + c(0, cumsum(v1[-1]))]
dt
# date v1 v2
# 1: 2015-12-01 1 5
# 2: 2015-12-02 2 7
# 3: 2015-12-03 3 10
# 4: 2015-12-04 4 14
# 5: 2015-12-05 5 19
# 6: 2015-12-06 6 25
# 7: 2015-12-07 7 32
# 8: 2015-12-08 8 40
# 9: 2015-12-09 9 49
#10: 2015-12-10 10 59
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.