UNIVERSIDAD CENTRAL DEL ECUADOR

FACULTAD DE CIENCIAS ECONÓMICAS

INGENIERIA EN ESTADÍSTICA

APLICANDO CONOCIMIENTOS ADQUIRIDOS ACERCA DE COMANDOS

En este documento se presentan 27 ejercicios de aprendizaje sobre el uso de comandos, para la comunidad de RStudio.

AUTORES

COLABORACIÓN

EJERCICIOS

Utilizando la base de datos interna mtcars, resolver los siguientes enunciados:
head(mtcars)
##                    mpg cyl disp  hp drat    wt  qsec vs am gear carb
## Mazda RX4         21.0   6  160 110 3.90 2.620 16.46  0  1    4    4
## Mazda RX4 Wag     21.0   6  160 110 3.90 2.875 17.02  0  1    4    4
## Datsun 710        22.8   4  108  93 3.85 2.320 18.61  1  1    4    1
## Hornet 4 Drive    21.4   6  258 110 3.08 3.215 19.44  1  0    3    1
## Hornet Sportabout 18.7   8  360 175 3.15 3.440 17.02  0  0    3    2
## Valiant           18.1   6  225 105 2.76 3.460 20.22  1  0    3    1

EJERCICIO 1

- Seleccionamos las 3 primeras columnas del dataset mtcars y mostramos la cabecera.

library(tidyverse) 
## ── Attaching packages ─────────────────────────────────────── tidyverse 1.3.2 ──
## ✔ ggplot2 3.3.6     ✔ purrr   0.3.4
## ✔ tibble  3.1.7     ✔ dplyr   1.0.9
## ✔ tidyr   1.2.0     ✔ stringr 1.4.0
## ✔ readr   2.1.2     ✔ forcats 0.5.1
## ── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
## ✖ dplyr::filter() masks stats::filter()
## ✖ dplyr::lag()    masks stats::lag()
# Llamamos las librerias

head(select(mtcars, 1:3))
##                    mpg cyl disp
## Mazda RX4         21.0   6  160
## Mazda RX4 Wag     21.0   6  160
## Datsun 710        22.8   4  108
## Hornet 4 Drive    21.4   6  258
## Hornet Sportabout 18.7   8  360
## Valiant           18.1   6  225

EJERCICIO 2

- Utiliza la ayuda ?select_helpers para que observes el resultado.

# ?select_helpers

EJERCICIO 3

- Seleccionar las columnas que empiezan por d.

head(select(mtcars, starts_with("d")))
##                   disp drat
## Mazda RX4          160 3.90
## Mazda RX4 Wag      160 3.90
## Datsun 710         108 3.85
## Hornet 4 Drive     258 3.08
## Hornet Sportabout  360 3.15
## Valiant            225 2.76

EJERCICIO 4

- Seleccionar las columnas que terminan por p.

head(select(mtcars, ends_with("p")))
##                   disp  hp
## Mazda RX4          160 110
## Mazda RX4 Wag      160 110
## Datsun 710         108  93
## Hornet 4 Drive     258 110
## Hornet Sportabout  360 175
## Valiant            225 105

EJERCICIO 5

- head(select( mtcars, -drat, -am )) (Explica que resultado obtienes ?).

head(select( mtcars, -drat, -am ))
##                    mpg cyl disp  hp    wt  qsec vs gear carb
## Mazda RX4         21.0   6  160 110 2.620 16.46  0    4    4
## Mazda RX4 Wag     21.0   6  160 110 2.875 17.02  0    4    4
## Datsun 710        22.8   4  108  93 2.320 18.61  1    4    1
## Hornet 4 Drive    21.4   6  258 110 3.215 19.44  1    3    1
## Hornet Sportabout 18.7   8  360 175 3.440 17.02  0    3    2
## Valiant           18.1   6  225 105 3.460 20.22  1    3    1

EXPLICACIÓN

Seleccina todas las columnas de mtcars a excepción de drat y am ya que están con el signo menos y quiere decir que elimina esas columnas.

EJERCICIO 6

- head(select( mtcars, contains(“a”))) (Explica que resultado obtienes ?).

head(select( mtcars, contains("a")))
##                   drat am gear carb
## Mazda RX4         3.90  1    4    4
## Mazda RX4 Wag     3.90  1    4    4
## Datsun 710        3.85  1    4    1
## Hornet 4 Drive    3.08  0    3    1
## Hornet Sportabout 3.15  0    3    2
## Valiant           2.76  0    3    1

EXPLICACIÓN

Selecciona todas aquellas columnas que contienen una letra “a” en sus encabezados.

EJERCICIO 7

- head(filter( mtcars, mpg > 20, gear == 4)) (Explica que resultado obtienes ?).

head(filter(mtcars, mpg > 20, gear == 4))
##                mpg cyl  disp  hp drat    wt  qsec vs am gear carb
## Mazda RX4     21.0   6 160.0 110 3.90 2.620 16.46  0  1    4    4
## Mazda RX4 Wag 21.0   6 160.0 110 3.90 2.875 17.02  0  1    4    4
## Datsun 710    22.8   4 108.0  93 3.85 2.320 18.61  1  1    4    1
## Merc 240D     24.4   4 146.7  62 3.69 3.190 20.00  1  0    4    2
## Merc 230      22.8   4 140.8  95 3.92 3.150 22.90  1  0    4    2
## Fiat 128      32.4   4  78.7  66 4.08 2.200 19.47  1  1    4    1

EXPLICACIÓN

Selecciona todos los datos, siempre y cuando estas cumplan con que la columna mpg sea mayor a 20 y la columna gear sea igual a 4.

EJERCICIO 8

- Seleccionar los sujetos con tipo de transmisión (am) 1 que, además, tienen 6 cilindros o menos.

head(filter(mtcars, am == 1, cyl <= 6))
##                 mpg cyl  disp  hp drat    wt  qsec vs am gear carb
## Mazda RX4      21.0   6 160.0 110 3.90 2.620 16.46  0  1    4    4
## Mazda RX4 Wag  21.0   6 160.0 110 3.90 2.875 17.02  0  1    4    4
## Datsun 710     22.8   4 108.0  93 3.85 2.320 18.61  1  1    4    1
## Fiat 128       32.4   4  78.7  66 4.08 2.200 19.47  1  1    4    1
## Honda Civic    30.4   4  75.7  52 4.93 1.615 18.52  1  1    4    2
## Toyota Corolla 33.9   4  71.1  65 4.22 1.835 19.90  1  1    4    1

EJERCICIO 9

- Seleccionar los sujetos que bien consumen menos de 21 mpg o bien tienen menos de 3 carburantes (carb) y menos de 4 engranajes (gear).

head(filter(mtcars, (mpg < 21 | carb < 3) & gear < 4))
##                    mpg cyl  disp  hp drat    wt  qsec vs am gear carb
## Hornet 4 Drive    21.4   6 258.0 110 3.08 3.215 19.44  1  0    3    1
## Hornet Sportabout 18.7   8 360.0 175 3.15 3.440 17.02  0  0    3    2
## Valiant           18.1   6 225.0 105 2.76 3.460 20.22  1  0    3    1
## Duster 360        14.3   8 360.0 245 3.21 3.570 15.84  0  0    3    4
## Merc 450SE        16.4   8 275.8 180 3.07 4.070 17.40  0  0    3    3
## Merc 450SL        17.3   8 275.8 180 3.07 3.730 17.60  0  0    3    3

EJERCICIO 10

- Ordena por cilindrada (cyl) y por desplazamiento (disp).

