Ich bin auf der Suche nach Mustern für die Manipulation data.table
Objekte, deren Struktur ähnelt der von Datenrahmen mit melt
aus dem reshape2
Paket erstellt. Ich beschäftige mich mit Datentabellen mit Millionen von Zeilen. Leistung ist entscheidend. Die verallgemeinerte Form der Frage ist, ob es eine Möglichkeit gibt, die Gruppierung basierend auf einer Teilmenge von Werten in einer Spalte durchzuführen und das Ergebnis der Gruppierungsoperation eine oder mehrere neue Spalten zu erzeugen.Schnell geschmolzen data.table Operationen
könnte eine spezifische Form der Frage sein, wie data.table
zu verwenden, um das Äquivalent zu erreichen, was dcast
tut in den folgenden:
input <- data.table(
id=c(1, 1, 1, 2, 2, 2, 3, 3, 3, 3),
variable=c('x', 'y', 'y', 'x', 'y', 'y', 'x', 'x', 'y', 'other'),
value=c(1, 2, 3, 4, 5, 6, 7, 8, 9, 10))
dcast(input,
id ~ variable, sum,
subset=.(variable %in% c('x', 'y')))
dessen Ausgang
id x y
1 1 1 5
2 2 4 11
3 3 15 9
ich bin verwirrt , sorry - die Funktion dcast() funktioniert ohne die as.data.frame() - Bedingung. Versuchen Sie, dies zu erreichen, ohne das plyr-Paket zu verwenden? –
@AnthonyDamico Ja, ich möchte das ohne 'dcast' machen, was in' reshape2' steht. Ich habe das as.data.frame() entfernt - danke, dass du das herausgebracht hast. – Sim