在 R 中以特定格式制作概率

Make a probability with specific format in R

我有这样的数据:

x = c(1,2,3)
prob = c(0.13,0.13,0.74)
# Total sample size
n = 70
result = rep(x, round(n * prob))
Final<-replicate(1, sample(result))

我想制作一个矩阵 [7,10],它的概率为 (0.14,0.14,0.72) 对应 (1,2,3)。在这个矩阵中,我需要在每七个值中 1 和 2 重复 1,而 3 重复 5 次,如下所示:

3   3   3   1   2   3   3
3   3   3   3   2   1   3
3   2   1   3   3   3   3
3   3   3   1   3   3   2
2   1   3   3   3   3   3
2   1   3   3   3   3   3
3   3   3   2   1   3   3
3   3   3   3   2   3   1
3   2   1   3   3   3   3

因此,我将在每个 raw 中只得到一个 1 和一个 2。你能帮我写一下代码吗?

一种方法是用 3 填充矩阵,然后将 1 和 2 随机分配给每一行的列位置。

set.seed(1)
m <- matrix(rep(3, 7*10), ncol = 7)
pos <- replicate(10, sample(1:7, 2))
for (i in 1:nrow(m)) m[i, pos[,i]] <- 1:2
m
#>       [,1] [,2] [,3] [,4] [,5] [,6] [,7]
#>  [1,]    1    3    3    2    3    3    3
#>  [2,]    2    3    3    3    3    3    1
#>  [3,]    3    1    3    3    2    3    3
#>  [4,]    3    3    2    3    3    3    1
#>  [5,]    3    2    3    3    3    1    3
#>  [6,]    3    3    1    3    3    3    2
#>  [7,]    1    3    3    3    2    3    3
#>  [8,]    3    2    3    3    1    3    3
#>  [9,]    3    3    3    3    3    1    2
#> [10,]    2    1    3    3    3    3    3

reprex package (v2.0.1)

于 2022-04-15 创建