head(select(mtcars, cyl, disp, everything()))
##                   cyl disp  mpg  hp drat    wt  qsec vs am gear carb
## Mazda RX4           6  160 21.0 110 3.90 2.620 16.46  0  1    4    4
## Mazda RX4 Wag       6  160 21.0 110 3.90 2.875 17.02  0  1    4    4
## Datsun 710          4  108 22.8  93 3.85 2.320 18.61  1  1    4    1
## Hornet 4 Drive      6  258 21.4 110 3.08 3.215 19.44  1  0    3    1
## Hornet Sportabout   8  360 18.7 175 3.15 3.440 17.02  0  0    3    2
## Valiant             6  225 18.1 105 2.76 3.460 20.22  1  0    3    1

EJERCICIO 11

- Crea una nueva columna que indique los kilogramos que pesa el coche, sabiendo que 1 libra = 0.45 kg.La variable wt indica el peso en libras.

mtcars$kg <- (mtcars$wt*0.45)
head(mtcars)
##                    mpg cyl disp  hp drat    wt  qsec vs am gear carb      kg
## Mazda RX4         21.0   6  160 110 3.90 2.620 16.46  0  1    4    4 1.17900
## Mazda RX4 Wag     21.0   6  160 110 3.90 2.875 17.02  0  1    4    4 1.29375
## Datsun 710        22.8   4  108  93 3.85 2.320 18.61  1  1    4    1 1.04400
## Hornet 4 Drive    21.4   6  258 110 3.08 3.215 19.44  1  0    3    1 1.44675
## Hornet Sportabout 18.7   8  360 175 3.15 3.440 17.02  0  0    3    2 1.54800
## Valiant           18.1   6  225 105 2.76 3.460 20.22  1  0    3    1 1.55700

EJERCICIO 12

- La función summarise() agrupa los valores en una tabla de acuerdo a la función que indiquemos. Calcula la media de disp usando la función summarise:

grupo_disp <- group_by(mtcars, disp)
grupo_disp
## # A tibble: 32 × 12
## # Groups:   disp [27]
##      mpg   cyl  disp    hp  drat    wt  qsec    vs    am  gear  carb    kg
##    <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
##  1  21       6  160    110  3.9   2.62  16.5     0     1     4     4  1.18
##  2  21       6  160    110  3.9   2.88  17.0     0     1     4     4  1.29
##  3  22.8     4  108     93  3.85  2.32  18.6     1     1     4     1  1.04
##  4  21.4     6  258    110  3.08  3.22  19.4     1     0     3     1  1.45
##  5  18.7     8  360    175  3.15  3.44  17.0     0     0     3     2  1.55
##  6  18.1     6  225    105  2.76  3.46  20.2     1     0     3     1  1.56
##  7  14.3     8  360    245  3.21  3.57  15.8     0     0     3     4  1.61
##  8  24.4     4  147.    62  3.69  3.19  20       1     0     4     2  1.44
##  9  22.8     4  141.    95  3.92  3.15  22.9     1     0     4     2  1.42
## 10  19.2     6  168.   123  3.92  3.44  18.3     1     0     4     4  1.55
## # … with 22 more rows
## # ℹ Use `print(n = ...)` to see more rows
summarise(grupo_disp, mean(disp))
## # A tibble: 27 × 2
##     disp `mean(disp)`
##    <dbl>        <dbl>
##  1  71.1         71.1
##  2  75.7         75.7
##  3  78.7         78.7
##  4  79           79  
##  5  95.1         95.1
##  6 108          108  
##  7 120.         120. 
##  8 120.         120. 
##  9 121          121  
## 10 141.         141. 
## # … with 17 more rows
## # ℹ Use `print(n = ...)` to see more rows

EJERCICIO 13

- summarise(group_by(mtcars, cyl), max = max(disp)) (Explica que resultado obtienes ?).

summarise(group_by(mtcars, cyl), max = max(disp))
## # A tibble: 3 × 2
##     cyl   max
##   <dbl> <dbl>
## 1     4  147.
## 2     6  258 
## 3     8  472

EXPLICACIÓN

Agrupa los datos del cilindraje por su valor y obtiene el maximo de ese conjunto de datos.

