我试图从一个因子的每个级别获取一个随机样本。每个因子水平的观察数量都不同。对于每个级别,我想创建一个具有一半观察数的样本。
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 )
提前致谢。
答案 0 :(得分:4)
尝试sample_frac()
:
library(dplyr)
Samp <- dat %>% group_by(ID) %>% sample_frac(.5)