Wie summiere ich die Spaltenwerte von data.frame?


76

Ich habe einen Datenrahmen mit mehreren Spalten; einige numerische und einige Zeichen. Wie berechnet man die Summe einer bestimmten Spalte? Ich habe für diese gegoogelt und ich sehe zahlreiche Funktionen ( sum, cumsum, rowsum, rowSums, colSums, aggregate, apply) , aber ich kann nicht Sinn des Ganzen machen.

Angenommen, ich habe einen Datenrahmen peoplemit den folgenden Spalten

people <- read(
  text = 
    "Name Height Weight
    Mary 65     110
    John 70     200
    Jane 64     115", 
  header = TRUE
)
…

Wie bekomme ich die Summe aller Gewichte?

Antworten:


105

Sie können einfach verwenden sum(people$Weight).

sumfasst einen Vektor zusammen und people$Weightruft die Gewichtungsspalte aus Ihrem Datenrahmen ab.

Hinweis - Sie können mit eingebauter Hilfe bekommen ?sum, ?colSumsusw. (übrigens, colSumswerden Sie die Summe für jede Spalte).


2
wenn ich das mache bekomme ich : [1] NA. Ich habe mir die Daten für diese Spalte angesehen und die allerletzte Zeile hat NA. Ist das der Grund?
— Benutzer

10
Ja, deshalb. Sie können die NAs ignorieren, wenn Sie möchten über sum(people$Weight,na.rm=TRUE)(Sie können über diese Option in lesen ?sum).
— mathematisch.Kaffee

3

Um Werte zu summieren, müssen data.frameSie sie zuerst als Vektor extrahieren.

Es gibt verschiedene Möglichkeiten:

# $ operatior
x <- people$Weight
x
# [1] 65 70 64

Oder mit [, ]Matrix ähnlich:

x <- people[, 'Weight']
x
# [1] 65 70 64

Sobald Sie den Vektor haben, können Sie eine beliebige Vektor-Skalar-Funktion verwenden, um das Ergebnis zu aggregieren:

sum(people[, 'Weight'])
# [1] 199

Wenn Ihre Daten NA-Werte enthalten, sollten Sie folgende na.rmParameter angeben :

sum(people[, 'Weight'], na.rm = TRUE)

1

Wenn Sie 'NA'-Werte in der Spalte haben, dann

sum(as.numeric(JuneData1$Account.Balance), na.rm = TRUE)

1

nach dem colsum bestellen:

order(colSums(people),decreasing=TRUE)

wenn mehr als 20+ Spalten

order(colSums(people[,c(5:25)],decreasing=TRUE) ##in case of keeping the first 4 columns remaining.
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.