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

R语言实现:覆盖id与quality全部分组组合的数据集随机抽样

R语言分层抽样实现方案

前置说明:请先确认id和quality两列的唯一组合总数小于2000,否则该需求无法实现,需要先调整目标样本量

实现逻辑分为两步:

  • 首先从每一组id+quality的唯一组合中随机抽取1条记录,确保所有分组都被覆盖
  • 计算剩余需要补充的样本量,从原数据集未被抽取的记录中随机补抽,凑够2000条即可

完整可运行代码如下:

library(dplyr)

# 计算id和quality的唯一组合总数
n_unique <- nrow(distinct(df, id, quality))

# 异常判断:唯一组合数超过样本量上限时直接终止
if (n_unique > 2000) {
  stop("分组组合总数超过2000,无法在指定样本量内覆盖全部分组,请调高样本量")
}

# 第一步:每个分组随机抽1条,保证全部分组覆盖
sample_covered <- df %>%
  group_by(id, quality) %>%
  slice_sample(n = 1) %>%
  ungroup()

# 第二步:补抽剩余所需样本,排除已经被抽取的记录
remaining_sample_num <- 2000 - nrow(sample_covered)
sample_random <- df %>%
  anti_join(sample_covered, by = c("id", "quality")) %>%
  slice_sample(n = remaining_sample_num)

# 合并得到最终2000条样本
final_sample <- bind_rows(sample_covered, sample_random)

你可以用以下代码验证结果是否符合要求:

# 验证是否覆盖所有id+quality组合
nrow(distinct(final_sample, id, quality)) == n_unique
# 验证样本量是否为2000
nrow(final_sample) == 2000

以上方案对16万行规模的数据集处理效率极高,无需额外优化即可快速得到结果。

内容的提问来源于stack exchange,提问作者Alex

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.11 09:30:05