EJERCICIO 14

- mtcars %>% select( mpg:disp )%>% head (Explica que resultado obtienes ?).

mtcars %>% select(mpg:disp)%>% head
##                    mpg cyl disp
## Mazda RX4         21.0   6  160
## Mazda RX4 Wag     21.0   6  160
## Datsun 710        22.8   4  108
## Hornet 4 Drive    21.4   6  258
## Hornet Sportabout 18.7   8  360
## Valiant           18.1   6  225

EXPLICACIÓN

Selecciona las columas desde mpg hasta disp y nos muestra los 6 primeros valores de esta.

EJERCICIO 15

- head(select(select(mtcars, contains(“a”)), -drat, -am)) (Explica que resultado obtienes ?).

head(select(select(mtcars, contains("a")), -drat, -am))
##                   gear carb
## Mazda RX4            4    4
## Mazda RX4 Wag        4    4
## Datsun 710           4    1
## Hornet 4 Drive       3    1
## Hornet Sportabout    3    2
## Valiant              3    1

EXPLICACIÓN

Selecciona las columnas que contengan una letra a en su encabezado a excepción de drat y am.

EJERCICIO 16

- Utilizando pipes ejecuta el ejercicio 15.

mtcars %>%
  select((contains("a")), -drat, -am)
##                     gear carb
## Mazda RX4              4    4
## Mazda RX4 Wag          4    4
## Datsun 710             4    1
## Hornet 4 Drive         3    1
## Hornet Sportabout      3    2
## Valiant                3    1
## Duster 360             3    4
## Merc 240D              4    2
## Merc 230               4    2
## Merc 280               4    4
## Merc 280C              4    4
## Merc 450SE             3    3
## Merc 450SL             3    3
## Merc 450SLC            3    3
## Cadillac Fleetwood     3    4
## Lincoln Continental    3    4
## Chrysler Imperial      3    4
## Fiat 128               4    1
## Honda Civic            4    2
## Toyota Corolla         4    1
## Toyota Corona          3    1
## Dodge Challenger       3    2
## AMC Javelin            3    2
## Camaro Z28             3    4
## Pontiac Firebird       3    2
## Fiat X1-9              4    1
## Porsche 914-2          5    2
## Lotus Europa           5    2
## Ford Pantera L         5    4
## Ferrari Dino           5    6
## Maserati Bora          5    8
## Volvo 142E             4    2

EJERCICIO 17

- mtcars_filtered = filter(mtcars, wt > 1.5) mtcars_grouped = group_by(mtcars_filtered, cyl) summarise(mtcars_grouped, mn = mean(mpg), sd = sd(mpg))(Explica que resultado obtienes ?).

mtcars_filtered = filter(mtcars, wt > 1.5)
mtcars_grouped = group_by(mtcars_filtered, cyl)
summarise(mtcars_grouped, mn = mean(mpg), sd = sd(mpg))
## # A tibble: 3 × 3
##     cyl    mn    sd
##   <dbl> <dbl> <dbl>
## 1     4  26.7  4.51
## 2     6  19.7  1.45
## 3     8  15.1  2.56

EXPLICACIÓN

Se obtiene la media y la desviación estándar de la columna mpg, agrupagas según su cilindraje y siempre y cuando su wt sea mayor a 1.5.

EJERCICIO 18

- Utilizando pipes ejecuta el ejercicio 17.

mtcars %>% 
  filter(wt > 1.5) %>% 
  group_by(cyl) %>% 
  summarise(mean(mpg), sd(mpg))
## # A tibble: 3 × 3
##     cyl `mean(mpg)` `sd(mpg)`
##   <dbl>       <dbl>     <dbl>
## 1     4        26.7      4.51
## 2     6        19.7      1.45
## 3     8        15.1      2.56

EJERCICIO 19

- Es obligatorio utilizar las funciones del paquete “dplyr” y recomendable utilizar pipes “%>%” para los siguientes ejercicios.

EJERCICIO 20

