簡體   English   中英

R中的多重隨機抽樣

[英]Multiple Random Sampling in R

我目前有一個稱為清算的數據框,我要在其中運行30個隨機樣本,每個樣本有1000個觀測值,指定哪個帳戶來自哪個樣本,然后將其合並到一個新的數據幀中,並合並所有30個樣本:

這是我在使用dplyr軟件包進行隨機采樣時手動執行的操作,但是為了簡化可重復性,我想對其進行簡化:

Sample_1 <- liquidation %>%
  sample_n(1000)
Sample_1$Obs <- 1

Sample_2 <- liquidation %>%
  sample_n(1000)
Sample_2$Obs <- 2

Sample_3 <- liquidation %>%
  sample_n(1000)
Sample_3$Obs <- 3
....
Sample_30 <- liquidation %>%
  sample_n(1000)
Sample_30$Obs <- 30

然后,將所有內容合並為一個合並的數據幀:

Combined <- rbind(Sample_1, Sample_2,   Sample_3,   Sample_4,   Sample_5,   Sample_6,   Sample_7,   Sample_8,   Sample_9,   Sample_10,  
                  Sample_11,    Sample_12,  Sample_13,  Sample_14,  Sample_15,  Sample_16,  Sample_17,  Sample_18,  Sample_19,  
                  Sample_20,    Sample_21,  Sample_22,  Sample_23,  Sample_24,  Sample_25,  Sample_26,  Sample_27,  Sample_28,  
                  Sample_29,    Sample_30)

str(Combined)
'data.frame':   30000 obs. of  31 variables:

這是使用mtcars的示例(隨機選擇5行,共10次)

Combined <- bind_rows(replicate(10, mtcars %>% sample_n(5), simplify=F), .id="Obs")

我們使用基本函數replicate()重復多次采樣。 然后,我們使用dplyrbind_rows()合並樣本並跟蹤它們來自哪個樣本。

您應該可以將其包裝為一個函數(假設Sample_20等是臨時的,以后不再需要它們了)

sampling <- function(x, nSamples = 30, nRows = 1000) {
  do.call('rbind', lapply(seq_along(1:nSamples), function(n) {
    x %>% sample_n(nRows) %>% mutate(Obs=n)
  }))
}

然后可以運行:

combined <- sampling(liquidation)

暫無
暫無

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

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