आर

2012-04-20 25 views
12

में किसी डेटासेट से असमान नमूना लेना यदि मेरे पास आर में एक बड़ा डेटासेट है, तो मूल डेटा के वितरण को ध्यान में रखते हुए डेटा के यादृच्छिक नमूना कैसे ले सकते हैं, खासकर अगर डेटा खराब हो और केवल 1% एक नाबालिग वर्ग से संबंधित है और मैं डेटा का पक्षपातपूर्ण नमूना लेना चाहता हूं?आर

+1

डेटा आयात करें, अपने "स्तर" के लिए वजन ढूंढें और 'नमूना' बाकी की देखभाल करें। इससे मदद मिलेगी यदि आप अपने प्रश्न को कम कर सकते हैं (कम से कम नमूना डेटा के साथ - http://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example)। –

+0

यह भी देखें http://stackoverflow.com/questions/2923092/how-do-i-sub-sample-data-by-group-using-ddply –

उत्तर

20

sample(x, n, replace = FALSE, prob = NULL) फ़ंक्शन आकार n आकार के वेक्टर x से नमूना लेता है। यह नमूना प्रतिस्थापन बिना या साथ हो सकता है, और नमूने के प्रत्येक तत्व का चयन करने की संभावनाओं या तो प्रत्येक तत्व के लिए एक ही है, या एक वेक्टर उपयोगकर्ता द्वारा सूचित किया जा सकता है।

आप 50 मामलों के साथ प्रत्येक तत्व के लिए एक ही संभावनाओं का एक नमूना लेने के लिए चाहते हैं, तुम सब करने की है

n <- 50 
smpl <- df[sample(nrow(df), 50),] 

है हालांकि, अगर आप तत्वों के लिए चयनित होने के विभिन्न संभावनाओं देना चाहते हैं, मान लें, तत्वों है कि सेक्सहै एम संभावना 0.25 है, जबकि उन जिसका सेक्सएफ है समस्या है 0.75, आप श

n <- 50 
prb <- ifelse(sex=="M",0.25,0.75) 
smpl <- df[sample(nrow(df), 50, prob = prb),] 
+0

जब तक मैं यहां कुछ स्पष्ट याद नहीं कर रहा हूं, मुझे त्रुटि मिल रही है ifelse में (लिंग == "एम", 0.25, 0.75): ऑब्जेक्ट 'सेक्स' अंतिम उदाहरण चलाने की कोशिश से नहीं मिला। – Harry

+1

मैंने इसे 'prob = ifelse (df $ sex ==" एम ", 0.25, 0.75) '' नमूना' फ़ंक्शन में' के साथ काम करने के लिए अभी प्राप्त किया है। – Harry