2016-11-29 170 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))