2012-01-25 8 views
9

मेरे पास एक डेटा फ्रेम है जहां प्रत्येक पंक्ति एक व्यक्ति का प्रतिनिधित्व करती है। उस डेटा फ्रेम में दो चर हैं: आयु और वर्ष। मैं प्रति वर्ष औसत आयु की एक टेबल बनाना चाहता हूं। मैं यह कैसे कर सकता हूं?आर में रकम के बजाय अर्थों की गणना करने के लिए मैं xtabs कैसे प्राप्त कर सकता हूं?

सबसे अच्छा मैं xtabs(age ~ year, dataframe) के साथ आ सकता था, लेकिन यह मुझे प्रति वर्ष आयु का योग देता है।

उत्तर

16

उपयोग aggregate:

xtabs(hp~cyl+gear,aggregate(hp~cyl+gear,mtcars,mean)) 
    gear 
cyl  3  4  5 
    4 97.0000 76.0000 102.0000 
    6 107.5000 116.5000 175.0000 
    8 194.1667 0.0000 299.5000 
+0

बिल्कुल सही! और काफी सुरुचिपूर्ण समाधान, मुझे जोड़ना होगा। धन्यवाद! –

5

, विशेष रूप से ddply

ddply(dataframe, .(year), summarise, mean(age)) 

आप xtabs उपयोग करने के लिए ... ऊपर जवाब देखने के है, तो plyr पैकेज पर एक नज़र डालें।

+0

मुझे एक और बहुत ही सुरुचिपूर्ण समाधान दिखाने के लिए धन्यवाद, लेकिन चूंकि मेरी वास्तविक समस्या में तीन चर शामिल हैं, मैं अभी भी स्टैब्स के साथ जा रहा हूं। :) –

+2

आप ddply (डेटाफ्रेम,। (वर्ष), संक्षेप, माध्य (आयु), अधिकतम (ऊंचाई), एसडी (वजन), आदि में चर सूची को जारी रख सकते हैं ...) ' – Justin

5

मुझे खुशी है कि xtabs समाधान आपके लिए काम करता है। मेरे पास एक पैकेज लोड होना चाहिए जो मेरे लिए हस्तक्षेप करता है (और एक त्रुटि देता है)। एक अन्य समाधान होगा:

tapply(dfrm$age, dfrm$year, FUN=mean) 

तालिका (सरणी) बस प्रपत्र list(fac1, fac2, fac3) में दूसरा सूचकांक तर्क को अतिरिक्त कारकों जोड़ने रखने के लिए अतिरिक्त आयाम प्राप्त करने के लिए।

उदाहरण के लिए आवेदन किया mtcars का उपयोग कर:

tapply(mtcars$hp, list(mtcars$cyl,mtcars$gear), mean) 
     3  4  5 
4 97.0000 76.0 102.0 
6 107.5000 116.5 175.0 
8 194.1667 NA 299.5 

या और भी अधिक दृढ़तापूर्वक:

with(mtcars, tapply(hp, list(cyl, gear), mean)) 
0

एक अन्य समाधान, 2 2 xtabs काम करता है, पहले एक का उपयोग करने के उम्र के योग की गणना करने के लिए है प्रत्येक समूह के लिए हेडकाउंट प्राप्त करने के लिए, फिर राशि/हेडकाउंट द्वारा माध्य प्राप्त करें।

जैसे, xtabs (उम्र ~ साल, dataframe)/xtabs (~ साल, dataframe)

हालांकि, सकल दृष्टिकोण मंझला या dataframe के लिए लागू अन्य कार्यों की गणना करने के लिए इस्तेमाल किया जा सकता है। निश्चित रूप से अधिक लचीला।

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

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