2015-03-12 24 views
7

मैं निम्नलिखित गाढ़ा डेटा सेट:कुशलतापूर्वक आर में एकाधिक स्तंभों भर में योग

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 तक योग करना चाहता हूं (एन 20 तक हो सकता है)।

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

आवेदन के साथ प्रयास करें: एक $ योग <- लागू करें (एक [, - 1], 1, योग) –

+3

धन्यवाद, निम्नलिखित में अच्छी तरह से काम करता है जहां मैं Var_1 का कॉलम अनुक्रमणिका है और j Var_n ' एक $ योग <- लागू करें (एक [, सी (i: j)], 1, योग) ' – user2568648

+0

और प्रक्रिया को और भी स्वचालित करना (http://stackoverflow.com/questions/9277363/get-the-column- संख्या-में-आर-दिए गए कॉलम-नाम/9277 9 35 # 9277 9 35): '$ राशि <- लागू करें (एक [, सी (मैच (" Var_1 ", नाम (ए)): मिलान (" Var_n ", नाम (ए)))], 1, योग) ' – user2568648

उत्तर

7

आप colSums(a[,c("Var1", "Var2")]) या rowSums(a[,c("Var_1", "Var_2")]) उपयोग कर सकते हैं: वहाँ से यह करने के लिए एक अधिक कुशल तरीका होना चाहिए। आपके मामले में आप बाद वाले चाहते हैं।

संबंधित मुद्दे