我有一个示例数据框,如下所示。我无法提供真实的数据框,因为它是机密的:
Sex Country Voted
0 USA 0
0 USA 1
1 USA 1
1 USA 0
性别0 =男性,1 =女性
已投票0 =未投票,1 =已投票
我对数据框执行了以下操作:
df %>%
group_by(Sex, Country, Voted) %>%
summarise(n = n())
哪个给出以下(示例)输出:
Sex Country Voted N
0 USA 0 300
1 USA 0 200
0 USA 1 100
1 USA 1 400
0 UK 0 200
1 UK 0 300
0 UK 1 250
1 UK 1 250
我现在正在尝试计算相对百分比;目的是计算在[[每个国家中有多少[的人已投票(或未投票)。因此,例如,在美国,男性投票的百分比为100/400 = 25%,因为我们在美国共有400位男性。它不是100/1000(样本中来自美国的总人数),也不是100/2000(样本总数)。
最快的计算方法是什么?我尝试使用prop.table
,但它告诉我:Error in FUN(X[[i]], ...) :
only defined on a data frame with all numeric variables
[我不准备将Country
变量更改为数字,因为我在数据框中有50多个国家/地区(问题中此处显示的部分仅是示例)。
library(dplyr)
df %>%
group_by(Sex, Country, Voted) %>%
summarise(n = n()) %>%
mutate(n = n/sum(n))