मेरे पास एक बड़ा डेटासेट है जो आर में split()
चुटकता है। मैं dplyr
group_by (जो वैसे भी पसंदीदा तरीका है) का उपयोग करने में सक्षम हूं लेकिन मैं लगातार बने रहने में असमर्थ हूं परिणामी grouped_df
डेटा फ्रेम की सूची के रूप में, मेरे लगातार प्रोसेसिंग चरणों द्वारा आवश्यक एक प्रारूप (मुझे SpatialDataFrames
और इसी तरह के लिए मजबूर होना आवश्यक है)।dplyr group_by के साथ अनुकरण स्प्लिट(): डेटा फ्रेम की एक सूची लौटाएं
एक नमूना डेटासेट पर विचार करें:
df = as.data.frame(cbind(c("a","a","b","b","c"),c(1,2,3,4,5), c(2,3,4,2,2)))
listDf = split(df,df$V1)
रिटर्न
$a
V1 V2 V3
1 a 1 2
2 a 2 3
$b
V1 V2 V3
3 b 3 4
4 b 4 2
$c
V1 V2 V3
5 c 5 2
मैं साथ group_by
(group_by(df,V1)
की तरह कुछ) इस अनुकरण करने के लिए चाहते हैं, लेकिन यह एक, grouped_df
देता है। मुझे पता है कि do
मेरी मदद करने में सक्षम होना चाहिए, लेकिन मैं उपयोग को लेकर अनिश्चित हूं (यह भी एक चर्चा के लिए link देखें।)
ध्यान दें कि ऐसे नाम हैं जो इस समूह की स्थापना के लिए इस्तेमाल किया गया है कारक के नाम से प्रत्येक सूची विभाजित - यह एक वांछित कार्य है (अंत में, इन नामों को डीएफएस की सूची से निकालने के लिए बोनस कुडोस)।
क्यों है '' split' अधिक पसंद group_by'? क्योंकि यह हैडली द्वारा लिखा गया था? 'group_by' में यह स्थान है और इसे डेटा सेट को अलग-अलग डेटा फ्रेम में विभाजित करने के लिए डिज़ाइन नहीं किया गया है, जबकि 'स्प्लिट' को ठीक से प्राप्त करने के लिए डिज़ाइन किया गया है। –
नहीं, क्योंकि यह हैडली द्वारा लिखा गया था, लेकिन क्योंकि यह पूरा करता है - और तेज़। मेरे पास एक डेटासेट है जो 400 एमबी का डीएफ है, और एक monstrosity में विभाजित परिणाम (सुनिश्चित नहीं है कि यह आकार क्यों फुलाता है), और बचत करते समय आर दुर्घटनाग्रस्त हो जाता है। यह एक प्रशिक्षण डेटासेट है, असली एक 8.5 जीबी डेटासेट (1 जीबी आरडीएटा के रूप में) है। समूह काम किया, विभाजित विफल रहा। मैंने bigsplit की कोशिश की, लेकिन यह काम करने के लिए प्रबंधन नहीं किया था। फिर भी, सवाल पर वापस - group_by (और dplyr) के साथ ऐसा कैसे करें? – MartinT
फिर, 'group_by' को डेटा सेट को अलग करने के लिए डेटा सेट को विभाजित करने के लिए डिज़ाइन नहीं किया गया था। 'डू' शायद 'स्प्लिट' से बहुत धीमी होगी। 'विभाजन 'पूरी तरह से सदिश और संकलित कार्य है और मुझे नहीं लगता कि यह किसी अन्य विकल्प की तुलना में धीमा क्यों होगा। –