2015-03-12 2 views
7

У меня есть следующий сгущенное набор данных:эффективно подводить через несколько столбцов в 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="")]] 
} 

Я хотел бы суммировать столбцы var1 и var2, которые я использую:

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

В действительности мой набор данных намного больше - я хотел бы суммировать от Var_1 до Var_n (n может быть до 20). Там должно быть более эффективный способ сделать это, чем:

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

Попробуйте применить: $ sum <- apply (a [, - 1], 1, sum) –

+3

Спасибо, хорошо работает в следующем, где i - индекс столбца Var_1, а j - индекс столбца Var_n ' a $ sum <- apply (a [, c (i: j)], 1, sum) ' – user2568648

+0

И еще более автоматизировать процесс (используя http://stackoverflow.com/questions/9277363/get-the-column- number-in-r-given-the-column-name/9277935 # 9277935): 'a $ sum <- apply (a [, c (match (" Var_1 ", names (a)): match (" Var_n "," имена (a)))], 1, sum) ' – user2568648

ответ

7

Вы можете использовать colSums(a[,c("Var1", "Var2")]) или rowSums(a[,c("Var_1", "Var_2")]). В вашем случае вы хотите последнего.

Смежные вопросы