Zusammenfassung mehrere Spalten mit Daten.Tabelle
Ich versuche, die Daten verwenden.Tabelle zur Beschleunigung der Verarbeitung großer Datenmengen.Rahmen (300k x 60) aus mehreren kleineren zusammengeführten Daten.frames. Ich bin neue zu Daten.Tabelle. Der code so weit ist wie folgt
library(data.table)
a = data.table(index=1:5,a=rnorm(5,10),b=rnorm(5,10),z=rnorm(5,10))
b = data.table(index=6:10,a=rnorm(5,10),b=rnorm(5,10),c=rnorm(5,10),d=rnorm(5,10))
dt = merge(a,b,by=intersect(names(a),names(b)),all=T)
dt$category = sample(letters[1:3],10,replace=T)
und ich fragte mich, ob es einen effizienteren Weg, als die folgende zusammenfassen der Daten.
summ = dt[i=T,j=list(a=sum(a,na.rm=T),b=sum(b,na.rm=T),c=sum(c,na.rm=T),
d=sum(d,na.rm=T),z=sum(z,na.rm=T)),by=category]
Ich nicht wirklich wollen, geben Sie alle 50 Spalte Berechnungen von hand und eine eval(paste(...))
scheint irgendwie klobig.
Ich hatte einen Blick auf das Beispiel unten, aber es scheint ein bisschen kompliziert für meine Bedürfnisse. Dank
wie zum zusammenfassen von Daten.Tabelle über mehrere Spalten
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie eine einfache
lapply
- Anweisung mit.SD
Wenn Sie nur wollen, um zusammenzufassen, die in bestimmten Spalten, die Sie hinzufügen können, die
.SDcols
argumentDies ist natürlich nicht beschränkt auf
sum
und Sie können jede Funktion mitlapply
einschließlich anonyme Funktionen. (ie, es ist eine regelmäßigelapply
- Anweisung).Schließlich gibt es keine Notwendigkeit zu verwenden
i=T
undj= <..>
. Ich persönlich denke, dass macht den code weniger lesbar, aber es ist eben ein Stil der Präferenz.BEARBEITEN: Dokumentation
Finden Sie in der Dokumentation zu
.SD
und einige andere spezielle Variablen unter demHilfe
?"[.data.table"
(im Abschnitt "Argumente", und suchen Sie unter der info fürby
).Haben auch einen Blick auf die Daten.Tabelle FAQ 2.1
http://datatable.r-forge.r-project.org/datatable-faq.pdf
DT[, .(agra = sum(a), agrb = mean(b)), by=category]