2014-10-03 80 views
1

我正在尝试查找每个ICPSR的主题比例。数据看起来像这样。使用ddply计算比例

  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)))。但是这并没有找到我想要的结果。

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

回答

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