Есть две задачи: создать столбец в фрейме данных, представляющий каждый год, затем разделить данные, применить совокупность и рекомбинировать.У R есть много способов выполнить обе части.
Вероятно, наиболее читаемый способ донг первой задачи - это year
из пакета lubridate
.
library(lubridate)
df$year <- year(df$date)
Обратите внимание, что R имеетмного форматов даты, поэтому стоит проверить, используете ли вы в настоящее время POSIXct
или Date
или chron
или zoo
или xts
или один из других форматов.
Выбор Себаили ddply
для второго задания я бы порекомендовал.Для полноты вы также можете использовать tapply
или aggregate
.
with(df, tapply(giftamt, year, cumsum))
aggregate(giftamt ~ year, df, cumsum)
С новой информацией, которую вы хотите изменить годами 1 июля, обновите столбец года до
df$year <- with(df, year(date) + (month(date) >= 7))