chargement libraire

library(nycflights13)
library(dplyr)
## 
## Attachement du package : 'dplyr'
## Les objets suivants sont masqués depuis 'package:stats':
## 
##     filter, lag
## Les objets suivants sont masqués depuis 'package:base':
## 
##     intersect, setdiff, setequal, union
#data(flights)
#data(airports)
#data(airlines)

Exercice page 15

Extraire les colonnes (variables) lat et lon de la table airports.

lat_lon<-airports%>%select("lat","lon")

Renommer ces dernières colonnes (variables) en longitude et latitude.

lat_lon%>%rename('latitude'='lat','longitude' = 'lon')
## # A tibble: 1,458 × 2
##    latitude longitude
##       <dbl>     <dbl>
##  1     41.1     -80.6
##  2     32.5     -85.7
##  3     42.0     -88.1
##  4     41.4     -74.4
##  5     31.1     -81.4
##  6     36.4     -82.2
##  7     41.5     -84.5
##  8     42.9     -76.8
##  9     39.8     -76.6
## 10     48.1    -123. 
## # ℹ 1,448 more rows

Selectionner les colonnes (variables) entre year et day de la table flights.

flights%>%select('year':'day')
## # A tibble: 336,776 × 3
##     year month   day
##    <int> <int> <int>
##  1  2013     1     1
##  2  2013     1     1
##  3  2013     1     1
##  4  2013     1     1
##  5  2013     1     1
##  6  2013     1     1
##  7  2013     1     1
##  8  2013     1     1
##  9  2013     1     1
## 10  2013     1     1
## # ℹ 336,766 more rows

Sélectionner les noms de colonnes (variables) commençant par dep_.

flights%>%select(., starts_with('dep_'))
## # A tibble: 336,776 × 2
##    dep_time dep_delay
##       <int>     <dbl>
##  1      517         2
##  2      533         4
##  3      542         2
##  4      544        -1
##  5      554        -6
##  6      554        -4
##  7      555        -5
##  8      557        -3
##  9      557        -3
## 10      558        -2
## # ℹ 336,766 more rows

Sélectionner et Renommer uniquement les colonnes dep_delay par “retard départ”, arr_delay par “retard arrivée”

retards<-flights%>%select('dep_delay','arr_delay')%>%rename('retard départ' = 'dep_delay', 'retard arrivée' = 'arr_delay')
retards
## # A tibble: 336,776 × 2
##    `retard départ` `retard arrivée`
##              <dbl>            <dbl>
##  1               2               11
##  2               4               20
##  3               2               33
##  4              -1              -18
##  5              -6              -25
##  6              -4               12
##  7              -5               19
##  8              -3              -14
##  9              -3               -8
## 10              -2                8
## # ℹ 336,766 more rows

Exercice page 22

Trier la table flights selon le retard au départ dep_delay croissant et selon le mois month.

flights%>%arrange(dep_delay, month)
## # A tibble: 336,776 × 19
##     year month   day dep_time sched_dep_time dep_delay arr_time sched_arr_time
##    <int> <int> <int>    <int>          <int>     <dbl>    <int>          <int>
##  1  2013    12     7     2040           2123       -43       40           2352
##  2  2013     2     3     2022           2055       -33     2240           2338
##  3  2013    11    10     1408           1440       -32     1549           1559
##  4  2013     1    11     1900           1930       -30     2233           2243
##  5  2013     1    29     1703           1730       -27     1947           1957
##  6  2013     8     9      729            755       -26     1002            955
##  7  2013     3    30     2030           2055       -25     2213           2250
##  8  2013    10    23     1907           1932       -25     2143           2143
##  9  2013     3     2     1431           1455       -24     1601           1631
## 10  2013     5     5      934            958       -24     1225           1309
## # ℹ 336,766 more rows
## # ℹ 11 more variables: arr_delay <dbl>, carrier <chr>, flight <int>,
## #   tailnum <chr>, origin <chr>, dest <chr>, air_time <dbl>, distance <dbl>,
## #   hour <dbl>, minute <dbl>, time_hour <dttm>

Sélectionner les trois vols ayant eu le moins de retard :

