簡體   English   中英

在 R 中按組抽取多個大小為 n 的 k 個樣本

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM