दिलचस्प पोस्ट
कोणीय 2: घटक को प्रतिपादन से पहले डेटा कैसे लोड करें? खेल 2048 के लिए इष्टतम एल्गोरिदम क्या है? PHP में एमवीसी दृश्य को समझना बूट लिपिक में col-lg- *, col-md- * और col-sm- * में अंतर क्या है? पीपी और वर्चुअलएएनव प्रणाली को स्थापित करने का आधिकारिक "पसंदीदा" तरीका क्या है? प्रदर्शन परीक्षण के लिए सटीक समय माप अनुप्रयोगों को रूट व्यू नियंत्रक कंसोल होने की उम्मीद है गतिविधि के निर्माता में क्यों appapplicationContext () प्राप्त करें, शून्य पॉइंटर अपवाद फेंकता है? अगर … और जेएसपी या जेएसटीएल के भीतर सीएसएस / जेएस में शब्द लपेटो कोणीय एनजी-दोहराना हर 3 या 4 कॉलम में बूटस्ट्रैप पंक्ति जोड़ें जेकाइल ब्लॉग में टैग का समर्थन करने का एक आसान तरीका Log4j में अपना खुद का एपेन्डर कैसे बना सकता है? कैसे जावा के उपयोग से फ़ोल्डर खोलें अपरिभाषित फ़ंक्शन apache_request_headers () को कॉल करें

डेटाफ़्रेम में नमूना यादृच्छिक पंक्तियां

मैं उपयुक्त फ़ंक्शन खोजने के लिए संघर्ष कर रहा हूं जो आर भाषा में किसी डेटा फ्रेम से प्रतिस्थापन के बिना एक निश्चित पंक्तियों की संख्या को वापस लाएगा? क्या कोई मेरी मदद कर सकता है?

वेब के समाधान से एकत्रित समाधान "डेटाफ़्रेम में नमूना यादृच्छिक पंक्तियां"

पहले कुछ डेटा बनाएं:

> df = data.frame(matrix(rnorm(20), nrow=10)) > df X1 X2 1 0.7091409 -1.4061361 2 -1.1334614 -0.1973846 3 2.3343391 -0.4385071 4 -0.9040278 -0.6593677 5 0.4180331 -1.2592415 6 0.7572246 -0.5463655 7 -0.8996483 0.4231117 8 -1.0356774 -0.1640883 9 -0.3983045 0.7157506 10 -0.9060305 2.3234110 

फिर यादृच्छिक पर कुछ पंक्तियों का चयन करें:

 > df[sample(nrow(df), 3), ] X1 X2 9 -0.3983045 0.7157506 2 -1.1334614 -0.1973846 10 -0.9060305 2.3234110 

जॉन कोल्बी का उत्तर सही उत्तर है। हालांकि यदि आप एक dplyr उपयोगकर्ता हैं तो dplyr का उत्तर भी है:

 sample_n(df, 10) 

बेतरतीब ढंग से डेटाफ़्रेम से 10 पंक्तियाँ नमूने। यह sample.int कहता है, तो वास्तव में कम टाइपिंग के साथ एक ही उत्तर है (और मैट्र्रिटर के संदर्भ में उपयोग को आसान बनाता है क्योंकि डेटाफ्रेम पहली तर्क है)।

एक लिखें! जेसी के जवाब को लपेटते हुए मुझे:

 randomRows = function(df,n){ return(df[sample(nrow(df),n),]) } 

अब सबसे पहले अगर n <= nrow (df) और एक त्रुटि के साथ रोक रहा है, तो उसे जांचकर बेहतर बनाएं।

data.table पैकेज DT[sample(.N, M)] , डेटा तालिका DT से एम यादृच्छिक पंक्तियाँ नमूना

 library(data.table) set.seed(10) mtcars <- data.table(mtcars) mtcars[sample(.N, 6)] mpg cyl disp hp drat wt qsec vs am gear carb 1: 14.7 8 440.0 230 3.23 5.345 17.42 0 0 3 4 2: 19.2 6 167.6 123 3.92 3.440 18.30 1 0 4 4 3: 17.3 8 275.8 180 3.07 3.730 17.60 0 0 3 3 4: 21.5 4 120.1 97 3.70 2.465 20.01 1 0 3 1 5: 22.8 4 108.0 93 3.85 2.320 18.61 1 1 4 1 6: 15.5 8 318.0 150 2.76 3.520 16.87 0 0 3 2 

संपादित करें : यह उत्तर अब पुराना है, अद्यतन संस्करण देखें।

मेरे आर पैकेज में मैंने sample बढ़ा दिया sample ताकि यह अब डेटा फ्रेम के लिए अपेक्षित रूप से व्यवहार करता है:

 library(devtools); install_github('kimisc', 'krlmlr') library(kimisc) example(sample.data.frame) smpl..> set.seed(42) smpl..> sample(data.frame(a=c(1,2,3), b=c(4,5,6), row.names=c('a', 'b', 'c')), 10, replace=TRUE) ab c 3 6 c.1 3 6 a 1 4 c.2 3 6 b 2 5 b.1 2 5 c.3 3 6 a.1 1 4 b.2 2 5 c.4 3 6 

यह एक एस 3 जेनेरिक पद्धति का sample बनाकर और फ़ंक्शन में आवश्यक (तुच्छ) की कार्यक्षमता प्रदान करके प्राप्त किया जाता है। सेट करने के लिए एक setMethod सब कुछ ठीक करता है मूल कार्यान्वयन अभी भी base::sample माध्यम से उपयोग किया जा सकता है।

मेरे आर पैकेज में एक फ़ंक्शन sample.rows केवल इस उद्देश्य के लिए।

 install.packages('kimisc') library(kimisc) example(sample.rows) smpl..> set.seed(42) smpl..> sample.rows(data.frame(a=c(1,2,3), b=c(4,5,6), row.names=c('a', 'b', 'c')), 10, replace=TRUE) ab c 3 6 c.1 3 6 a 1 4 c.2 3 6 b 2 5 b.1 2 5 c.3 3 6 a.1 1 4 b.2 2 5 c.4 3 6 

पिछले उत्तर के लिए जॉरीस मेयस द्वारा दिए गए टिप्पणियों के अनुसार, यह एक सामान्य एस 3 फ़ंक्शन बनाकर sample बढ़ाना बुरा विचार था।

आर में एक टिब्बल प्रकार से एक यादृच्छिक नमूना चुनें:

 library("tibble") a <- your_tibble[sample(1:nrow(your_tibble), 150),] 

नीरो एक चीख लेता है और पंक्तियों की संख्या देता है sample लिए पहला पैरामीटर पारित किया गया है जो 1 से लेकर अपने टिब्ब के अंत तक है। दूसरा पैरामीटर नमूना पारित किया है, 150, यह है कि आप कितने यादृच्छिक नमूने चाहते हैं। वर्ग ब्रैकेट स्कीइसिंग निर्दिष्ट करती है कि इंडेक्स की पंक्तियों को लौटा दिया गया था। वैरिएबल 'ए' को यादृच्छिक नमूने का मूल्य मिलता है