R中数据帧的模拟

时间:2016-05-20 11:03:31

标签: r

我跟随DF。

> x
  Members      Exp
1       A 2.575374
2       B 5.764491
3       C 7.576994
4       D 5.834233
5       E 3.977425

"实验"是泊松分布变量。我现在想在整个表格上进行模拟,并查看"会员"每个等级的次数。

期望的结果将是:

Rank A B C D E 1 10% 2 18% 3 42% 4 18% 5 12% 100%

真的很感激帮助:)

道歉,但对R来说很新。

    sim <- 100
    a <- matrix(nrow = sim, ncol = nrow(x))

    for (i in nrow(x)){
      a[,i] <<- rpois(sim, x[i,2])
      }

colnames(a) <- x[,1]

我在这里收到错误信息,

Error in a[, i] <<- rpois(sim, x[i, 2]) : object 'a' not found

当我在一个循环中没有它时它起作用..想法是计算行数&#34;会员&#34;排名第1,第2,第3,第4和第5。

现在使用此代码

    sim <- 100
    a <- matrix(nrow = sim, ncol = nrow(x))

    for (i in 1:nrow(x)){
      a[,i] <- rpois(sim, x[i,2])
      }

colnames(a) <- x[,1]

这给了我这个数据框

> head(a)
     A  B  C D E
[1,] 0  9  8 3 4
[2,] 2 10  6 3 4
[3,] 3  6  7 9 1
[4,] 2  3  4 6 1
[5,] 3  4  6 7 3
[6,] 4  3 12 5 3

第1行是模拟1,第2行模拟2等等。现在我想看看A是Max的次数。

我需要做的是创建一个大小相等的逻辑矩阵,我在每行上应用Max,然后计算每列的平均值。但Max只返回每行的最大值,我想在每个单元格中返回0或1 ..

2 个答案:

答案 0 :(得分:1)

试试这个:

...
sim <- 100
a <- matrix(nrow = sim, ncol = nrow(x))

for (i in nrow(x)){
  a[,i] <- rpois(sim, x[i,2])
}

答案 1 :(得分:1)

这确实如此,但希望不要使用for循环:)

> x
  Members      Exp
1       A 2.575374
2       B 5.764491
3       C 7.576994
4       D 5.834233
5       E 3.977425

sim <- 100
a <- matrix(nrow = sim, ncol = nrow(x))
b <- matrix(nrow = sim, ncol = nrow(x))

for (i in 1:nrow(x)){
  a[,i] <- rpois(sim, x[i,2])
  }

colnames(a) <- x[,1]

for (j in 1:sim){
    for (k in 1:nrow(x)){
      b[j,k] <- as.numeric(a[j,k]) == max(a[j,])
    } 
}

head(b)

> head(b)
      [,1]  [,2]  [,3]  [,4]  [,5]
[1,] FALSE FALSE  TRUE FALSE FALSE
[2,] FALSE FALSE FALSE  TRUE FALSE
[3,] FALSE FALSE  TRUE FALSE FALSE
[4,] FALSE FALSE  TRUE FALSE FALSE
[5,] FALSE FALSE FALSE  TRUE FALSE
[6,] FALSE FALSE  TRUE FALSE FALSE