Я пытаюсь изучить R, и есть несколько вещей, которые я сделал в течение 10 лет в 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, классу и в течение 4-месячного переходящего окна. Обратите внимание, что не все месяцы присутствуют для каждой комбинации id и класса.
В SAS я обычно делаю это одним из двух способов:
-
RETAIN
плюс a по id и классу. -
PROC SQL
с левым соединением из df как df1 в df как 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)