【问题标题】:Sample in R a category with multiple levels and take a specific sample size from each category在 R 中对具有多个级别的类别进行采样,并从每个类别中获取特定的样本大小
【发布时间】:2021-09-11 14:28:33
【问题描述】:

我有以下数据集

它包含 3 个字符变量(A、B、C)。

变量 A 由 13 个级别组成,我想在每个类别中随机抽取一个大小为 n=30 的样本。 我想要包含行中的所有样本和适合的 B 的最终数据集。

我试过了

data%>%
  group_by(B)%>%
  sample_n(size=30,replace = TRUE)

但它没有用。有什么帮助吗?

【问题讨论】:

  • 你能解释一下“没用”是什么意思吗? (错误,错误的样本数量,...?)
  • 它采样相同的ID,没有不同。

标签: r random dplyr


【解决方案1】:

我检查了您的数据,您创建的某些组(例如 DRH)的观察次数少于 30。由于您传递了 replace=TRUE 参数,因此如果观察值少于 30 个,R 将重复。您基本上可以删除参数(同时只保留超过 30 个样本组)或按照这种方式进行操作;

grouped_data <- data %>%
group_by(GEAR) %>%
mutate(size=n())


grouped_data %>%
filter(size>=30) %>%
sample_n(size=30,replace = TRUE) %>%
ungroup %>%
select(-size) -> part_1

grouped_data %>%
filter(size<30) %>%
ungroup %>%
select(-size) -> part_2

我过滤了样本量大于 30 的组,然后从 part_1 中的每个组中随机抽取 30 个观察值。 part_2 包括样本量小于 30 的组。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-01-20
    • 2020-04-24
    • 2020-01-05
    • 2019-11-20
    • 2021-08-24
    • 2021-04-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多