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?
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:
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:
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
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. )
Tags und Links r data.table