You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

R语言按分类变量各层级抽取固定样本量抽样问题求助

R分组抽样问题修复方案

错误原因

你当前代码的核心问题是分组变量选择错误:需求为按变量A的13个水平分别抽样,但代码中group_by()传入的是变量B,因此抽样逻辑完全不符合预期。

正确实现代码

场景1:每个A分类的原始样本量均≥30(无放回抽样)

# 按A分组,每组无放回抽30行,自动保留所有原有变量(包含B)
result <- data %>%
  group_by(A) %>%
  sample_n(size = 30, replace = FALSE) %>%
  ungroup() # 可选,抽样完成后解除分组避免后续操作异常
# 如果最终只需要保留A、B两个变量,末尾加select(A, B)即可

场景2:部分A分类的原始样本量<30(需有放回抽样)

如果不开启有放回抽样,sample_n会直接报错,此时调整replace参数即可:

result <- data %>%
  group_by(A) %>%
  sample_n(size = 30, replace = TRUE) %>%
  ungroup()

补充说明

  • dplyr 1.0.0之后更推荐使用slice_sample()函数替代sample_n(),对应写法为slice_sample(n = 30, replace = FALSE),功能完全一致
  • 抽样操作是按行提取,原始数据集的所有变量都会默认保留,不需要额外指定提取B变量

内容的提问来源于stack exchange,提问作者Homer Jay Simpson

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 07:54:04