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

在R中生成覆盖75%组合、规模约15000的5变量5水平数据集方法求助

R语言生成指定要求的模拟数据集

实现步骤与代码

  1. 生成所有变量组合
    首先用expand.grid()生成x1到x5的全部3125种水平组合:
# 生成所有可能的变量组合
full_combinations <- expand.grid(
  x1 = 1:5,
  x2 = 1:5,
  x3 = 1:5,
  x4 = 1:5,
  x5 = 1:5
)
  1. 抽取75%的目标组合
    计算需要保留的组合数(约2344个),并随机抽取:
# 计算目标组合数(75%总组合数)
target_combo <- round(nrow(full_combinations) * 0.75)
# 随机选中目标组合
selected_combo <- full_combinations[sample(nrow(full_combinations), target_combo), ]
  1. 生成约15000条观测数据
    这里提供两种实现方式,按需选择:

方式一:均匀分配重复次数(每个组合重复次数差异极小)

这种方式会让每个选中的组合重复次数基本一致,总观测数刚好15000:

target_n <- 15000
# 基础重复次数
base_rep <- target_n %/% target_combo
# 需要额外多重复1次的组合数
extra_rep <- target_n %% target_combo

# 给选中的组合分配重复次数
selected_combo$rep <- base_rep
selected_combo$rep[sample(nrow(selected_combo), extra_rep)] <- base_rep + 1

# 展开成最终数据集
final_data <- selected_combo[rep(seq_len(nrow(selected_combo)), selected_combo$rep), ]
# 移除重复次数列
final_data$rep <- NULL

# 随机打乱行顺序(可选)
final_data <- final_data[sample(nrow(final_data)), ]

方式二:随机重复抽样(重复次数更随机)

直接从选中的组合中有放回抽样15000次,实现更简单:

target_n <- 15000
# 有放回抽样生成最终数据集
final_data <- selected_combo[sample(nrow(selected_combo), target_n, replace = TRUE), ]

# 随机打乱行顺序(可选)
final_data <- final_data[sample(nrow(final_data)), ]

验证结果

可以用以下代码确认数据集是否符合要求:

# 查看总观测数
nrow(final_data)
# 查看覆盖的组合数
length(unique(apply(final_data, 1, paste, collapse = "-")))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 12:00:06