我正在尝试计算一个变量中因子的百分比,并希望使该百分比以其他变量为条件。
例如,我有这样的数据。
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))
但它不起作用。我应该如何尝试找到州上给定的每个因素的百分比?
谢谢!
发布于 2014-07-23 03:15:18
因为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以获得百分比值。
发布于 2014-07-23 03:04:28
您可以将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
https://stackoverflow.com/questions/24901061
复制