16.3 Další užitečné funkce z balíku dplyr

Balík dplyr obsahuje opravdu velmi mnoho funkcí, které pracují nad jednou tabulkou. V této kapitole je představen lehký výběr těch, které se v praxi datové analýzy používají opravdu často.

Funkce distinct() je ekvivalentem unique() – vrací tabulku, která obsahuje pouze unikátní pozorování. V případě shody více řádků zachovává v nové tabulce první z nich. Proti unique() je rychlejší a hlavně umožňuje specifikovat sloupce, podle kterých se má unikátnost pozorování posuzovat:

planes %>% 
    distinct(manufacturer, type)
## # A tibble: 37 × 2
##    type                     manufacturer        
##    <chr>                    <chr>               
##  1 Fixed wing multi engine  EMBRAER             
##  2 Fixed wing multi engine  AIRBUS INDUSTRIE    
##  3 Fixed wing multi engine  BOEING              
##  4 Fixed wing multi engine  AIRBUS              
##  5 Fixed wing multi engine  BOMBARDIER INC      
##  6 Fixed wing single engine CESSNA              
##  7 Fixed wing multi engine  CESSNA              
##  8 Fixed wing single engine JOHN G HESS         
##  9 Fixed wing multi engine  GULFSTREAM AEROSPACE
## 10 Rotorcraft               SIKORSKY            
## # … with 27 more rows

V základním nastavení je výstupní tabulka omezena pouze na proměnné, které byly použity k posouzení unikátnosti. Toto chování se dá změnit pomocí parametru .keep_all:

planes %>% 
    distinct(manufacturer, type, .keep_all = TRUE)
## # A tibble: 37 × 9
##    tailnum  year type        manufacturer    model  engines seats speed engine  
##    <chr>   <int> <chr>       <chr>           <chr>    <int> <int> <int> <chr>   
##  1 N10156   2004 Fixed wing… EMBRAER         EMB-1…       2    55    NA Turbo-f…
##  2 N102UW   1998 Fixed wing… AIRBUS INDUSTR… A320-…       2   182    NA Turbo-f…
##  3 N11206   2000 Fixed wing… BOEING          737-8…       2   149    NA Turbo-f…
##  4 N125UW   2009 Fixed wing… AIRBUS          A320-…       2   182    NA Turbo-f…
##  5 N131EV   2009 Fixed wing… BOMBARDIER INC  CL-60…       2    95    NA Turbo-f…
##  6 N201AA   1959 Fixed wing… CESSNA          150          1     2    90 Recipro…
##  7 N202AA   1980 Fixed wing… CESSNA          421C         2     8    90 Recipro…
##  8 N315AT     NA Fixed wing… JOHN G HESS     AT-5         1     2    NA 4 Cycle 
##  9 N344AA   1992 Fixed wing… GULFSTREAM AER… G-IV         2    22    NA Turbo-f…
## 10 N347AA   1985 Rotorcraft  SIKORSKY        S-76A        2    14    NA Turbo-s…
## # … with 27 more rows

Užitečnou funkcí je řazení pozorování. To má v dplyr na starosti funkce arrange(). arrange() přijímá jako parametry vstupní tabulku a jména sloupců, podle kterých má tabulku seřadit:

planes %>% 
    arrange(manufacturer,engines)
## # A tibble: 3,322 × 9
##    tailnum  year type           manufacturer model  engines seats speed engine  
##    <chr>   <int> <chr>          <chr>        <chr>    <int> <int> <int> <chr>   
##  1 N365AA   2001 Rotorcraft     AGUSTA SPA   A109E        2     8    NA Turbo-s…
##  2 N125UW   2009 Fixed wing mu… AIRBUS       A320-…       2   182    NA Turbo-f…
##  3 N126UW   2009 Fixed wing mu… AIRBUS       A320-…       2   182    NA Turbo-f…
##  4 N127UW   2010 Fixed wing mu… AIRBUS       A320-…       2   182    NA Turbo-f…
##  5 N128UW   2010 Fixed wing mu… AIRBUS       A320-…       2   182    NA Turbo-f…
##  6 N150UW   2013 Fixed wing mu… AIRBUS       A321-…       2   199    NA Turbo-f…
##  7 N151UW   2013 Fixed wing mu… AIRBUS       A321-…       2   199    NA Turbo-f…
##  8 N152UW   2013 Fixed wing mu… AIRBUS       A321-…       2   199    NA Turbo-f…
##  9 N153UW   2013 Fixed wing mu… AIRBUS       A321-…       2   199    NA Turbo-f…
## 10 N154UW   2013 Fixed wing mu… AIRBUS       A321-…       2   199    NA Turbo-f…
## # … with 3,312 more rows

arrange() nejprve řadí tabulku podle první zadaného sloupce, následně podle druhého, atp. Směr řazení je možné změnit pomocí speciální funkce desc():

planes %>% 
    arrange(desc(manufacturer),engines)
## # A tibble: 3,322 × 9
##    tailnum  year type        manufacturer    model  engines seats speed engine  
##    <chr>   <int> <chr>       <chr>           <chr>    <int> <int> <int> <chr>   
##  1 N397AA   1985 Fixed wing… STEWART MACO    FALCO…       1     2    NA Recipro…
##  2 N521AA     NA Fixed wing… STEWART MACO    FALCO…       1     2    NA Recipro…
##  3 N347AA   1985 Rotorcraft  SIKORSKY        S-76A        2    14    NA Turbo-s…
##  4 N537JB   2012 Rotorcraft  ROBINSON HELIC… R66          1     5    NA Turbo-s…
##  5 N376AA   1978 Fixed wing… PIPER           PA-32…       1     7    NA Recipro…
##  6 N425AA   1968 Fixed wing… PIPER           PA-28…       1     4   107 Recipro…
##  7 N545AA   1976 Fixed wing… PIPER           PA-32…       1     7   126 Recipro…
##  8 N350AA   1980 Fixed wing… PIPER           PA-31…       2     8   162 Recipro…
##  9 N525AA   1980 Fixed wing… PIPER           PA-31…       2     8   162 Recipro…
## 10 N377AA     NA Fixed wing… PAIR MIKE E     FALCO…       1     2    NA Recipro…
## # … with 3,312 more rows