我正在尝试学习 R,并且我在 SAS 中做了 10 多年的一些事情,我无法完全弄清楚在 R 中做的最佳方法。拿这些数据:
id class t count desired
-- ----- ---------- ----- -------
1 A 2010-01-15 1 1
1 A 2010-02-15 2 3
1 B 2010-04-15 3 3
1 B 2010-09-15 4 4
2 A 2010-01-15 5 5
2 B 2010-06-15 6 6
2 B 2010-08-15 7 13
2 B 2010-09-15 8 21
我想通过 id、class 和 4 个月的滚动窗口将所需的列计算为滚动总和。请注意,并非 id 和 class 的每个组合都存在所有月份。
在 SAS 中,我通常会以以下两种方式之一执行此操作:
RETAIN
加上一个按 id 和类。PROC SQL
在适当的窗口中,从 df as df1 到 df as df2 在 id、class 和 df1.d-df2.d 上进行左连接
解决此类问题的最佳 R 方法是什么?
t <- as.Date(c("2010-01-15","2010-02-15","2010-04-15","2010-09-15",
"2010-01-15","2010-06-15","2010-08-15","2010-09-15"))
class <- c("A","A","B","B","A","B","B","B")
id <- c(1,1,1,1,2,2,2,2)
count <- seq(1,8,length.out=8)
desired <- c(1,3,3,4,5,6,13,21)
df <- data.frame(id,class,t,count,desired)