flights%>%arrange(dep_delay, month)%>%slice_head(n=3)
## # A tibble: 3 × 19
##    year month   day dep_time sched_dep_time dep_delay arr_time sched_arr_time
##   <int> <int> <int>    <int>          <int>     <dbl>    <int>          <int>
## 1  2013    12     7     2040           2123       -43       40           2352
## 2  2013     2     3     2022           2055       -33     2240           2338
## 3  2013    11    10     1408           1440       -32     1549           1559
## # ℹ 11 more variables: arr_delay <dbl>, carrier <chr>, flight <int>,
## #   tailnum <chr>, origin <chr>, dest <chr>, air_time <dbl>, distance <dbl>,
## #   hour <dbl>, minute <dbl>, time_hour <dttm>

Exercice page 31

Dans la table flights, convertir la durée air_time (exprimée en minutes) en heures dans une nouvelle variable nommée duree_h.

flights <- flights%>%mutate(duree_h = air_time / 60)
flights
## # A tibble: 336,776 × 20
##     year month   day dep_time sched_dep_time dep_delay arr_time sched_arr_time
##    <int> <int> <int>    <int>          <int>     <dbl>    <int>          <int>
##  1  2013     1     1      517            515         2      830            819
##  2  2013     1     1      533            529         4      850            830
##  3  2013     1     1      542            540         2      923            850
##  4  2013     1     1      544            545        -1     1004           1022
##  5  2013     1     1      554            600        -6      812            837
##  6  2013     1     1      554            558        -4      740            728
##  7  2013     1     1      555            600        -5      913            854
##  8  2013     1     1      557            600        -3      709            723
##  9  2013     1     1      557            600        -3      838            846
## 10  2013     1     1      558            600        -2      753            745
## # ℹ 336,766 more rows
## # ℹ 12 more variables: arr_delay <dbl>, carrier <chr>, flight <int>,
## #   tailnum <chr>, origin <chr>, dest <chr>, air_time <dbl>, distance <dbl>,
## #   hour <dbl>, minute <dbl>, time_hour <dttm>, duree_h <dbl>

De même convertir la distance distance () en kilomètres dans une nouvelle variable nommée distance_km

flights<-flights%>%mutate(distance_km=distance*1.609)
flights%>%select(distance_km)
## # A tibble: 336,776 × 1
##    distance_km
##          <dbl>
##  1       2253.
##  2       2278.
##  3       1752.
##  4       2536.
##  5       1226.
##  6       1157.
##  7       1714.
##  8        368.
##  9       1519.
## 10       1179.
## # ℹ 336,766 more rows

Créer une nouvelle colonne pour calculer la vitesse en km/h nommée vitesse et effectuez un arrangement des valeurs de cette vitesse par ordre decroissant.

flights<-flights%>%mutate(vitesse = distance_km / duree_h)%>%arrange(desc(vitesse))
flights
## # A tibble: 336,776 × 22
##     year month   day dep_time sched_dep_time dep_delay arr_time sched_arr_time
##    <int> <int> <int>    <int>          <int>     <dbl>    <int>          <int>
##  1  2013     5    25     1709           1700         9     1923           1937
##  2  2013     7     2     1558           1513        45     1745           1719
##  3  2013     5    13     2040           2025        15     2225           2226
##  4  2013     3    23     1914           1910         4     2045           2043
##  5  2013     1    12     1559           1600        -1     1849           1917
##  6  2013    11    17      650            655        -5     1059           1150
##  7  2013     2    21     2355           2358        -3      412            438
##  8  2013    11    17      759            800        -1     1212           1255
##  9  2013    11    16     2003           1925        38       17             36
## 10  2013    11    16     2349           2359       -10      402            440
## # ℹ 336,766 more rows
## # ℹ 14 more variables: arr_delay <dbl>, carrier <chr>, flight <int>,
## #   tailnum <chr>, origin <chr>, dest <chr>, air_time <dbl>, distance <dbl>,
## #   hour <dbl>, minute <dbl>, time_hour <dttm>, duree_h <dbl>,
## #   distance_km <dbl>, vitesse <dbl>

Sélectionner les vols du mois de janvier avec un retard au départ (variable dep_delay) supérieur à 10 minutes et inférieur à 15 min de deux manières différentes

