Potrzebuję użyć grupy według poziomów z ddply lub agregatu, jeśli jest to łatwiejsze. Nie jestem naprawdę pewny, jak to zrobić, ponieważ muszę użyć cumsum jako mojej funkcji agregującej. To co moje dane wygląda następująco:cumsum przy użyciu ddply
level1 level2 hour product
A tea 0 7
A tea 1 2
A tea 2 9
A coffee 17 7
A coffee 18 2
A coffee 20 4
B coffee 0 2
B coffee 1 3
B coffee 2 4
B tea 21 3
B tea 22 1
oczekiwany wynik:
A tea 0 7
A tea 1 9
A tea 2 18
A coffee 17 7
A coffee 18 9
A coffee 20 13
B coffee 0 2
B coffee 1 5
B coffee 2 9
B tea 21 3
B tea 22 4
Próbowałem za pomocą
ddply(dd,c("level1","level2","hour"),summarise,cumsum(product))
ale nie sumują się i myślę, że to dlatego, że kolumny godzinnym jest używany w grupie przez i jest przez to dzielony .. Myślę ... Nie jestem pewien, czy całkowicie rozumiem, jak działa tutaj agregacja. Czy jest jakiś sposób, aby uzyskać wymaganą wydajność za pomocą agregatu lub ddply?
Nie sądzę, chodziło do podsumowania przez równej1 + 2 Poziom + godziny, bo wtedy, Twój agregacji byłby inny niż to, co masz pokazane. – A5C1D2H2I1M1N2O1R2T1