【问题标题】:Calculating proportion by year using dplyr使用 dplyr 按年份计算比例
【发布时间】:2017-12-08 15:36:16
【问题描述】:

我正在尝试计算变量(在本例中为国家/地区)在任何给定年份出现的频率。例如:

name <- c('AJ Griffin','Steve Bacon','Kevin Potatoe','Jose Hernandez','Kent Brockman',
                  'Sal Fasno','Kirk Kelly','Wes United','Livan Domingo','Mike Fast')

country <- c('USA', 'USA', 'Canada', 'Dominican Republic', 'Panama', 'Dominican Republic', 'Canada', 'USA', 'Dominican Republic', 'Mexico') 

year <- c('2016', '2016', '2016', '2016', '2016', '2015', '2015', '2015', '2015', '2015') 

country_analysis <-data.frame(name, country, year)

当我使用以下代码时,我得到了整个数据集的国家/地区比例,但我想将其进一步缩减到特定年份。

P <- country_analysis %>% 
  group_by(country) %>%     
  summarise(n=n())%>%
  mutate(freq = round(n / sum(n), 1))

理想情况下,最终结果应包含国家、年份、频率列(即 2016 年、美国、0.4)。任何意见将不胜感激。

【问题讨论】:

    标签: r dplyr


    【解决方案1】:

    首先按年份和国家/地区崩溃,然后按年份。例如

    country_analysis %>% 
      group_by(year, country) %>% 
      summarize(count=n()) %>% 
      mutate(proportion=count/sum(count))
    
    #     year            country count proportion
    #   <fctr>             <fctr> <int>      <dbl>
    # 1   2015             Canada     1        0.2
    # 2   2015 Dominican Republic     2        0.4
    # 3   2015             Mexico     1        0.2
    # 4   2015                USA     1        0.2
    # 5   2016             Canada     1        0.2
    # 6   2016 Dominican Republic     1        0.2
    # 7   2016             Panama     1        0.2
    # 8   2016                USA     2        0.4
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-04-13
      • 1970-01-01
      • 2018-07-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多