# solution 1
vols_janvier1 <- flights%>%filter(month==1, dep_delay>10, dep_delay<15)

#solution 2
vols_janvier2 <- flights%>%
  filter(month==1)%>%
  filter(dep_delay>10)%>%
  filter(dep_delay<15)

Transformer la variable year en caractère et conforter day en variable numérique

flights%>%mutate(year = as.character(year), day=as.numeric(day))
## # A tibble: 336,776 × 22
##    year  month   day dep_time sched_dep_time dep_delay arr_time sched_arr_time
##    <chr> <int> <dbl>    <int>          <int>     <dbl>    <int>          <int>
##  1 2013      5    25     1709           1700         9     1923           1937
##  2 2013      7     2     1558           1513        45     1745           1719
##  3 2013      5    13     2040           2025        15     2225           2226
##  4 2013      3    23     1914           1910         4     2045           2043
##  5 2013      1    12     1559           1600        -1     1849           1917
##  6 2013     11    17      650            655        -5     1059           1150
##  7 2013      2    21     2355           2358        -3      412            438
##  8 2013     11    17      759            800        -1     1212           1255
##  9 2013     11    16     2003           1925        38       17             36
## 10 2013     11    16     2349           2359       -10      402            440
## # ℹ 336,766 more rows
## # ℹ 14 more variables: arr_delay <dbl>, carrier <chr>, flight <int>,
## #   tailnum <chr>, origin <chr>, dest <chr>, air_time <dbl>, distance <dbl>,
## #   hour <dbl>, minute <dbl>, time_hour <dttm>, duree_h <dbl>,
## #   distance_km <dbl>, vitesse <dbl>

Sélectionner la colonne destination dest nommée LAX et les variables retard au départ dep_delay et à l’arrivée arr_delay. Arranger en même temps la variable retard au départ dep_delay par odre décroissant ou dans un second temps.

flights%>%select('dest', 'dep_delay', 'arr_delay')%>%
  filter(dest=='LAX')%>%
  arrange(desc(dep_delay))
## # A tibble: 16,174 × 3
##    dest  dep_delay arr_delay
##    <chr>     <dbl>     <dbl>
##  1 LAX         800       784
##  2 LAX         634        NA
##  3 LAX         434       408
##  4 LAX         413       420
##  5 LAX         392       404
##  6 LAX         392       362
##  7 LAX         364       373
##  8 LAX         362       316
##  9 LAX         345       319
## 10 LAX         343       313
## # ℹ 16,164 more rows

Exercice page 40

Calculer le retard au départ maximum et minimum pour chaque mois ou pour chaque destination.

# Avec les mois
flights%>%group_by(month)%>%
  summarise(max_delay = max(dep_delay, na.rm = T), min_delay = min(dep_delay, na.rm=T))
## # A tibble: 12 × 3
##    month max_delay min_delay
##    <int>     <dbl>     <dbl>
##  1     1      1301       -30
##  2     2       853       -33
##  3     3       911       -25
##  4     4       960       -21
##  5     5       878       -24
##  6     6      1137       -21
##  7     7      1005       -22
##  8     8       520       -26
##  9     9      1014       -24
## 10    10       702       -25
## 11    11       798       -32
## 12    12       896       -43
# Avec la destination
flights%>%group_by(dest)%>%
  summarise(max_delay = max(dep_delay, na.rm = T), min_delay = min(dep_delay, na.rm=T))
## Warning: There were 2 warnings in `summarise()`.
## The first warning was:
## ℹ In argument: `max_delay = max(dep_delay, na.rm = T)`.
## ℹ In group 52: `dest = "LGA"`.
## Caused by warning in `max()`:
## ! aucun argument pour max ; -Inf est renvoyé
## ℹ Run `dplyr::last_dplyr_warnings()` to see the 1 remaining warning.
## # A tibble: 105 × 3
##    dest  max_delay min_delay
##    <chr>     <dbl>     <dbl>
##  1 ABQ         142       -12
##  2 ACK         219       -13
##  3 ALB         323       -14
##  4 ANC          75        -2
##  5 ATL         898       -23
##  6 AUS         351       -14
##  7 AVL         222       -13
##  8 BDL         252       -15
##  9 BGR         248       -16
## 10 BHM         325       -13
## # ℹ 95 more rows

