Summierung über Zeilen einer data.table für bestimmte Spalten

8

Ich habe eine große Datentabelle (aus dem Paket data.table ) ) mit mehr als 60 Säulen (die ersten drei entsprechen den Faktoren und die übrigen den Antwortvariablen, in diesem Fall den verschiedenen Arten) und mehreren Reihen, die den verschiedenen Behandlungsstufen und den Artenhäufigkeiten entsprechen. Eine sehr kleine Version sieht so aus:

%Vor%

Ich möchte zuerst die mittleren Häufigkeiten jeder Art über die Zeit für jede Zone x Quadrat Kombination berechnen und das ist in Ordnung:

%Vor%

Dann möchte ich die Spaltensummen für die 'species' Spalten berechnen, im Beispiel von Sp1 zu Sp3. Ich habe den folgenden Code ohne Erfolg ausprobiert:

%Vor%

Ich bekomme die Fehlermeldung:

%Vor%

Wie kann ich Zeilensummen für bestimmte Spalten eines data.table berechnen?

    
Claire G 18.02.2014, 15:07
quelle

2 Antworten

13

Geben Sie tatsächlich Abundance[, c(4:6)] ein, um zu sehen, was das Ergebnis ist, und es wird Ihnen klar sein, warum das nicht funktioniert hat. Es kann mit with = FALSE korrigiert werden, aber die bessere Syntax (mit weniger Kopieren) ist:

%Vor%

Auch habe ich nicht überprüft, aber ich habe den Verdacht, dass dies schneller sein wird, da es nicht in matrix konvertiert wird, wie rowSums tut:

%Vor%     
eddi 18.02.2014, 16:06
quelle
3

Ein alternativer Ansatz ( data.table ) wäre, Ihre Daten in einer langen Form zu speichern. Version 1.8.11 von data.table hat schnelle melt und dcast Methoden

%Vor%

Wenn Sie im langen Format arbeiten, ändert sich das Denken ein wenig, aber es kann effizienter sein (weniger internes Kopieren) und Sie verweisen auf ein einzelnes, nicht mehrere Elemente in jeder "by" -Gruppe. )

    
mnel 18.02.2014 22:04
quelle

Tags und Links