表中列的百分比

时间:2012-11-22 02:57:17

标签: r

我正在尝试在R中制作一些条形图。这是我到目前为止所做的:enter image description here

对于这个特定的图表,对我来说每个浏览器有多少响应并不重要,我只想知道哪个百分比是肯定的,哪个百分比是每个浏览器的否。

如何将我正在使用的表转换为使用'列的百分比'而不是结果数?有没有办法用列的总和转换每列? (我对R很新)谢谢!

修改:抱歉缺少信息。我没有安装任何额外的软件包,只是在Ubuntu上安装了r-base(今天早上安装)。这是dput的输出:

structure(c(11L, 32L, 3L, 4L, 1L, 0L, 1L, 1L), .Dim = c(2L, 4L
), .Dimnames = structure(list(c("No", "Yes"), c("Chrome", "Firefox", 
"Internet Explorer", "Safari")), .Names = c("", "")), class = "table")

编辑2:我发现这个功能似乎做了我想要的但是我不确定它为什么会起作用。

prop.table(mymat, margin=2)*100

2 个答案:

答案 0 :(得分:2)

您可以计算百分比并绘制它吗?

百分比=是/总投票,data['Yes', ]选择“是”列,colSums计算每列的总数,因此:

barplot( data['Yes', ]/colSums(data) )

enter image description here

这是你的意思吗?

答案 1 :(得分:2)

假设有两个级别

barplot(x / rep(apply(x, 2, sum),each=2))

img http://i50.tinypic.com/16bzr89.png

> apply(x,2,sum)
       Chrome           Firefox Internet Explorer            Safari 
           43                 7                 1                 2 

这是列的边距。它给出了列的总和。现在,如果我们想要将X除以这些值,它必须按照正确的顺序排列。数据按列主要顺序排列,因此当用作除法向量时,apply(x,2,sum)将回收错误的元素 - 如果愿意,可以转置。

each=2命令中设置rep会将apply调用结果的一个元素应用于每列(通过复制元素)。因此假设级别数为2。

对于更通用的解决方案,您可以使用each=nrows(x)