使用dplyr按年计算比例

时间:2017-12-08 15:36:16

标签: r dplyr

我试图计算变量(在这种情况下是国家)在任何给定年份出现的频率。例如:

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)。任何意见都将不胜感激。

1 个答案:

答案 0 :(得分:5)

首先是年份和国家崩溃,然后是一年。例如

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