Ich habe einen Datensatz mit 5 Spalten:
store_id year event item units
123 2015 sale_2 abc 2
234 2015 sale_3 def 1
345 2015 sale_2 xyz 5
Ich versuche , das zu drehen , aus items
durch store_id, year, and event
die zu bekommen sum
. Zum Beispiel
store_id year event abc def xyz
123 2015 sale_2 2 0 0
234 2015 sale_3 0 1 0
345 2015 sale_2 0 0 5
Ich habe Probleme, die beste Methode herauszufinden. Normalerweise würde ich dazu dummyVars in caret verwenden, aber ich brauche Summen anstelle von flag. Ich habe tapply angeschaut, aber es kann nicht mehr als 2 Gruppierungsvariablen verarbeiten.
Irgendwelche anderen Vorschläge?
library(reshape2)
dcast(df, store_id + year + event ~ item, fun.aggregate = sum, value.var='units')
# store_id year event abc def xyz
# 1: 123 2015 sale_2 2 0 0
# 2: 234 2015 sale_3 0 1 0
# 3: 345 2015 sale_2 0 0 5
Bei großen Datenmengen berücksichtigen
# uses dcast.data.table, much faster
library(data.table)
setDT(df)
dcast(df, store_id + year + event ~ item, fun.aggregate = sum, value.var='units')
Dieser Artikel stammt aus dem Internet. Bitte geben Sie beim Nachdruck die Quelle an.
Bei Verstößen wenden Sie sich bitte [email protected] Löschen.
Lass mich ein paar Worte sagen