UNIVERSIDAD CENTRAL DEL ECUADOR
FACULTAD DE CIENCIAS ECONÓMICAS
CARRERA DE ESTADÍSTICA

Autores:

Grupo 5

EJERCICIOS PROPUESTOS:

EJERCICIO N°1

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

Ejecución del ejercicio: `

Instalamos los paquetes, cargamos la libreria y con Head mostramos el dataset mtcars

#install.packages("dplyr")
library(dplyr)
## 
## Attaching package: 'dplyr'
## The following objects are masked from 'package:stats':
## 
##     filter, lag
## The following objects are masked from 'package:base':
## 
##     intersect, setdiff, setequal, union
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

Forma 1: escribimos el nombre de las columnas que queremos visualizar

head(select(mtcars,mpg, cyl,disp))
##                    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

Forma 2: escribir el numero de las columnas que queremos mostrar

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 N°2

Utiliza la ayuda ?select_helpers para que observes el resultado

?select_helpers
  • ?select_helpers: Permite observar la función select con mas detalles en Help, es decir, nos muestra todas las herramientas de la función select.

EJERCICIO N°3

Seleccionar las columnas que empiezan por d

Ejecución del ejercicio: `

Utilizamos starts_with para indicar la letra por la que deben empezar los nombres de las columnas que vamos a seleccionar.

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 N°4

Seleccionar las columnas que terminan por p

Ejecución del ejercicio:

Utilizamos ends_with para indicar la letra por la que deben terminar los nombres de las columnas vamos a seleccionar

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 N°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
  • Muestra todas las columnas del dataset menos las columnas drat y am

EJERCICIO N°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
  • Con la ayuda de la funición contains selecciona las columnas que en su encabezado contienen una a y las muestra

EJERCICIO N°7

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

filter: nos permite filtrar filas según una condición.

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
  • Nos muestra todas las filas que cumplen con la condición de que los valores de la columna mpg sean mayor a 20 y los valores de la columna gear sean igual a 4.

EJERCICIO N°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 N°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 N°10

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

orden <- arrange(mtcars,cyl,disp)
head(orden)
##                 mpg cyl  disp  hp drat    wt  qsec vs am gear carb
## Toyota Corolla 33.9   4  71.1  65 4.22 1.835 19.90  1  1    4    1
## Honda Civic    30.4   4  75.7  52 4.93 1.615 18.52  1  1    4    2
## Fiat 128       32.4   4  78.7  66 4.08 2.200 19.47  1  1    4    1
## Fiat X1-9      27.3   4  79.0  66 4.08 1.935 18.90  1  1    4    1
## Lotus Europa   30.4   4  95.1 113 3.77 1.513 16.90  1  1    5    2
## Datsun 710     22.8   4 108.0  93 3.85 2.320 18.61  1  1    4    1

EJERCICIO N°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 N°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:

summarise(group_by(mtcars, 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. 
## # ℹ 17 more rows

EJERCICIO N°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
  • Agrupa los datos del cilindraje por su valor y obtiene el maximo de ese conjunto de datos.

EJERCICIO N°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
  • Selecciona las columnas desde mpg hasta disp y nos muestra los 6 primeros valores del dataset.

EJERCICIO N°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
  • Selecciona las columnas que contengan una letra a en su encabezado a excepción de drat y am.

EJERCICIO N°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 N°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
  • Se obtiene la media y la desviación estándar de la columna mpg, agrupadas según su cilindraje siempre y cuando su wt sea mayor a 1.5..

EJERCICIO N°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 N°19

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

library(dbplyr)

EJERCICIO N°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 N°21

Descarga el archivo y Guarda los datos en una variable llamada vuelos

setwd("E:/Programacion1")
vuelos<- read.table(file="vuelos.csv", header = TRUE, sep = ",")
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 N°22

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

destino <- vuelos %>% 
  select(dest) %>%
  filter(dest == "SFO" | dest == "OAK") %>%
  count()
head(destino)
##      n
## 1 1121
## Nos quedamos con un total de 1121 vuelos con destino a SFO y OAK.

EJERCICIO N°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?

vuelos%>%select(dest, dep_delay)%>%
filter(dep_delay >60)%>%
group_by(dest)%>%
summarise(destino_retraso= n_distinct(dep_delay))%>%head
## # A tibble: 6 × 2
##   dest  destino_retraso
##   <chr>           <int>
## 1 ABQ                28
## 2 AEX                13
## 3 AMA                11
## 4 ASE                 6
## 5 ATL               105
## 6 AUS                49

EJERCICIO N°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(".d.")))
##   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 N°25

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

agrupfech <- 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(agrupfech)
## # 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 N°26

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

can_vuelos <- 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))

EJERCICIO N°27

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

Ejecución del ejercicio: `

  1. En el ordenador de nuestra computadora buscamos los orígenes de datos ODBC, buscamos el servidor Mysql y el connector odbc, y damos en finalizar.
  2. Instalamos la libreria RODBC en Rstudio para establecer la conexión entre MySQL y rstudio.
  3. Creamos una variable y usamos la funcion odbcConnect que actúa como una interfaz entre la base de datos y rstudio, escribimos el nombre de la conexión que creamos, en uid colocamos el nombre del servidor y en pwd nuestra contraseña de MySQL.
  4. En otra variable utilizamos sqlQuery que sirve para hacer consultas y seleccionamos lo que queremos ver de la tabla importada de vuelos.
  5. Para verificar que se haya importado correctamente la base de datos utilizamos la función head o View.
library("RODBC")
con <- odbcConnect("MySQLConexion1", uid="root", pwd = "e123456")
vuelos1 <- sqlQuery(con,"SELECT * FROM vuelos.vuelos")
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