我有一个数据框:

> class(dataset)
[1] "grouped_df" "tbl_df"     "tbl"        "data.frame"
> dim(dataset)
[1] 64480    39

我要从中取样50.000个样本
> dataset %>% dplyr::sample_n(50000)

但是不断给我错误
Error: Sample size (50000) greater than population size (1). Do you want replace = TRUE?

但是例如这样可行:
> dim(dataset[1] %>% dplyr::sample_n(50000))
[1] 50000     1

那么,为什么我的人口大小为(1)-与分组有关吗?

最佳答案

是的,可能与分组有关。从class(dataset)的输出中可以看到,您的数据当前已分组(请注意grouped_df信息),并且一个或多个组显然没有太多观察值,无法对50000个观察值进行采样而不进行替换。

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

dataset %>% ungroup() %>% sample_n(50000)

或者,您也可以更换样品:
dataset %>% sample_n(50000, replace = TRUE)

关于r - dplyr:样本数量大于总体数量,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33629491/

10-10 19:35