2016-11-29 122 views
1

考虑dplyr查询以下dplyr GROUP_BY和过滤

> mpg %>% group_by(class) %>% summarise(n()) 

输出是

# A tibble: 7 x 2 
     class n() 
     <chr> <int> 
1 2seater  5 
2 compact 47 
3 midsize 41 
4 minivan 11 
5  pickup 33 
6 subcompact 35 
7  suv 62 

现在,我想如下筛选结果:

> mpg %>% group_by(class) %>% filter(hwy==21) %>% summarise(n()) 

也就是说,我想显示高速公路里程数为21的汽车班的数量。结果如下:

# A tibble: 2 x 2 
     class n() 
     <chr> <int> 
1 minivan  1 
2 subcompact  1 

这是预期的结果,但是我想看到的是所有的班级,如果班级没有高速公路里程数为21的车,那么应报告n() 0.我该怎么做?

换句话说,我希望dplyr查询,显示下面的输出:

# A tibble: 7 x 2 
     class n() 
     <chr> <int> 
1 2seater  0 
2 compact  0 
3 midsize  0 
4 minivan  1 
5  pickup  0 
6 subcompact  1 
7  suv  0 

,其中n()是多家汽车类具有21

高速公路里程这可能吗?

+0

转换'class'来考量,并在链接的答案适用于您的数据。 – Henrik

回答

0

试试这个

mpg %>% mutate(k=(hwy==21)) %>% group_by(class) %>% 
    summarise(n=sum(k))