使用dplyr为每个级别的因子采样不同数量的随机行

时间:2016-06-08 21:22:28

标签: r dplyr

我试图从一个因子的每个级别获取一个随机样本。每个因子水平的观察数量都不同。对于每个级别,我想创建一个具有一半观察数的样本。

library(dplyr)
dat <- data.frame(ID = rep(c("AAA", "AAA","AAA","BBB","BBB","CCC"), length = 100),
                  Value = sample(1:100, replace = T))

使用上面的数据,看起来像下面这样的东西几乎可以工作,但是错误( n()中的错误:不应该直接调用此函数)表明我错误地使用了n()函数。

Samp <- dat %>% group_by(ID) %>% sample_n(size = n()/2 )

提前致谢。

1 个答案:

答案 0 :(得分:4)

尝试sample_frac()

library(dplyr)
Samp <- dat %>% group_by(ID) %>% sample_frac(.5)