Compter le nombre de lignes par destination.

flights%>%
  count(dest)
## # A tibble: 105 × 2
##    dest      n
##    <chr> <int>
##  1 ABQ     254
##  2 ACK     265
##  3 ALB     439
##  4 ANC       8
##  5 ATL   17215
##  6 AUS    2439
##  7 AVL     275
##  8 BDL     443
##  9 BGR     375
## 10 BHM     297
## # ℹ 95 more rows

Compter le nombre de vols por aéroport de départ origin et aéroport d’arrivée dest.

flights%>%count(origin, dest)
## # A tibble: 224 × 3
##    origin dest      n
##    <chr>  <chr> <int>
##  1 EWR    ALB     439
##  2 EWR    ANC       8
##  3 EWR    ATL    5022
##  4 EWR    AUS     968
##  5 EWR    AVL     265
##  6 EWR    BDL     443
##  7 EWR    BNA    2336
##  8 EWR    BOS    5327
##  9 EWR    BQN     297
## 10 EWR    BTV     931
## # ℹ 214 more rows
# par ordre décroissant
flights%>%count(origin, dest)%>%arrange(desc(n))
## # A tibble: 224 × 3
##    origin dest      n
##    <chr>  <chr> <int>
##  1 JFK    LAX   11262
##  2 LGA    ATL   10263
##  3 LGA    ORD    8857
##  4 JFK    SFO    8204
##  5 LGA    CLT    6168
##  6 EWR    ORD    6100
##  7 JFK    BOS    5898
##  8 LGA    MIA    5781
##  9 JFK    MCO    5464
## 10 EWR    BOS    5327
## # ℹ 214 more rows

Exercice page 47

Recoder les modalités BOS par Boston, LAX par Los Angeles et ANC par Anchorage de la base de données flights

flights%>%mutate(dest = case_when(
  dest=="BOS"~"BOSTON",
  dest=="LAX"~"Los Angeles",
  dest=="ANC"~" Anchorage",
  TRUE~dest
))
## # A tibble: 336,776 × 22
##     year month   day dep_time sched_dep_time dep_delay arr_time sched_arr_time
##    <int> <int> <int>    <int>          <int>     <dbl>    <int>          <int>
##  1  2013     5    25     1709           1700         9     1923           1937
##  2  2013     7     2     1558           1513        45     1745           1719
##  3  2013     5    13     2040           2025        15     2225           2226
##  4  2013     3    23     1914           1910         4     2045           2043
##  5  2013     1    12     1559           1600        -1     1849           1917
##  6  2013    11    17      650            655        -5     1059           1150
##  7  2013     2    21     2355           2358        -3      412            438
##  8  2013    11    17      759            800        -1     1212           1255
##  9  2013    11    16     2003           1925        38       17             36
## 10  2013    11    16     2349           2359       -10      402            440
## # ℹ 336,766 more rows
## # ℹ 14 more variables: arr_delay <dbl>, carrier <chr>, flight <int>,
## #   tailnum <chr>, origin <chr>, dest <chr>, air_time <dbl>, distance <dbl>,
## #   hour <dbl>, minute <dbl>, time_hour <dttm>, duree_h <dbl>,
## #   distance_km <dbl>, vitesse <dbl>

Exercice page 55

Créer un DataFrame de la figure Figure pour Exercice et réaliser l’opération de suppression du NA (en ligne) et en aussi en colonnes.

Figure <- data.frame(One = c(0,1,2,NA), Two = c(2,3,0,1))
Figure
##   One Two
## 1   0   2
## 2   1   3
## 3   2   0
## 4  NA   1
# lignes
na.omit(Figure)
##   One Two
## 1   0   2
## 2   1   3
## 3   2   0
# colonnes
Figure[complete.cases(Figure[, c('One')]),]
##   One Two
## 1   0   2
## 2   1   3
## 3   2   0

Remplacer le NA (initial de la première colonne one) par la moyenne des autres valeurs de cette colonne

Figure <- Figure%>%mutate(One = ifelse(is.na(One), mean(One, na.rm=T),One))

Retourner la Data avec les NA supprimées

Figure
##   One Two
## 1   0   2
## 2   1   3
## 3   2   0
## 4   1   1