2011-08-14 15 views
15

मेरे पास 400'000 पंक्तियों और लगभग 50 कॉलम से बना डेटाफ्रेम है। चूंकि यह डेटाफ्रेम इतना बड़ा है, यह बहुत कम्प्यूटेशनल रूप से काम करने के लिए कर लगा रहा है। मैं इस डेटाफ्रेम को छोटे से विभाजित करना चाहता हूं, जिसके बाद मैं उन कार्यों को चलाऊंगा जिन्हें मैं चलाने के लिए चाहता हूं, और फिर अंत में डेटाफ्रेम को फिर से इकट्ठा करना होगा।पंक्तियों की संख्या से डेटाफ्रेम को विभाजित करें

कोई समूह चर नहीं है जिसे मैं इस डेटाफ्रेम को विभाजित करने के लिए उपयोग करना चाहता हूं। मैं बस पंक्तियों की संख्या से इसे विभाजित करना चाहता हूं। उदाहरण के लिए, मैं इस 400'000-पंक्ति तालिका को 400 1'000-पंक्ति डेटाफ्रेम में विभाजित करना चाहता हूं। मैं यह कैसे कर सकता हूं?

उत्तर

20

अपना खुद का समूह बनायें।

d <- split(my_data_frame,rep(1:400,each=1000)) 

तुम भी plyr पैकेज से ddply समारोह, या dplyr से group_by() समारोह पर विचार करना चाहिए। हैडली की टिप्पणियों के बाद,

ब्रेवटी के लिए संपादित किया गया।

आप नहीं जानते कि कितने पंक्तियों डेटा फ्रेम में हैं, या यदि डेटा फ्रेम अपने वांछित हिस्सा आकार की एक असमान लंबाई हो सकता है, आप

chunk <- 1000 
n <- nrow(my_data_frame) 
r <- rep(1:ceiling(n/chunk),each=chunk)[1:n] 
d <- split(my_data_frame,r) 

कर सकते हैं तुम भी

इस्तेमाल कर सकते हैं
r <- ggplot2::cut_width(1:n,chunk,boundary=0) 

भविष्य पाठकों के लिए, dplyr और data.table संकुल पर आधारित विधियां शायद (बहुत) तेजी से डाटा फ्रेम पर समूह के लिहाज से संचालन करने के लिए किया जाएगा।

+0

धन्यवाद! यह बहुत अच्छा काम करता है! और हाँ, मैं प्लीयर पैकेज में देखूंगा क्योंकि यह बहुत उपयोगी लगता है। – Pascal

+0

आप 'split.data.frame' का उपयोग क्यों कर रहे हैं और' split' नहीं? और आपको ग्रुपिंग वैरिएबल को एक कारक पर मजबूर करने की आवश्यकता नहीं है। – hadley

+0

यह सुनिश्चित नहीं था कि उन दबाव/विधि प्रेषण काम करेंगे, और परीक्षण करने के लिए समय लेने के लिए बहुत आलसी थे। धन्यवाद। –

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

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