2013-07-28 14 views
6

क्या एक साफ झुकाव में एक ही कारक के सभी स्तरों को सबसेट करने का कोई तरीका है?एक ही कारक के सभी स्तरों को सब्सक्राइब करें

केस: मान लें कि आपके पास डेटा फ्रेम है जहां कॉलम में से एक कारक (डेटा $ कारक) है और आप सबसेट डेटा फ्रेम बनाना चाहते हैं जिसमें कारक का केवल एक स्तर होता है। अलग-अलग सबसेट कमांड लिखकर कारकों की एक छोटी संख्या होने पर यह करना आसान है। हालांकि, अगर आपके पास बड़ी संख्या में स्तर हैं (उदाहरण के लिए 50+ स्तर)? 50+ सबसेट कमांड लिखने के बिना ऐसे मामले में सभी सबसेट बनाने के लिए कोई कमांड या चालाक तरीका है?

+1

हाँ, देख विभाजन?। –

+0

@ होंगओई ने बस कोशिश की - यह चाल चल रहा है। हालांकि, समूह/सबसेट सभी एक चर में जाते हैं (उदाहरण के लिए, सबसेट <-split (डीएफ, डेटा $ कारक, ड्रॉप = गलत)। एकल वैरिएबल "सबसेट्स" के भीतर प्रत्येक सबसेट को कैसे एक्सेस करता है? – whistler

+0

@HongOoi कभी नहीं! इसे समझ लिया। आपकी मदद के लिए धन्यवाद !! अगर कोई दिलचस्पी लेता है, तो समूहों को सबसेट से एक्सेस किया जा सकता है, उदाहरण के लिए समूह 1 <-सब्सेट्स [[1]], समूह 2 <-सब्सेट्स [[2]], आदि। – whistler

उत्तर

12

एक पाश बनाने के लिए होने के बिना, विभाजित समारोह इस समस्या को हल करने के लिए महत्वपूर्ण है।

कारक स्तंभ आप सबसेट के (या उपसमूह) चाहते हैं मान लिया जाये कि "डाटा" डेटा फ्रेम के कॉलम "कारक" में है:

subsets<-split(data, data$factor, drop=TRUE) 

यह पहलू के आधार पर उप-समूहों की एक सूची का निर्माण करेगा मूल्य। सूची में कारकों की संख्या के समान लंबाई होगी।

तो आपको एक अलग डेटा फ्रेम में प्रत्येक सबसेट लगाने की जरूरत है, तो आप उन्हें निम्न कार्य करके पहुँच सकते हैं:

group1<-subsets[[1]] 
group2<-subsets[[2]] 
... 
0

आप इस प्रकार का अनुरोध किया कारक मूल्यों पर एक पाश बना सकते हैं:

vals <- sort (unique (data[[factor]])) 
for (i in 1:length(vals)) { 
    subset <- (data[[factor]]==vals[i]) 
    n <- length (data[[factor]][(subset)]) 
    if (n >= min.n) { 
     ... 
    } 
} 
संबंधित मुद्दे