JuveYell

UNIVERSIDAD CENTRAL DEL ECUADOR
FACULTAD DE CIENCIAS ECONÓMICAS
INGENIERÍA EN ESTADÍSTICA

Integrantes :

TALLER-APE 10: TIDYVERSE.
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

1. Seleccionar las 3 primeras columnas del dataset y mostrar la cabecera

library(dplyr)
## Warning: package 'dplyr' was built under R version 4.3.2
## 
## 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(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

2. Utilizar la ayuda ?select_helpers para observar los resultados de las funciones

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

3. Seleccionar las columnas que empiezan por “d”

select(mtcars, starts_with("d"))
##                      disp drat
## Mazda RX4           160.0 3.90
## Mazda RX4 Wag       160.0 3.90
## Datsun 710          108.0 3.85
## Hornet 4 Drive      258.0 3.08
## Hornet Sportabout   360.0 3.15
## Valiant             225.0 2.76
## Duster 360          360.0 3.21
## Merc 240D           146.7 3.69
## Merc 230            140.8 3.92
## Merc 280            167.6 3.92
## Merc 280C           167.6 3.92
## Merc 450SE          275.8 3.07
## Merc 450SL          275.8 3.07
## Merc 450SLC         275.8 3.07
## Cadillac Fleetwood  472.0 2.93
## Lincoln Continental 460.0 3.00
## Chrysler Imperial   440.0 3.23
## Fiat 128             78.7 4.08
## Honda Civic          75.7 4.93
## Toyota Corolla       71.1 4.22
## Toyota Corona       120.1 3.70
## Dodge Challenger    318.0 2.76
## AMC Javelin         304.0 3.15
## Camaro Z28          350.0 3.73
## Pontiac Firebird    400.0 3.08
## Fiat X1-9            79.0 4.08
## Porsche 914-2       120.3 4.43
## Lotus Europa         95.1 3.77
## Ford Pantera L      351.0 4.22
## Ferrari Dino        145.0 3.62
## Maserati Bora       301.0 3.54
## Volvo 142E          121.0 4.11

4. Seleccionar las columnas que terminan por “p”

select(mtcars, ends_with("p"))
##                      disp  hp
## Mazda RX4           160.0 110
## Mazda RX4 Wag       160.0 110
## Datsun 710          108.0  93
## Hornet 4 Drive      258.0 110
## Hornet Sportabout   360.0 175
## Valiant             225.0 105
## Duster 360          360.0 245
## Merc 240D           146.7  62
## Merc 230            140.8  95
## Merc 280            167.6 123
## Merc 280C           167.6 123
## Merc 450SE          275.8 180
## Merc 450SL          275.8 180
## Merc 450SLC         275.8 180
## Cadillac Fleetwood  472.0 205
## Lincoln Continental 460.0 215
## Chrysler Imperial   440.0 230
## Fiat 128             78.7  66
## Honda Civic          75.7  52
## Toyota Corolla       71.1  65
## Toyota Corona       120.1  97
## Dodge Challenger    318.0 150
## AMC Javelin         304.0 150
## Camaro Z28          350.0 245
## Pontiac Firebird    400.0 175
## Fiat X1-9            79.0  66
## Porsche 914-2       120.3  91
## Lotus Europa         95.1 113
## Ford Pantera L      351.0 264
## Ferrari Dino        145.0 175
## Maserati Bora       301.0 335
## Volvo 142E          121.0 109

5. Eliminar las columnas “drat” y “am” y mostrar las primeras filas del resultado

library(dplyr)
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

6. Seleccionar las columnas que contienen la letra “a” y mostrar las primeras filas del resultado

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

7. head(filter( mtcars, mpg > 20, gear == 4)) (Explica que resultado obtienes ?) El código filtra las filas del conjunto de datos mtcars donde el consumo de combustible (mpg) es mayor que 20 y el número de marchas (gear) es igual a 4, y luego muestra las primeras filas del resultado. Esto proporcionará una vista preliminar de los automóviles que cumplen con esas condiciones específicas.

dato1 <- head(filter( mtcars, mpg > 20, gear == 4))

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

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

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)

dato2 <-  filter(mtcars, (mpg<21|carb<3 )& gear<4)

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

dato3 <- arrange(mtcars,cyl,disp)

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.

mutate(mtcars, kilogramos= wt*0.45)%>%head
##                    mpg cyl disp  hp drat    wt  qsec vs am gear carb kilogramos
## 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

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(mtcars, mean(disp))
##   mean(disp)
## 1   230.7219

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

El código está agrupando el conjunto de datos mtcars por el número de cilindros (cyl) y luego calculando el valor máximo de la cilindrada (disp) para cada grupo.La columna resultante max contendrá estos valores máximos correspondientes a cada grupo de cilindros.

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

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

library(dplyr)
# Muestra las primeras filas del conjunto de datos mtcars
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
# Utilizando pipes, selecciona las columnas mpg:disp y muestra las primeras filas del subconjunto seleccionado
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

