使用for循环汇总矩阵中的数据

时间:2014-10-13 10:11:28

标签: r

我有以下数据矩阵叫做 joint 。值(o,1)是3个伯努埃尔试验的结果。每个试验的概率都存储在" prob"。

栏中
    > joint
     z1 z2 z3    prob
[1,]  0  0  0 0.09375
[2,]  1  0  0 0.03125
[3,]  0  1  0 0.09375
[4,]  0  0  1 0.28125
[5,]  1  1  0 0.03125
[6,]  0  1  1 0.28125
[7,]  1  0  1 0.09375
[8,]  1  1  1 0.09375

我需要的是计算每个值的概率密度(PDF)(这是:0,1,2和3)并将它们存储在以下矩阵中的pdf列中,该矩阵称为 sumpdf

    > sumpdf
     sum pdf cdf
[1,]   0   0   0
[2,]   1   0   0
[3,]   2   0   0
[4,]   3   0   0

实际上我可以总结每个值的概率,但我正在寻找一种优雅的方法来解决问题(例如使用for-或apply-function) - 到目前为止没有成功; - (

1 个答案:

答案 0 :(得分:1)

尝试

d$sum <- d$z1 + d$z2 + d$z3
sumpdf <- aggregate(d$prob, by = list(sum = d$sum), FUN = sum)
names(sumpdf)[2] <- "pdf"
sumpdf$cdf <- cumsum(sumpdf$pdf)
sumpdf
#  sum     pdf     cdf
#1   0 0.09375 0.09375
#2   1 0.40625 0.50000
#3   2 0.40625 0.90625
#4   3 0.09375 1.00000