У меня есть фрейм данных
с кучей данных о пожертвованиях. Я беру данные и размещаю их по времени от самых старых до самых последних подарков. Затем я добавляю столбец, содержащий совокупную сумму подарков с течением времени. Данные содержат данные за несколько лет, и я искал хороший способ сбросить cumsum
на 0 в начале каждого года (год начинается и заканчивается 1 июля для финансовых целей).
Вот как это сейчас:
id date giftamt cumsum()
005 01-05-2001 20.00 20.00
007 06-05-2001 25.00 45.00
009 12-05-2001 20.00 65.00
012 02-05-2002 30.00 95.00
015 08-05-2002 50.00 145.00
025 12-05-2002 25.00 170.00
... ... ... ...
вот как я хотел бы, чтобы это выглядело:
id date giftamt cumsum()
005 01-05-2001 20.00 20.00
007 06-05-2001 25.00 45.00
009 12-05-2001 20.00 20.00
012 02-05-2002 30.00 50.00
015 08-05-2002 50.00 50.00
025 12-05-2002 25.00 75.00
... ... ... ...
Есть предложения?
ОБНОВЛЕНИЕ:
Вот код, который наконец-то сработал благодаря Себу:
#tweak for changing the calendar year to fiscal year
df$year <- as.numeric(format(as.Date(df$giftdate), format="%Y"))
df$month <- as.numeric(format(as.Date(df$giftdate), format="%m"))
df$year <- ifelse(df$month<=6, df$year, df$year+1)
#cum-summing :)
library(plyr)
finalDf <- ddply(df, .(year), summarize, cumsum(as.numeric(as.character(giftamt))))