El resultado muestra las primeras seis filas de las columnas seleccionadas ( mpg, cyly disp) del mtcarsconjunto de datos. Cada fila representa un modelo de automóvil y las columnas representan sus respectivos atributos.

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

El resultado final es un subconjunto del conjunto de datos mtcars que incluye solo las columnas que contienen la letra “a” y excluye las columnas “drat” y “am”. Luego, se muestran las primeras filas de este subconjunto.

16. Utilizando pipes ejecuta el ejercicio 15

resultado<-mtcars %>%
select(contains("a")) %>%
  select(-drat, -am) %>%
  head()
print(resultado)
##                   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

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

El resultado final sería un conjunto de datos que muestra la media (mn) y la desviación estándar (sd) de la columna mpg para cada grupo de cilindros en el conjunto de datos mtcars, pero solo para las filas donde el valor de wt es mayor que 1.5. Cada fila en el resultado corresponderá a un grupo único de cilindros.

18. Utilizando pipes ejecuta el ejercicio 17

resultado <- mtcars %>%
  filter(wt > 1.5) %>%
  group_by(cyl) %>%
  summarise(mn = mean(mpg), sd = sd(mpg))

print(resultado)
## # 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

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

# Activamos la libreria dplyr para realizar los siguientes ejercicios
library(dplyr)

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

url1<-"https://gauss.inf.um.es/datos/vuelos.csv"
download.file(url1,"vuelos.csv")

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

getwd()
## [1] "C:/Users/Win10/Downloads"
setwd("C:/Rs")
url1 <- "https://gauss.inf.um.es/datos/vuelos.csv"
download.file(url1, "vuelos.csv")
# Lee el archivo CSV en un conjunto de datos llamado 'vuelo'
vuelo <- read.csv("vuelos.csv", sep = ",", header = TRUE)
head(vuelo) 
##         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

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

library(dplyr)

# Seleccionar vuelos con destino SFO u OAK
library(dplyr)
install.packages("dplyr")
## Warning: package 'dplyr' is in use and will not be installed
# Seleccionar vuelos con destino SFO u OAK

vuelos1 <- select(vuelo, dest)

v<-filter(vuelos1, dest == "SFO" | dest == "OAK" )
head (v)
##     dest
## 373  SFO
## 389  SFO
## 402  SFO
## 436  SFO
## 467  SFO
## 468  SFO
cat("Número de vuelos que quedan son :", nrow(v), "\n") 
## Número de vuelos que quedan son : 1121

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? - Seleccionar la columna de retrasos

vuelos_retrasos <- vuelo %>%
  select(arr_delay)
vuelos_retrasos1 <- vuelos_retrasos %>%
  filter(arr_delay > 60)
head(vuelos_retrasos1)
##     arr_delay
## 17         84
## 20         72
## 74         69
## 97        126
## 99         70
## 129        80
proporcion_retraso <- vuelo %>%
  group_by(dest) %>%
  summarise(proporcion_retraso = sum(arr_delay > 0) / n()) %>%
  arrange(desc(proporcion_retraso))
destino_mas_retrasado <- proporcion_retraso$dest[1]
print(paste("El destino con la mayor proporción de retrasos es:", destino_mas_retrasado))
## [1] "El destino con la mayor proporción de retrasos es: AGS"

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

head(select(vuelo, dep_delay))
##   dep_delay
## 1         0
## 2         1
## 3        -8
## 4         3
## 5         5
## 6        -1
head(select(vuelo, arr_delay, everything()))
##   arr_delay       date hour minute  dep  arr dep_delay carrier flight dest
## 1       -10 2011-01-01   14      0 1400 1500         0      AA    428  DFW
## 2        -9 2011-01-02   14      1 1401 1501         1      AA    428  DFW
## 3        -8 2011-01-03   13     52 1352 1502        -8      AA    428  DFW
## 4         3 2011-01-04   14      3 1403 1513         3      AA    428  DFW
## 5        -3 2011-01-05   14      5 1405 1507         5      AA    428  DFW
## 6        -7 2011-01-06   13     59 1359 1503        -1      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
var <- c("dep_delay", "arr_delay")
head( select(vuelo, one_of(var)))
##   dep_delay arr_delay
## 1         0       -10
## 2         1        -9
## 3        -8        -8
## 4         3         3
## 5         5        -3
## 6        -1        -7
head( select(vuelo, matches(".d.")))
##   dep_delay arr_delay
## 1         0       -10
## 2         1        -9
## 3        -8        -8
## 4         3         3
## 5         5        -3
## 6        -1        -7

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

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

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.

vuelo%>%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))%>%head
## # A tibble: 6 × 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

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

#install.packages("RODBC")
#library(RODBC)
#conexion<- odbcConnect("taller_10", uid= "root", pwd= "root")
#vuelos1<- sqlQuery(conexion, "SELECT * FROM taller_10.vuelos;")
#head(vuelos1)