2015-03-12 11 views
7

Mam następujący skróconego zestawu danych:Skutecznie podsumować w wielu kolumn w 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="")]] 
} 

chciałbym podsumować kolumny zm1 i VAR2, których używam:

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

W rzeczywistości mój zbiór danych jest znacznie większy - chciałbym sumować od Var_1 do Var_n (n może być do 20). Nie może być bardziej efektywny sposób to zrobić niż:

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

Spróbuj z zastosowaniem: a $ sum <- apply (a [, - 1], 1, suma) –

+3

Dzięki, działa dobrze w następujących przypadkach, gdzie i jest indeksem kolumny Var_1, a j jest indeksem kolumny Var_n ' a $ sum <- apply (a [, c (i: j)], 1, sum) ' – user2568648

+0

I jeszcze bardziej zautomatyzować proces (używając http://stackoverflow.com/questions/9277363/get-the-column- number-in-r-given-the-column-name/9277935 # 9277935): 'a $ sum <- apply (a [, c (dopasowanie (" Var_1 ", nazwy (a)): dopasowanie (" Var_n ", imiona (a)))], 1, suma) ' – user2568648

Odpowiedz

7

Można użyć colSums(a[,c("Var1", "Var2")]) lub rowSums(a[,c("Var_1", "Var_2")]). W twoim przypadku chcesz to drugie.