UNIVERSIDAD CENTRAL DEL ECUADOR

FACULTAD DE CIENCIAS ECONOMICAS

CARRERA DE ESTADÍSTICA

Autores:

Colaborador:


MANEJO DE DATOS

EJERICICIO N°1

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

PROCEDIMIENTO

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

EJERICICIO N°2

Utiliza la ayuda ?select_helpers para que observes el resultado.

PROCEDIMIENTO

?select_helpers
## starting httpd help server ... done

EJERICICIO N°3

Seleccionar las columnas que empiezan por d.

PROCEDIMIENTO

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

EJERICICIO N°4

Seleccionar las columnas que terminan por p.

PROCEDIMIENTO

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

EJERICICIO N°5

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

PROCEDIMIENTO

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:
Salen todos las columnas menos las columnas de "drat y am".

EJERICICIO N°6

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

PROCEDIMIENTO

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 las columnas que en su encabezado contenta una "a".

EJERICICIO N°7

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

PROCEDIMIENTO

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:
Escoge los valores de mpg mayores a 20 y escoge de la variables gear los valores que sean iguales a 4.

EJERICICIO N°8

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

PROCEDIMIENTO

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
## Fiat X1-9      27.3   4  79.0  66 4.08 1.935 18.90  1  1    4    1
## Porsche 914-2  26.0   4 120.3  91 4.43 2.140 16.70  0  1    5    2
## Lotus Europa   30.4   4  95.1 113 3.77 1.513 16.90  1  1    5    2
## Ferrari Dino   19.7   6 145.0 175 3.62 2.770 15.50  0  1    5    6
## Volvo 142E     21.4   4 121.0 109 4.11 2.780 18.60  1  1    4    2

EJERICICIO 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).

PROCEDIMIENTO

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
## Merc 450SLC         15.2   8 275.8 180 3.07 3.780 18.00  0  0    3    3
## Cadillac Fleetwood  10.4   8 472.0 205 2.93 5.250 17.98  0  0    3    4
## Lincoln Continental 10.4   8 460.0 215 3.00 5.424 17.82  0  0    3    4
## Chrysler Imperial   14.7   8 440.0 230 3.23 5.345 17.42  0  0    3    4
## Toyota Corona       21.5   4 120.1  97 3.70 2.465 20.01  1  0    3    1
## Dodge Challenger    15.5   8 318.0 150 2.76 3.520 16.87  0  0    3    2
## AMC Javelin         15.2   8 304.0 150 3.15 3.435 17.30  0  0    3    2
## Camaro Z28          13.3   8 350.0 245 3.73 3.840 15.41  0  0    3    4
## Pontiac Firebird    19.2   8 400.0 175 3.08 3.845 17.05  0  0    3    2

EJERICICIO N°10

Ordenar por cilindrada (cyl) y por desplazamiento (disp).

PROCEDIMIENTO

library(dplyr)

