2013-08-23 22 views
24

diesen Datensatz Gegeben:Summe aller Werte in jeder Spalte eines data.frame in R

Name Height Weight 
1 Mary  65 110 
2 John  70 200 
3 Jane  64 115 

Ich mag jede Qualifier Spalt (Größe und Gewicht) summieren, wodurch man

199 425 

Das Problem ist, dass die Qualifier mehr als nur 2 (dh mehr als nur Höhe und Gewicht) sein können.

Ich kann das tun.

# Create the dataframe people 
    Name <- c("Mary", "John", "Jane") 
    Height <- c(65,70,64) 
    Weight <- c(110,200,115) 
    people <- data.frame(Name, Height, Weight) 

    res <- c(sum(people$Height),sum(people$Weight)) 

Aber es wird zu lange, wenn der Qualifier steigt. Was ist die kompakte Art, es zu tun?

Antwort

48

Sie können die Funktion colSums() verwenden, um die Summe aller Werte zu berechnen. [,-1] stellt sicher, dass die erste Spalte mit Namen von Personen ausgeschlossen ist.

colSums(people[,-1]) 
Height Weight 
    199 425 

Unter der Annahme, es könnte mehr Spalten, die nicht numerisch sind, oder dass Ihre Spaltenreihenfolge nicht festgelegt ist, ein allgemeiner Ansatz wäre:

colSums(Filter(is.numeric, people)) 
2
mapply(sum,people[,-1]) 

Height Weight 
    199 425 
Verwandte Themen