[英]Take multiple k samples of varying size n by groups in R
我有一個看起來像這樣的數據集:
group=rep(1:4,each=100)
values=round(runif(400,25,350),0)
data<-data.frame(values,group)
每組由 100 個觀察值(值)組成。
對於每組,我將隨機抽取 20 個樣本而無需替換,樣本大小從 10 開始,從 5 增加到 95。
因此,對於每組,我想要 20 個大小為 10 的樣本,20 個樣本大小為 15....20 個樣本大小為 95。
關於如何使用一些 tidyverse 解決方案做到這一點的任何想法?
目前我這樣做了:
data %>%
group_by(group) %>%
nest() %>%
mutate(v=map(data,~rep_sample_n(.,size=10,replace=FALSE,reps=20))) %>%
unnest(v)
它似乎正確地復制了大小為 10 的樣本 20 次,但我仍然需要更改大小...
謝謝。
您可以創建一系列樣本大小,將 group_by/nest/etc 包到 For 循環中,然后將每個新樣本添加到列表中。
注意~rep_sample_n
的 size 參數現在是 size sizes[i]
而不是固定數字。
sizes <- seq(10,95,by=5)
sample_list <- list()
for (i in 1:length(sizes)){
new_data <- data %>%
group_by(group) %>%
nest() %>%
mutate(v=map(data,~rep_sample_n(.,size=sizes[i],replace=FALSE,reps=20))) %>%
unnest(v)
sample_list[i] <- new_data
}
我建議使用for
循環而不是lapply()
,因為它對我來說更有意義,而且這個應用程序不會花費太多時間。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.