Summierung nach Gruppen von Zeilen in R

7

Dies ist eine schwierige Frage, die man betiteln sollte. Die Daten sehen so aus:

%Vor%

Ich möchte alle 5 Elemente summieren, da es also 15 gibt, sollte die Länge des zurückgegebenen Vektors 3 sein. (15/3). Zählen Sie zum Beispiel einfach die NAs als 0.

Wie mache ich das?

Ich möchte auch die NA's ignorieren

    
robertevansanders 24.01.2015, 00:51
quelle

5 Antworten

5

Dies ist ideal für ?rowsum , was schnell sein sollte

Daten von RStudent verwenden

%Vor%

Das zweite Argument, group , definiert die Zeilen, auf die die Summe angewendet werden soll. Allgemeiner könnte das Gruppenargument rep(1:nrow(m), each=5, length=nrow(m)) (sub nrow mit length , wenn es über einen Vektor angewendet wird) definiert werden

    
user20650 24.01.2015, 01:22
quelle
6
%Vor%     
DatamineR 24.01.2015 01:01
quelle
6

Sie könnten tapply()

verwenden %Vor%

Eine weniger effiziente Option beinhaltet split() mit vapply()

%Vor%     
Rich Scriven 24.01.2015 01:04
quelle
2

Verwenden von dplyr

%Vor%

Sie erhalten:

%Vor%

Wenn Sie aus irgendeinem Grund NA s durch 0 ersetzen möchten (weil Sie andere Operationen ausführen möchten als sum() , sagen wir mean() ), können Sie Folgendes tun:

%Vor%

Sie erhalten das Ergebnis mit NA s gleich 0 (anstatt NA mit na.rm = TRUE im vorherigen Vorschlag wegzulassen)

%Vor%     
Steven Beaupré 24.01.2015 17:26
quelle
0

Die Funktion sum hat eine Option na.rm.

%Vor%     
Scott C Wilson 24.01.2015 00:52
quelle

Tags und Links