2011-07-28 14 views
9

मैं अपने डेटा को एकत्रित करने के लिए ddply का उपयोग कर रहा हूं लेकिन आउटपुट डेटा फ्रेम में कॉलम नाम असाइन करने का एक शानदार तरीका नहीं मिला है।ddply समेकित कॉलम नाम

फिलहाल मैं यह कर रहा हूं:

agg_data <- ddply(raw_data, .(id, date, classification), nrow) 
names(agg_data)[4] <- "no_entries" 

और इस

agg_data <- ddply(agg_data, .(classification, date), colwise(mean, .(no_entries))) 
names(agg_data)[3] <- "avg_no_entries" 

वहाँ एक बेहतर, अधिक सुरुचिपूर्ण यह करने के लिए रास्ता नहीं है?

+0

आप भी 'गिनती' – hadley

उत्तर

8

आप summarise उपयोग कर सकते हैं:

agg_data <- ddply(raw_data, .(id, date, classification), summarise, "no_entries" = nrow(piece)) 

या आप length(<column_name>)nrow(piece) यदि का उपयोग काम नहीं करता है सकते हैं। उदाहरण के लिए, यहाँ एक उदाहरण है कि किसी के द्वारा runnable होना चाहिए:

ddply(baseball, .(year), summarise, newColumn = nrow(piece)) 

या

ddply(baseball, .(year), summarise, newColumn = length(year)) 

संपादित

या के रूप में यहोशू टिप्पणी, सभी को बड़े संस्करण, NROW के लिए जाँच करता है आप।

+1

'NROW' को देखना चाहते हैं, जो आपके लिए आवश्यक जांच करता है। –

+0

@ जोशुआ - वाह, धन्यवाद, विश्वास नहीं कर सकता कि मुझे उस बारे में पता नहीं था ... – joran

+1

जो अच्छी तरह से काम करता है; मुझे 'टुकड़ा' चर के बारे में पता नहीं था। क्या आपको कोई विचार है कि जब मैं पहले से ही colwise फ़ंक्शन का उपयोग करता हूं तो यह कैसे काम करता है? मैंने ऊपर दिए गए प्रश्न में दूसरा उदाहरण जोड़ा। – behas

9

सामान्य रूप मैं एक बहुत का उपयोग करें:

ddply(raw_data, .(id, date, classification), function(x) data.frame(no_entries=nrow(x)) 

मैं गुमनाम कार्यों का उपयोग मेरी ddply बयान में लगभग हर समय इतना ऊपर मुहावरा गुमनाम कार्यों के साथ अच्छी तरह से meshes। nrow() जैसे फ़ंक्शन को व्यक्त करने का यह सबसे संक्षिप्त तरीका नहीं है, लेकिन ऐसे कार्यों के साथ जहां मैं एकाधिक तर्क पारित करता हूं, मुझे यह बहुत पसंद है।

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