簡體   English   中英

使用 cross 和 sample_n 對多個不同的樣本大小進行采樣以創建單個 df

[英]sample multiple different sample sizes using crossing and sample_n to create single df

我正在嘗試使用 sample_n 對數據幀進行采樣。 我知道 sample_n 通常一次只接受一個 size= 參數,但是,我想從 2 到 df 中的最大行數進行采樣。 不幸的是,我在下面編譯的代碼不能完成這項工作。 所需的輸出將是一個帶有 id= 列的數據幀或一個列表除以來自 cross() 的 id 列。

df <- data.frame(Date = 1:15,
                 grp = rep(1:3,each = 5), 
                 frq = rep(c(3,2,4), each = 5))

data_sampled_by_stratum <- df %>%
  group_by(Date) %>%
  crossing(id = seq(500)) %>% # repeat dataframes
  group_by(id) %>%
  sample_n(size=c(2:15)) %>% 
  group_by(CLUSTER_ID,Date) %>% filter(n() > 2)

如果您有一個包含不同站點的列,則可以執行此操作。

data_sampled_by_stratum <- data_grouped_by_stratum %>%
    group_by(siteid, Date) %>%
    crossing(id = seq(500)) %>% # repeat dataframes
    sample_n(rbinom(1,sum(siteid==i),(1-s)^2))

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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