【问题标题】: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))
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-07-07
        • 1970-01-01
        • 2019-12-13
        • 1970-01-01
        • 2018-12-13
        • 1970-01-01
        • 2021-12-26
        • 1970-01-01
        相关资源
        最近更新 更多