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

B. *_*vis 1 r dplyr

我试图从一个因素的每个水平上随机抽取一个样本。每个因子水平都有不同数量的观察结果。对于每个级别,我想创建一个样本,其观察值要少一半。

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

使用上面的数据,似乎类似以下内容的东西几乎可以正常工作,但是错误(n()中的Error:不应直接调用此函数)表明我不正确地使用了n()函数。

Samp <- dat %>% group_by(ID) %>% sample_n(size = n()/2 )
Run Code Online (Sandbox Code Playgroud)

提前致谢。

Bry*_*gin 5

尝试sample_frac()

library(dplyr)
Samp <- dat %>% group_by(ID) %>% sample_frac(.5)
Run Code Online (Sandbox Code Playgroud)