我想学习R语言,但有一些在SAS中做了十多年的事情,我还无法找到在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中,我通常会采用以下两种方式之一: 1.使用
RETAIN
和by id & class。
2.使用PROC SQL
,将df作为df1左连接到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)
d
是什么?你的设置代码中没有包含它的定义。 - Matthew Plourdezoo
和data.table
来实现“分割-应用-合并”策略。 - Justin