#Opción1
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
head(select(mtcars,c(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
#Opción2
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
head(arrange(mtcars,cyl,disp))
##                 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

EJERICICIO N°11

Crear 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.

PROCEDIMIENTO

mtcars$Klg_carro <- mtcars$wt*0.45
head(mtcars)
##                    mpg cyl disp  hp drat    wt  qsec vs am gear carb Klg_carro
## 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

EJERICICIO 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:

PROCEDIMIENTO

media <- summarise(mtcars,mean(disp))
media
##   mean(disp)
## 1   230.7219

EJERICICIO N°13

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

PROCEDIMIENTO

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:
Este codigo no muestra el desplazamiento máximo que hay por grupo según el cilindraje.
Asi vemos que en el grupo con cilindraje 4 el desplazamiento máximo es 147, en el grupo 6 el desplazamiento maximo es 258 y en el grupo 8 el desplazamiento maximo es 472

EJERICICIO N°14

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

PROCEDIMIENTO

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:
El codigo selecciona desde la columna mpg hasta la columna disp de la base de datos mtcars, pero solo nos indica las 6 primeras filas de estas columnas.

EJERICICIO N°15

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

PROCEDIMIENTO

head(select(select(mtcars,contains("a")),-drat,-am))
##                   gear carb Klg_carro
## Mazda RX4            4    4   1.17900
## Mazda RX4 Wag        4    4   1.29375
## Datsun 710           4    1   1.04400
## Hornet 4 Drive       3    1   1.44675
## Hornet Sportabout    3    2   1.54800
## Valiant              3    1   1.55700
EXPLICACIÓN:
Tenemos como resultado las 6 primeras filas de la base, y a aquellas columnas en las que el nombre de la variable contiene una la letra "a", pero pedimos no mostrar las columas "drat" y "am".

EJERICICIO N°16

Utilizando pipes ejecute el ejercicio 15

PROCEDIMIENTO

head(mtcars) %>%
  select(contains("a")) %>%
  select(-drat,-am)
##                   gear carb Klg_carro
## Mazda RX4            4    4   1.17900
## Mazda RX4 Wag        4    4   1.29375
## Datsun 710           4    1   1.04400
## Hornet 4 Drive       3    1   1.44675
## Hornet Sportabout    3    2   1.54800
## Valiant              3    1   1.55700

EJERICICIO 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?)

PROCEDIMIENTO

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:
Primero nos muestra la base mtcars filtrada con los valores de wt mayores a 1.5, luego se agrupa con la variable cyl y se obtiene la media y desviación estándar.

EJERICICIO N°18

Utilizando pipes ejecuta el ejercicio 17.

PROCEDIMIENTO

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

EJERICICIO N°19

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


EJERICICIO 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

PROCEDIMIENTO

v <- "https://gauss.inf.um.es/datos/vuelos.csv"

EJERICICIO N°21

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

PROCEDIMIENTO

download.file(v, "vuelos.csv")
vuelos <- read.table(v,header = TRUE,sep = ",")

EJERICICIO N°22

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

PROCEDIMIENTO

destino <- filter(vuelos, dest=="SFO" | dest=="OAK")
head(destino)
##           date hour minute  dep  arr dep_delay arr_delay carrier flight dest
## 373 2011-01-31    8     51  851 1052         1       -27      CO    170  SFO
## 389 2011-01-31   11     29 1129 1351         4         1      CO    270  SFO
## 402 2011-01-31   14     32 1432 1656         7         5      CO    370  SFO
## 436 2011-01-31   17     48 1748 2001         3        -4      CO    570  SFO
## 467 2011-01-31   21     43 2143 2338        50        24      CO    770  SFO
## 468 2011-01-31    7     29  729 1002        -1         2      CO    771  SFO
##      plane cancelled time dist
## 373 N35407         0  225 1635
## 389 N37420         0  228 1635
## 402 N27213         0  229 1635
## 436 N75436         0  236 1635
## 467 N37281         0  224 1635
## 468 N26226         0  237 1635
nrow(destino)
## [1] 1121
EXPLICACIÓN:
Nos quedamos con una tabla de 1121 vuelos.

EJERICICIO N°23

Selecciona los vuelos que se han retrasado más de una hora. ¿Cual es el destino que mas se retrasa en proporcion al numero de vuelos?

PROCEDIMIENTO

vuelos  %>%
  select(arr_delay,dest) %>%
  filter(arr_delay>60 ) %>% head
##     arr_delay dest
## 17         84  DFW
## 20         72  DFW
## 74         69  DFW
## 97        126  DFW
## 99         70  DFW
## 129        80  MIA
EXPLICACIÓN:
Me da como resultado una tabla con las columnas arr_delay mayores a 60 y la columna dest.

EJERICICIO N°24

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

PROCEDIMIENTO

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

EJERICICIO N°25

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

PROCEDIMIENTO

vuelos%>%
  select(date, hour, dep_delay)%>%
  group_by(date)%>%
  summarise(media= mean(dep_delay, na.rm=T), 
            mediana= median(dep_delay, na.rm=T),
            cuartil_75= quantile(dep_delay, 0.75, na.rm=T))%>%head
## # A tibble: 6 × 4
##   date       media mediana cuartil_75
##   <chr>      <dbl>   <dbl>      <dbl>
## 1 2011-01-01 10.7        3       15  
## 2 2011-01-02 15.7        7       20  
## 3 2011-01-03 13.4        4       18  
## 4 2011-01-04 11.9        5       18  
## 5 2011-01-05  6.33       1        8.5
## 6 2011-01-06  5.28       0        7

EJERICICIO 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

PROCEDIMIENTO

vuelos%>%select(dep_delay, date, hour, flight)%>%
  filter(flight> 10)%>%
  group_by(date)%>%
  summarise(media_retraso= mean(dep_delay, na.rm=T),
            cantidad_vuelos_x_dia= n_distinct(flight))
## # A tibble: 120 × 3
##    date       media_retraso cantidad_vuelos_x_dia
##    <chr>              <dbl>                 <int>
##  1 2011-01-01         10.6                    531
##  2 2011-01-02         15.7                    649
##  3 2011-01-03         13.6                    668
##  4 2011-01-04         12.0                    554
##  5 2011-01-05          6.42                   561
##  6 2011-01-06          5.34                   629
##  7 2011-01-07          5.45                   630
##  8 2011-01-08          7.63                   487
##  9 2011-01-09         20.7                    582
## 10 2011-01-10         12.3                    626
## # … with 110 more rows
## # ℹ Use `print(n = ...)` to see more rows

EJERICICIO N°27

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

PROCEDIMIENTO

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

# CONEXION DE MYSQL A R

conexion <- odbcConnect("DATABASE_GEORGETTE", uid="root", pwd = "Rocky2016_Pirulais01")
vuelos1 <- sqlQuery(conexion, "SELECT * FROM georgette.vuelos")
head(vuelos1)