我正在尝试在 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 次,依此类推,所有值均如此。
有很多可能的组合,我只想随机绘制这些组合之一。我怎样才能做到这一点?
最佳答案
您可以将replicate
与sample
一起使用:
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/