计算 R 子组内的百分比
Calculate percentage within a subgroup in R
我是 R 的新手,我正在努力计算数据框中某些观察值的百分比。我的数据框来自具有许多行和列的 excel table。因此,我首先需要为我需要的信息创建一个查询。我使用以下代码来执行此操作:
am2 %>%
group_by(country) %>%
count(motif)
输出如下所示:
country motif number
------------------------------------------------
Portugal architectural elements 26
Portugal blossom 3
Portugal crescent moon 28
Portugal crosses 5
Portugal floral 3
Spain four-legged animal 14
Spain herringbone 2
Spain horseman 2
Sweden human 1
Sweden inscription 147
Sweden spiral 44
我还从原始数据框中计算了每个国家/地区的观察总数,如下所示:
am2 %>%
group_by(country) %>%
summarize("Number of Observations" = n())
这是输出:
country total number motifs
----------------------------------------
Portugal 536
Spain 2110
Sweden 300
现在我想计算每个国家/地区每个主题的频率。如果我用手做,那就是例如在葡萄牙出现的主题“建筑元素”的数量:
26/536*100
因此,每当国家/地区发生变化时,图案的总数以及百分比计算都会发生变化。我不知道如何使这个过程自动化。谁能帮我这个?
谢谢!
您首先按国家/地区分组以获得每个国家/地区的总和。然后你按国家和动机分组,并使用每个国家的总和来计算你的频率。
am2 %>%
group_by(country) %>%
mutate(sum_country = sum(number)) %>%
group_by(country, motif) %>%
mutate(freq = number/sum_country,
freq_perc = freq*100 %>% round(2))
ggplot2
示例:
df <- am2 %>%
group_by(country) %>%
mutate(sum_country = sum(number)) %>%
group_by(country, motif) %>%
mutate(freq = number/sum_country,
freq_perc = freq*100 %>% round(2))
library(ggplot2)
df %>%
ggplot( aes(x=country, y=freq_perc, fill=motif)) +
geom_bar(stat="identity", position="dodge")
我是 R 的新手,我正在努力计算数据框中某些观察值的百分比。我的数据框来自具有许多行和列的 excel table。因此,我首先需要为我需要的信息创建一个查询。我使用以下代码来执行此操作:
am2 %>%
group_by(country) %>%
count(motif)
输出如下所示:
country motif number
------------------------------------------------
Portugal architectural elements 26
Portugal blossom 3
Portugal crescent moon 28
Portugal crosses 5
Portugal floral 3
Spain four-legged animal 14
Spain herringbone 2
Spain horseman 2
Sweden human 1
Sweden inscription 147
Sweden spiral 44
我还从原始数据框中计算了每个国家/地区的观察总数,如下所示:
am2 %>%
group_by(country) %>%
summarize("Number of Observations" = n())
这是输出:
country total number motifs
----------------------------------------
Portugal 536
Spain 2110
Sweden 300
现在我想计算每个国家/地区每个主题的频率。如果我用手做,那就是例如在葡萄牙出现的主题“建筑元素”的数量:
26/536*100
因此,每当国家/地区发生变化时,图案的总数以及百分比计算都会发生变化。我不知道如何使这个过程自动化。谁能帮我这个? 谢谢!
您首先按国家/地区分组以获得每个国家/地区的总和。然后你按国家和动机分组,并使用每个国家的总和来计算你的频率。
am2 %>%
group_by(country) %>%
mutate(sum_country = sum(number)) %>%
group_by(country, motif) %>%
mutate(freq = number/sum_country,
freq_perc = freq*100 %>% round(2))
ggplot2
示例:
df <- am2 %>%
group_by(country) %>%
mutate(sum_country = sum(number)) %>%
group_by(country, motif) %>%
mutate(freq = number/sum_country,
freq_perc = freq*100 %>% round(2))
library(ggplot2)
df %>%
ggplot( aes(x=country, y=freq_perc, fill=motif)) +
geom_bar(stat="identity", position="dodge")