如何在分组数据框中创建一列百分比?

How to create a column of percentages within a grouped dataframe?

我使用下面的代码创建了一个频率 table,DF。但是,我还想在 table 中创建一个 percentages/proportions 列,以查看每个键的每个函数的 percentage/proportion。我不确定如何调整我的代码来执行此操作。任何建议和帮助将不胜感激!

  gather(key = 'key', value = 'freq', -Function) %>%
  mutate(freq = as.numeric(freq)) %>% 
  group_by(Function, key) %>% 
  summarise(freq=sum(freq)) ``` 

如果我对你的问题的理解正确,你可以继续按键分组并计算 percentage/proportion

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))

尝试使用这个:

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,所以数据仍然分组key 在 (1)。