我有以下形式的数据集:
dat <- expand.grid(cat=factor(1:4), lab=factor(1:10))
dat <- cbind(dat, x=runif(18), y=runif(18, 2, 5)) 我在10个实验室里观察到了4只猫。
现在,我希望通过重采样来模拟此数据集中的示例,以便:
每只猫在5(随机)个实验室、和中观察到,每个实验室有50% (或2)随机观察到的猫。
老实说,我想不出出路.提前感谢
发布于 2021-04-13 16:57:26
对于函数来说,这种类型的事情通常是最简单的。
该函数获取数据,首先过滤要取样的实验室数量,然后为每个实验室采集猫的样本。
library(dplyr)
dat <- expand.grid(cat=factor(1:4), lab=factor(1:10)) %>%
mutate(x = runif(nrow(.)),
y = runif(nrow(.), 2, 5))
samplr <- function(dat, nlab = 5, ncat = 2){
dat %>%
filter(lab %in% sample(unique(dat$lab), nlab)) %>%
group_by(lab) %>%
filter(cat %in% sample(unique(dat$cat), ncat))
}
samplr(dat)然后,您可以更改被取样的猫或实验室的数量。
samplr(dat, nlab = 4, ncat = 3)https://stackoverflow.com/questions/67078104
复制相似问题