2013-08-23 70 views
24

Với này tập hợp dữ liệu:Sum tất cả các giá trị trong mỗi cột của một data.frame trong R

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

Tôi muốn tổng hợp tất cả các cột vòng loại (Chiều cao và trọng lượng) năng suất

199 425 

Vấn đề là các vòng loại có thể nhiều hơn 2 (tức là nhiều hơn hơn là chỉ Chiều cao và Trọng lượng).

Tôi có thể thực hiện việc này.

# 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)) 

Nhưng quá lâu khi vòng loại tăng. Cách nhỏ gọn để làm điều đó là gì?

Trả lời

48

Bạn có thể sử dụng hàm colSums() để tính tổng của tất cả các giá trị. [,-1] đảm bảo rằng cột đầu tiên có tên của mọi người bị loại trừ.

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

Giả sử có thể có nhiều cột mà không phải là số, hoặc thứ tự cột của bạn chưa được khắc phục, một cách tiếp cận tổng quát hơn sẽ là:

colSums(Filter(is.numeric, people)) 
Các vấn đề liên quan