使用ddply计算比例

时间:2014-10-03 12:20:52

标签: r plyr

我正在尝试为每个ICPSR找到主题比例。数据看起来像这样。

           ICPSR       date day     month year mention topic
   169538 15444 2009-06-02   2      June 2009       1    18
   169544 15444 2010-03-02   2     March 2010       1    20
   169581 15444 2010-09-30  30 September 2010       1    18
   169609 15444 2009-06-03   3      June 2009       1     1
   169729 20909 2009-11-17  17  November 2009       1     9
   169791 29317 2009-03-13  13     March 2009       1    13

我试图找到:对于每个ICPSR,每个主题的比例是多少。 为了显示我想要的输出,它看起来像是跟随。

     ICPSR  topic.1 topic.9 topic.13 topic.18 topic.20  
   1 15444   0.25      0        0       0.5      0.25
   2 20909    0        1        0        0        0
   3 29317    0        0        1        0        0

我试图使用ddply,例如: ddply(c.analyze1, c("ICPSR"), summarize, sum(mention)))/ddply(c.analyze1, c("ICPSR","topic"), summarize, sum(mention)))。但这并没有找到我想要的输出。

我希望能有任何命令或代码建议。谢谢!

1 个答案:

答案 0 :(得分:2)

你真的不需要ddply。您可以使用prop.table

如果df是您的数据,

prop.table(table(df$ICPSR, df$topic), 1)
#       
#           1    9   13   18   20
#  15444 0.25 0.00 0.00 0.50 0.25
#  20909 0.00 1.00 0.00 0.00 0.00
#  29317 0.00 0.00 1.00 0.00 0.00