跨数据帧的随机泊松数之和

时间:2012-06-21 19:05:01

标签: r

在我编程的模拟中,在每次迭代中,我需要计算数据帧中每行的一些随机泊松数的总和,其中参数存储在该行的另一列中。

以下是数据样本(以下代码中称为“研究”):

    phase Sites enroll_rate rec_months stud_months enrolled m_enroll
51     2     1  2.95920139  2.0000000    5.000000        6        0
52     2    24  0.20784867  2.0000000    5.000000       10        0
53     2     3  0.46501736  3.0000000    6.000000        2        0
54     2     2  1.40480769  3.0000000    6.000000        7        0
55     2     1  1.31299020  5.0000000    7.000000        3        0
64     2    29  0.04373204  0.9712526    1.971253        2        0

以下是我用来实现此目的的代码:

for (j in 1:nrow(studies)) { 
    studies$m_enroll[j] <- sum(rpois(studies$Sites[j],studies$enroll_rate[j]))
    }

这可以完成这项工作,但鉴于数据框是数百行而且我正在进行数万次这样的模拟,这是非常低效的。

我觉得有一种方法可以使用其中一种应用功能,但我对它们的体验是有限的。有什么想法吗?

1 个答案:

答案 0 :(得分:2)

studies <- studies[rep(1:6,3000),]
system.time(for (j in 1:nrow(studies)){studies$m_enroll[j] <-     
                sum(rpois(studies$Sites[j],studies$enroll_rate[j]))})
   user  system elapsed 
 105.74    0.00  106.30 
system.time(test <- sapply(1:nrow(studies),function(x) 
                    sum(rpois(studies$Sites[x],studies$enroll_rate[x]))))
   user  system elapsed 
   0.36    0.00    0.36