假設我們有以下數據再採樣中的R
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
採樣(與替換)的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用於提供答案分析以及明確說明的問題。 – 2014-11-03 12:19:56
數據大小是多少?你提到你有一個大數據 – 2014-11-03 12:21:56
不是很大的數據,但比例子中有更多的觀察/變量:''data.frame':\t 4454 obs。的15個變量'。 – Giuseppe 2014-11-03 12:28:19