2012-03-10 13 views
5

के भीतर योग चर, मुझे खेद है, मुझे यकीन है कि एक समान प्रश्न पहले ही पूछा जा चुका है लेकिन मुझे डर है कि मुझे यह नहीं मिल रहा है। मैं केवल डेटाफ्रेम के भीतर बहुत से चर जोड़ना चाहता हूं। एक छोटे से उदाहरण के रूप में, मैं जो करना चाहता हूं वह नीचे डीएफ $ ई की गणना करता है।आर डेटाफ्रेम

df <- data.frame(a=c(1,2,3,4,5), b=(c(6,7,8,9,10)), 
       c=c(1,2,3,4,5), d=(c(6,7,8,9,10))) 

df$e <- with(df, a+b+c+d) # this is the right answer 

लेकिन मैं कह रहा df $ ई < से यह व्यक्त करना चाहता हूँ - "। एक और डी के बीच सभी चर का योग"

धन्यवाद! टैगिंग में भी सराहना की मदद की।

उत्तर: df$e <- rowSums(subset(df, select=a:d))

मैं व्यक्त नहीं की थी कि मैं इसे बहुत स्पष्ट रूप से की जरूरत है, लेकिन जैसा कि मैंने rowSums का था मैं subset के रूप में अज्ञानी था।

+0

आप एक मैट्रिक्स/मेज, के साथ काम कर सकते हैं 'addmargins' और' margin.table' काम आ सकते हैं। –

उत्तर

10

क्या आप rowSums() खोज रहे हैं?

> df <- data.frame(a=c(1,2,3,4,5), b=(c(6,7,8,9,10)), 
+     c=c(1,2,3,4,5), d=(c(6,7,8,9,10))) 
> with(df, a+b+c+d) 
[1] 14 18 22 26 30 
> rowSums(df) 
[1] 14 18 22 26 30 
> 

जो आप निश्चित रूप से भी df में वापस असाइन कर सकते हैं:

> df$e <- rowSums(df) 
> df 
    a b c d e 
1 1 6 1 6 14 
2 2 7 2 7 18 
3 3 8 3 8 22 
4 4 9 4 9 26 
5 5 10 5 10 30 
> 
+0

ऐसा लगता है :) लेकिन मुझे पूरे डेटाफ्रेम के बजाय पहले और अंतिम लगातार कॉलम नामों को संदर्भित करने की आवश्यकता है। मुझे यह कैसे करना है? –

+0

तर्क के अनुसार 'rowSums' में तर्क को सब्सक्राइब करें। –

+0

मुझे खेद है, यह वही है जो मैं पूछ रहा हूं कि कैसे करना है। मैं इस पृष्ठ पर वापस आने से पहले देख रहा हूं और देख सकता हूं कि मुझे कोई जवाब मिल सकता है या नहीं। –

2

आप एक तरह से स्पष्ट रूप से a + b + c + d + ... बाहर लिख नहीं करने के लिए देख रहे हैं?

यदि हां, तो कैसे के बारे में rowSums()

df$e <- with(df, rowSums(df)) 
+0

धन्यवाद ... Dirk के रूप में एक ही टिप्पणी, हाँ, लेकिन मुझे पूरे डेटाफ्रेम के बजाय पहले और अंतिम लगातार कॉलम नामों को संदर्भित करने की आवश्यकता है। मुझे यह कैसे करना है? –

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