में मान लें कि हम निम्न डेटाResampling आर
set.seed(123)
dat <- data.frame(var1=c(10,35,13,19,15,20,19), id=c(1,1,2,2,2,3,4))
(sampledIDs <- sample(min(dat$id):max(dat$id), size=3, replace=TRUE))
> [1] 2 4 2
sampledIDs पहचान-पत्र कि dat$id
से (प्रतिस्थापन के साथ) नमूना का एक वेक्टर है। ,
var1 id
13 2
19 2
15 2
19 4
13 2
19 2
15 2
कोड dat[which(dat$id%in%sampledIDs),]
मुझे नहीं देता है क्या मैं चाहता हूँ के बाद से इस कोड का परिणाम
var1 id
13 2
19 2
15 2
19 4
जहां dat$id==2
वाला विषय इस डेटा में केवल एक बार दिखाई देता है (मुझे समझ में आता है कि यह परिणाम क्यों है, लेकिन मुझे नहीं पता कि मैं क्या चाहता हूं)। क्या कोई मदद कर सकता है?
संपादित: आप जवाब के लिए सभी उत्तर के रनटाइम (जो रुचि रखते हैं के लिए) धन्यवाद, यहाँ:
test replications elapsed relative user.self
3 dat[unlist(lapply(sampledIDs, function(x) which(x == dat$id))), ] 1000 0.67 1.000 0.64
1 dat[which(sapply(sampledIDs, "==", dat$id), arr.ind = TRUE)[, 1], ] 1000 0.67 1.000 0.67
2 do.call(rbind, split(dat, dat$id)[as.character(sampledIDs)]) 1000 1.83 2.731 1.83
4 setkey(setDT(dat), id)[J(sampledIDs)] 1000 1.33 1.985 1.33
+1 उत्तरों के विश्लेषण के साथ-साथ एक स्पष्ट रूप से बताई गई समस्या प्रदान करने के लिए +1। –
डेटा का आकार क्या था? आप उल्लेख कर रहे थे कि आपके पास एक बड़ा डेटा –
वास्तव में बड़ा डेटा नहीं है, लेकिन उदाहरण के मुकाबले अधिक अवलोकन/चर: 'data.frame ': \t 4454 obs। 15 चर के '। – Giuseppe