在R中,我如何计算因子'不同变量给出的百分比?

时间:2014-07-23 02:51:29

标签: r percentage

我正在尝试计算变量中的因子百分比,并且希望以其他变量为条件来确定该百分比。

例如,我有这样的数据。

State Ideology
CO    Liberal
CO    Liberal
CO    Liberal
CO    Conservative
CO    Conservative
CO    Independent
DC    Independent
DC    Conservative
DC    Liberal

我试图在每个州找到每个自由党,保守派和独立党的百分比。

我尝试使用像

这样的ddply
liberal_per<-ddply(data,.(State), summarize,total=table(Ideology)[1]/sum(Ideology))

但它不起作用。我应该如何找到国家给出的每个因素的百分比?

谢谢!

2 个答案:

答案 0 :(得分:7)

由于State位于数据框的第一位,table会将其用作行ID。因此,您可以将table的结果除以行总和以获得比率,或者缩放为百分比。

表格:

> table(x)
     Ideology
State Conservative Independent Liberal
   CO            2           1       3
   DC            1           1       1

使用prop.table进行缩放,获取每状态值:

> prop.table(table(x), 1)
     Ideology
State Conservative Independent   Liberal
   CO    0.3333333   0.1666667 0.5000000
   DC    0.3333333   0.3333333 0.3333333

这相当于table(x)/rowSums(table(x))

如果需要,您可以乘以100得到百分比值。

答案 1 :(得分:1)

您可以将ddply代码修改为:

 ddply(data,.(State), 
    function(x) with(x,
      data.frame(100*round(table(Ideology)/length(Ideology),2))))

 #    State     Ideology Freq
 #1    CO Conservative   33
 #2    CO  Independent   17
 #3    CO      Liberal   50
 #4    DC Conservative   33
 #5    DC  Independent   33
 #6    DC      Liberal   33