我想從給定的數據幀中採樣數據幀,以便有足夠的樣本來自變量的每個級別。 這可以通過將數據幀與每個數據幀的級別和樣本分開來實現。 我認爲ddply
(數據幀到數據幀)會爲我做。 以一個最小的例子:從大數據幀中採樣小數據幀
set.seed(1)
data1 <-data.frame(a=sample(c('B0','B1','B2'),100,replace=TRUE),b=rnorm(100),c=runif(100))
> summary(data1$a)
B0 B1 B2
30 32 38
下列命令執行採樣...
當我進入...
data2 <- ddply(data1,c('a'),function(x) sample(x,20,replace=FALSE))
我收到以下錯誤
Error in `[.data.frame`(x, .Internal(sample(length(x), size, replace, :
cannot take a sample larger than the population when 'replace = FALSE'
這個錯誤是因爲x
裏面的ddply
函數是不是矢量,而是數據框。
有沒有人有任何想法如何實現這種取樣?我知道一種方法是不使用ddply,只做(1)隔離,(2)採樣,和(3)三步整理。但我不知道有必須通過某種方式...隨着基地或plyr
功能...
謝謝您的幫助...
你應該使用'sample(nrow(x))' – Andrie 2012-03-28 17:56:33