dplyr:样本量大于种群大小

Boe*_*ern 1 r dplyr

我有一个数据帧:

> class(dataset)
[1] "grouped_df" "tbl_df"     "tbl"        "data.frame"
> dim(dataset)
[1] 64480    39
Run Code Online (Sandbox Code Playgroud)

我想从中抽取50.000个样本

> dataset %>% dplyr::sample_n(50000)
Run Code Online (Sandbox Code Playgroud)

但一直给我错误

Error: Sample size (50000) greater than population size (1). Do you want replace = TRUE?
Run Code Online (Sandbox Code Playgroud)

但是,例如,这有效:

> dim(dataset[1] %>% dplyr::sample_n(50000))
[1] 50000     1
Run Code Online (Sandbox Code Playgroud)

那么为什么我的人口规模(1)- 这是否与分组有关?

tal*_*lat 5

是的,它可能与分组有关.正如您从class(dataset)数据输出中看到的那样,当前已经对数据进行了分组(注意grouped_df信息),并且一个或多个组显然只有极少的观察结果,无需替换即可对50000个观测值进行采样.

要解决此问题,您可以在采样前取消组合数据:

dataset %>% ungroup() %>% sample_n(50000)
Run Code Online (Sandbox Code Playgroud)

或者您可以替换样品:

dataset %>% sample_n(50000, replace = TRUE)
Run Code Online (Sandbox Code Playgroud)