我试图从一个因素的每个水平上随机抽取一个样本。每个因子水平都有不同数量的观察结果。对于每个级别,我想创建一个样本,其观察值要少一半。
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)
提前致谢。
尝试sample_frac()
:
library(dplyr)
Samp <- dat %>% group_by(ID) %>% sample_frac(.5)
Run Code Online (Sandbox Code Playgroud)