2015-03-12 18 views
7

Tôi có đặc bộ dữ liệu sau:hiệu quả tổng hợp trên nhiều cột trong R

a<-as.data.frame(c(2000:2005)) 
a$Col1<-c(1:6) 
a$Col2<-seq(2,12,2) 

colnames(a)<-c("year","Col1","Col2") 

for (i in 1:2){ 
    a[[paste("Var_", i, sep="")]]<-i*a[[paste("Col", i, sep="")]] 
} 

Tôi muốn tổng hợp các cột var1 và var2, mà tôi sử dụng:

a$sum<-a$Var_1 + a$Var_2 

Trên thực tế tôi tập dữ liệu lớn hơn nhiều - tôi muốn tổng hợp từ Var_1 thành Var_n (n có thể tối đa 20). Có phải là một cách hiệu quả hơn để làm điều này hơn:

a$sum<-a$Var_1 + ... + a$Var_n 
+1

Hãy thử áp dụng: a $ sum <- apply (a [, - 1], 1, sum) –

+3

Cảm ơn, hoạt động tốt ở phần sau, trong đó i là chỉ mục cột của Var_1 và j là chỉ mục cột của Var_n ' a $ sum <- apply (a [, c (i: j)], 1, tổng) ' – user2568648

+0

Và tự động hóa quy trình hơn nữa (sử dụng http://stackoverflow.com/questions/9277363/get-the-column- number-in-r-given-the-column-name/9277935 # 9277935): 'a $ sum <- áp dụng (a [, c (match (" Var_1 ", tên (a)): match (" Var_n ", tên (a)))], 1, tổng hợp) ' – user2568648

Trả lời

7

Bạn có thể sử dụng colSums(a[,c("Var1", "Var2")]) hoặc rowSums(a[,c("Var_1", "Var_2")]). Trong trường hợp của bạn, bạn muốn sau này.

Các vấn đề liên quan