- Descarga el fichero de datos “vuelos.csv” situado en http://gauss.inf.um.es/datos/; en local o localiza la url donde se encuentra.

EJERCICIO 21

- Descarga el archivo y Guarda los datos en una variable llamada “vuelos”.

# file.choose()
vuelos <- read.csv("C:\\Users\\gaby_\\OneDrive\\Documentos\\Silabos de la U\\Tercer Semestre UCE\\PROGRAMACION\\TALLER 10\\vuelos.csv")
head(vuelos)
##         date hour minute  dep  arr dep_delay arr_delay carrier flight dest
## 1 2011-01-01   14      0 1400 1500         0       -10      AA    428  DFW
## 2 2011-01-02   14      1 1401 1501         1        -9      AA    428  DFW
## 3 2011-01-03   13     52 1352 1502        -8        -8      AA    428  DFW
## 4 2011-01-04   14      3 1403 1513         3         3      AA    428  DFW
## 5 2011-01-05   14      5 1405 1507         5        -3      AA    428  DFW
## 6 2011-01-06   13     59 1359 1503        -1        -7      AA    428  DFW
##    plane cancelled time dist
## 1 N576AA         0   40  224
## 2 N557AA         0   45  224
## 3 N541AA         0   48  224
## 4 N403AA         0   39  224
## 5 N492AA         0   44  224
## 6 N262AA         0   45  224

EJERCICIO 22

- Selecciona los vuelos con destino SFO u OAK utilizando las funciones del paquete dplyr. ¿Con cuántos vuelos nos quedamos?.

destinos <- vuelos %>% 
  select(dest) %>%
  filter(dest == "SFO" | dest == "OAK") %>%
  count()
head(destinos)
##      n
## 1 1121

Nos quedamos con un total de 1121 vuelos con destino a SFO y OAK.

EJERCICIO 23

- Selecciona los vuelos que se han retrasado más de una hora. ¿Cuál es el destino que más se retrasa en proporción al número de vuelos?.

x <- select(vuelos, dest, arr_delay)
x <- filter(x, arr_delay >= 60)
x <- xtabs(x$arr_delay ~ x$dest + x$arr_delay)
head(x, 20)
## x$dest
##   ABQ   AEX   AMA   ASE   ATL   AUS   AVL   BFL   BHM   BNA   BOS   BRO   BTR 
##  4025  1274  1769   429 23255  6749   491   240  3963  5577  1438  1953  1794 
##   BWI   CAE   CHS   CLE   CLT   CMH   COS 
##  3197   913  1726  1823  6081  1802  2209
atrasos <- data.frame(x)
head(atrasos)
##   x.dest  Freq
## 1    ABQ  4025
## 2    AEX  1274
## 3    AMA  1769
## 4    ASE   429
## 5    ATL 23255
## 6    AUS  6749
atrasosord <- arrange(atrasos, Freq)
head(atrasosord, 20)
##    x.dest Freq
## 1     GRK  108
## 2     RNO  197
## 3     CRW  205
## 4     BFL  240
## 5     GUC  282
## 6     HDN  310
## 7     MLU  318
## 8     ASE  429
## 9     LCH  456
## 10    AVL  491
## 11    ORF  650
## 12    SJU  680
## 13    MFE  717
## 14    GSO  762
## 15    DAY  803
## 16    SNA  871
## 17    SJC  893
## 18    CAE  913
## 19    PBI  944
## 20    DCA 1011
max(atrasosord$Freq)
## [1] 23255
min(atrasosord$Freq)
## [1] 108

El destino con mayores retrasos en proporcion a los vuelos es Atlanta con un total de 23225 minutos de retrasos.

EJERCICIO 24

- Encuentra 4 maneras diferentes de utilizar la función select para seleccionar las variables relacionadas con los retrasos (delay).

