R - 生成数据帧,使每个值出现相同的次数

标签 r

我正在尝试在 R 中创建一个大小为 1000 的数据帧,它将由 10 个变量组成,这些变量都可以采用 1 到 10 之间的整数值。

这是一件相当简单的事情,例如这样:

library(foreach)

foreach (i = 1:1000, .combine = "rbind") %do% {
  sample(1:10, 10)
}

但是,我需要的是确保每个值在每列中恰好出现 100 次。

例如,值“1”必须在第一列中出现 100 次,在第二列中出现 100 次,在第三列中出现 100 次,依此类推,直到第十列,它也应该出现 100 次.

同样,值“2”应在第一列中出现 100 次,在第二列中出现 100 次,依此类推,所有值均如此。

有很多可能的组合,我只想随机绘制这些组合之一。我怎样才能做到这一点?

最佳答案

您可以将replicatesample一起使用:

reps <- rep(1:10, each = 100)
data <- replicate(10, sample(reps, 1000))

# if you want it in a data frame structure:
df <- data.frame(data)

输出

#        [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10]
#   [1,]    6    1    2    9    3    2    4    5    6     5
#   [2,]    4    7    6    1    9    5    1    8    5     1
#   [3,]    9    9    6   10    2    8    8    7   10     7
#   [4,]    4    2    6    7    1    5    8    5    5     8
#   [5,]    4    4    4    6    3    1    9    8    3    10
# ....

检查:

apply(data, 2, table)
   [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10]
1   100  100  100  100  100  100  100  100  100   100
2   100  100  100  100  100  100  100  100  100   100
3   100  100  100  100  100  100  100  100  100   100
4   100  100  100  100  100  100  100  100  100   100
5   100  100  100  100  100  100  100  100  100   100
6   100  100  100  100  100  100  100  100  100   100
7   100  100  100  100  100  100  100  100  100   100
8   100  100  100  100  100  100  100  100  100   100
9   100  100  100  100  100  100  100  100  100   100
10  100  100  100  100  100  100  100  100  100   100

关于R - 生成数据帧,使每个值出现相同的次数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/75921003/

相关文章:

R:从Companies House API获取pdf文档

r - 计算小于 x 的值并通过多个组找到最接近 x 的值

r - 如何在 R 中获取系统(Windows)内存?

r - 如何使acast保留reshape2中变量的顺序

r - 通过 R 中其他 2 列的所有组合计算一列的平均值

r - R 中的 "sample"和 "rbinom"函数

r - 在 R 的数据框中合并两个列表

r - 如何在向量中累积条纹

c++ - 在使用 R/C++ 函数构建 Rpackage 时遇到问题

r - 为什么 R 中的 postscript 或 pdf 驱动程序生成的线宽 (lwd) 小于 1 没有区别?