我正在尝试计算变量中的因子百分比,并且希望以其他变量为条件来确定该百分比。
例如,我有这样的数据。
State Ideology
CO Liberal
CO Liberal
CO Liberal
CO Conservative
CO Conservative
CO Independent
DC Independent
DC Conservative
DC Liberal
我试图在每个州找到每个自由党,保守派和独立党的百分比。
我尝试使用像
这样的ddplyliberal_per<-ddply(data,.(State), summarize,total=table(Ideology)[1]/sum(Ideology))
但它不起作用。我应该如何找到国家给出的每个因素的百分比?
谢谢!
答案 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