Я пытаюсь обобщить набор данных по нескольким различным факторам. Ниже приведен пример моих данных:Подведение данных по дате и группе
household<-c("household1","household1","household1","household2","household2","household2","household3","household3","household3")
date<-c(sample(seq(as.Date('1999/01/01'), as.Date('2000/01/01'), by="day"), 9))
value<-c(1:9)
type<-c("income","water","energy","income","water","energy","income","water","energy")
df<-data.frame(household,date,value,type)
household date value type
1 household1 1999-05-10 100 income
2 household1 1999-05-25 200 water
3 household1 1999-10-12 300 energy
4 household2 1999-02-02 400 income
5 household2 1999-08-20 500 water
6 household2 1999-02-19 600 energy
7 household3 1999-07-01 700 income
8 household3 1999-10-13 800 water
9 household3 1999-01-01 900 energy
Я хочу подвести итоги по месяцам. В идеале результирующий набор данных будет иметь 12 рядов на одно домашнее хозяйство (по одному на каждый месяц) и столбец для каждой категории расходов (вода, энергия, доход), который является суммой общего количества этого месяца.
Я попытался начать с добавления столбца с короткой датой, а затем я собирался фильтровать для каждого типа и создавать отдельный фрейм данных для суммированных данных для типа транзакции. Затем я собирался объединить эти фреймы данных вместе, чтобы получить суммарное значение df. Я попытался обобщить его, используя ddply, но он слишком много агрегировал, и я не могу сохранить информацию об уровне домохозяйства.
ddply(df,.(shortdate),summarize,mean_value=mean(value))
shortdate mean_value
1 14/07 15.88235
2 14/09 5.00000
3 14/10 5.00000
4 14/11 21.81818
5 14/12 20.00000
6 15/01 10.00000
7 15/02 12.50000
8 15/04 5.00000
Любая помощь будет очень признательна!
Да, я был просто ленив и не набирал полный df в примере –
Да, в идеале у меня было бы 12 рядов на чч (если вы не можете порекомендовать лучший способ). Это соответствует другому df, который у меня есть из другого источника. –