【问题标题】:How to create a column of percentages within a grouped dataframe?如何在分组数据框中创建一列百分比?
【发布时间】:2020-11-10 07:04:42
【问题描述】:
我使用下面的代码创建了一个频率表 DF。但是,我还想在表中创建一列百分比/比例,以查看每个键的每个功能的百分比/比例。我不确定如何调整我的代码来做到这一点。任何建议和帮助将不胜感激!
gather(key = 'key', value = 'freq', -Function) %>%
mutate(freq = as.numeric(freq)) %>%
group_by(Function, key) %>%
summarise(freq=sum(freq)) ```
【问题讨论】:
标签:
r
dataframe
group-by
percentage
【解决方案1】:
试试这个:
library(dplyr)
df %>%
tidyr::gather(key = 'key', value = 'freq', -Function) %>%
mutate(freq = as.numeric(freq)) %>%
group_by(key, Function) %>%
summarise(freq=sum(freq)) %>% #..... (1)
mutate(freq = freq/sum(freq))
请注意-
-
gather 已停用,因此请改用 pivot_longer。
- 上述工作没有明确地按
key 分组,因为当您在(1) 处执行summarise 时,只会删除最后一级分组,即Function,因此数据仍按(1) 处的key 分组。
【解决方案2】:
如果我正确理解了您的问题,您可以继续按键分组并计算百分比/比例
gather(key = 'key', value = 'freq', -Function) %>%
mutate(freq = as.numeric(freq)) %>%
group_by(Function, key) %>%
summarise(freq = sum(freq)) %>%
group_by(key) %>%
mutate(prop = freq / sum(freq))