head(select(vuelos, contains("delay")))
##   dep_delay arr_delay
## 1         0       -10
## 2         1        -9
## 3        -8        -8
## 4         3         3
## 5         5        -3
## 6        -1        -7
head(select(vuelos, ends_with("delay")))
##   dep_delay arr_delay
## 1         0       -10
## 2         1        -9
## 3        -8        -8
## 4         3         3
## 5         5        -3
## 6        -1        -7
head(select(vuelos, matches(".y")))
##   dep_delay arr_delay
## 1         0       -10
## 2         1        -9
## 3        -8        -8
## 4         3         3
## 5         5        -3
## 6        -1        -7
head(select(vuelos, dep_delay, arr_delay)) 
##   dep_delay arr_delay
## 1         0       -10
## 2         1        -9
## 3        -8        -8
## 4         3         3
## 5         5        -3
## 6        -1        -7

EJERCICIO 25

- Agrupa los vuelos por fecha y calcula: media, mediana y cuartil 75 de los retrasos en los vuelos por hora.

library("dplyr")
agfecha <- vuelos %>% 
  select(date, hour, arr_delay) %>%
  group_by(date) %>% 
  summarise(media = mean(arr_delay, na.rm = T), mediana = median(arr_delay, na.rm = T), cuatil_75 = quantile(arr_delay, 0.75, na.rm = T))
head(agfecha)
## # A tibble: 6 × 4
##   date       media mediana cuatil_75
##   <chr>      <dbl>   <dbl>     <dbl>
## 1 2011-01-01 10.1        5      17  
## 2 2011-01-02 10.5        3      17  
## 3 2011-01-03  6.04      -2      10.5
## 4 2011-01-04  7.97       4      16  
## 5 2011-01-05  4.17      -1      11  
## 6 2011-01-06  6.07       2      13

EJERCICIO 26

- Utilizando pipes calcula la media de retraso en los vuelos por dia y hora, la cantidad de vuelos por dia y hora y luego muestra solo los casos para los cuales haya más de 10.

cvuelos <- vuelos %>%
  select(date, hour, arr_delay, flight) %>%
  filter(flight > 10) %>%
  group_by(date) %>%
  summarise(media_retraso = mean(arr_delay, na.rm = T),
            cantidad_vuelos = n_distinct(flight))
head(cvuelos)
## # A tibble: 6 × 3
##   date       media_retraso cantidad_vuelos
##   <chr>              <dbl>           <int>
## 1 2011-01-01          9.97             531
## 2 2011-01-02         10.5              649
## 3 2011-01-03          6.18             668
## 4 2011-01-04          8.07             554
## 5 2011-01-05          4.23             561
## 6 2011-01-06          6.17             629

EJERCICIO 27

- Importar la base de datos realizada en MYSQL a R (Consultarlo como hacerlo).

# install.packages("RODBC")
library("RODBC")

conexvuelos <- odbcConnect("ALEXACONX", uid = "root", pwd = "ALEXA@0499")
vuelos1 <- sqlQuery(conexvuelos, "SELECT * FROM gaby.`vuelos t10`")
head(vuelos1)
##         date hour minute  dep  arr dep_delay arr_delay carrier flight dest
## 1 01/01/2011   14      0 1400 1500         0       -10      AA    428  DFW
## 2 02/01/2011   14      1 1401 1501         1        -9      AA    428  DFW
## 3 03/01/2011   13     52 1352 1502        -8        -8      AA    428  DFW
## 4 04/01/2011   14      3 1403 1513         3         3      AA    428  DFW
## 5 05/01/2011   14      5 1405 1507         5        -3      AA    428  DFW
## 6 06/01/2011   13     59 1359 1503        -1        -7      AA    428  DFW
##    plane cancelled time dist
## 1 N576AA         0   40  224
## 2 N557AA         0   45  224
## 3 N541AA         0   48  224
## 4 N403AA         0   39  224
## 5 N492AA         0   44  224
## 6 N262AA         0   45  224

EL CONOCIMIENTO ES LA GUÍA PARA FORJAR UN FUTURO MEJOR