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

如何在R中生成各列值出现次数均等的1000行10列数据框

生成满足列频数要求的随机DataFrame

要实现你需要的1000行×10列DataFrame(每列中1-10的每个整数恰好出现100次),可以通过先构造每列的固定频数向量,再随机打乱的方式实现,具体方案如下:

核心思路

每列需要包含10个数值,每个数值重复100次(1000行 ÷ 10个值 = 100次),先为每列生成这种固定频数的向量,再对每列单独随机打乱顺序,最后合并成DataFrame即可。这种方式既能严格满足列的频数要求,又能保证整体的随机性。

简洁实现代码

# 生成10列,每列是打乱的、包含1-10各100次的向量
df <- as.data.frame(replicate(10, sample(rep(1:10, 100))))

# 可选:给列添加名称
colnames(df) <- paste0("Variable_", 1:10)

分步解释版本(更直观)

如果需要更清晰的分步逻辑,可以用以下代码:

# 定义基础参数
total_rows <- 1000
total_cols <- 10
value_range <- 1:10
repeat_count <- total_rows / length(value_range) # 计算每个值需要重复的次数:100

# 生成每一列并组合成DataFrame
df <- data.frame(
  lapply(1:total_cols, function(_) {
    # 生成固定频数的向量:每个值重复100次
    fixed_freq_vec <- rep(value_range, each = repeat_count)
    # 随机打乱向量顺序
    sample(fixed_freq_vec)
  })
)

# 验证某一列的频数(以第一列为例)
table(df[, 1])

为什么原方法不适用

你原来的foreach逐行采样方式,是随机生成每行的10个值,但无法控制列维度的频数——每列中各个值的出现次数是随机波动的,无法保证恰好出现100次,因此需要换用先固定列频数再打乱的思路。

内容的提问来源于stack exchange,提问作者J. Doe

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 23:00:08