我试图从给定的数据帧中对数据帧进行采样,以便变量的每个级别都有足够的样本。
这可以通过按级别分离数据帧并从每个级别中分离样本来实现。
我想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))
我收到以下错误
错误于[.data.frame
(x, .Internal(样本(长度(x), 大小, 替换, :
当“replace = FALSE”时,不能选取大于总体的样本
这个错误是因为x
在 - 的里面ddply
函数不是向量,而是数据框。
有谁知道如何实现这种采样?
我知道一种方法是不使用 ddply,只需分三个步骤执行 (1) 隔离、(2) 采样和 (3) 整理。但我想知道一定有某种方式......与基地或plyr
功能...
感谢您的帮助...