Integrantes:

> Pedro Hinojosa

>Alisson Mendez

>Jhostin Nenger

>Natasha Piedra

>Nicole Yar.

EJERCICIO 1

Utilizando la base de datos interna mtcars, resolver los siguientes enunciados:

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

#llamamos a "tidyverse" y "dplyr"
library(tidyverse)
## ── Attaching core tidyverse packages ──────────────────────── tidyverse 2.0.0 ──
## ✔ dplyr     1.1.4     ✔ readr     2.1.4
## ✔ forcats   1.0.0     ✔ stringr   1.5.1
## ✔ ggplot2   3.4.4     ✔ tibble    3.2.1
## ✔ lubridate 1.9.3     ✔ tidyr     1.3.0
## ✔ purrr     1.0.2     
## ── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
## ✖ dplyr::filter() masks stats::filter()
## ✖ dplyr::lag()    masks stats::lag()
## ℹ Use the conflicted package (<http://conflicted.r-lib.org/>) to force all conflicts to become errors
library(dplyr)

# Cargamos la BD de 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
# seleccionar las 3 primeras columnas y asignarlas a una varible
head((m1 <- 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
#seleccionar los 6 primeros datos, con la función head, de m1
(m2 <- head(m1))
##                    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

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

?select_helpers
## starting httpd help server ... done
#Permite utilizar funciones que nos ayuden a encontrar datos dentro de una BD más rapidamente

EJERCICIO 3

3. Seleccionar las columnas que empiezan por d

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

4. Seleccionar las columnas que terminan por p

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

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

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, -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
#nos da todas las columnas menos drat y am

EJERCICIO 6

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

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, 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
#Selecciona todas las columnas que en su nombre contienen la letra "a"

EJERCICIO 7

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
#Nos da solo las filas que tengan un mpg mayor 20 y un gear igual a 4

EJERCICIO 8

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

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

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

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.

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

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:

group_disp <- group_by(mtcars, disp)
group_disp
## # A tibble: 32 × 11
## # Groups:   disp [27]
##      mpg   cyl  disp    hp  drat    wt  qsec    vs    am  gear  carb
##    <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
##  2  21       6  160    110  3.9   2.88  17.0     0     1     4     4
##  3  22.8     4  108     93  3.85  2.32  18.6     1     1     4     1
##  4  21.4     6  258    110  3.08  3.22  19.4     1     0     3     1
##  5  18.7     8  360    175  3.15  3.44  17.0     0     0     3     2
##  6  18.1     6  225    105  2.76  3.46  20.2     1     0     3     1
##  7  14.3     8  360    245  3.21  3.57  15.8     0     0     3     4
##  8  24.4     4  147.    62  3.69  3.19  20       1     0     4     2
##  9  22.8     4  141.    95  3.92  3.15  22.9     1     0     4     2
## 10  19.2     6  168.   123  3.92  3.44  18.3     1     0     4     4
## # ℹ 22 more rows
summarise(group_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 13

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 14

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 columas desde mpg hasta disp y nos muestra los 6 primeros valores de esta.

EJERCICIO 15

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 16

16. Utilizando pipes ejecuta el ejercicio 15.

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

EJERCICIO 17

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, agrupagas según su cilindraje y 
#siempre y cuando su wt sea mayor a 1.5.

EJERCICIO 18

18. Utilizando pipes ejecuta el ejercicio 17

mtcars %>%
  filter(wt > 1.5) %>%
  group_by(cyl) %>%
  summarise(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

EJERCICIO 19

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

library(dplyr)

EJERCICIO 20

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

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

EJERCICIO 21

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

getwd()
## [1] "C:/Users/Acer/Documents"
setwd("C:/Users/Acer/Downloads")
vuelos <- read.csv(file= "vuelos.csv", header = T, sep = ",", dec = ".")
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

22. Selecciona los vuelos con destino SFO u OAK utilizando las funciones del paquete dplyr.

v_dest<- filter(vuelos, dest == "SFO" | dest == "OAK" ) 
head(v_dest)
##           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
##?Con cuantos vuelos nos quedamos?
cat("Selecciona ", nrow(v_dest), "datos ")
## Selecciona  1121 datos

EJERCICIO 23

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<-read.table(file = "https://gauss.inf.um.es/datos/vuelos.csv", header = T, 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
web1 <- "https://gauss.inf.um.es/datos/vuelos.csv"
download.file(web1, "vuelos.csv")
vuelos <- read.table(file = "vuelos.csv", header = T, sep = ",")
View(vuelos)


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

EJERCICIO 24

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

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, contains("de")))
##    dep dep_delay arr_delay dest
## 1 1400         0       -10  DFW
## 2 1401         1        -9  DFW
## 3 1352        -8        -8  DFW
## 4 1403         3         3  DFW
## 5 1405         5        -3  DFW
## 6 1359        -1        -7  DFW
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
vuelos %>% select(-contains("d")) %>% head()
##   hour minute  arr carrier flight  plane time
## 1   14      0 1500      AA    428 N576AA   40
## 2   14      1 1501      AA    428 N557AA   45
## 3   13     52 1502      AA    428 N541AA   48
## 4   14      3 1513      AA    428 N403AA   39
## 5   14      5 1507      AA    428 N492AA   44
## 6   13     59 1503      AA    428 N262AA   45

EJERCICIO 25

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

agrupacion <- 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(agrupacion)
## # 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

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))
can_vuelos
## # A tibble: 120 × 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
##  7 2011-01-07          4.02             630
##  8 2011-01-08          3.04             487
##  9 2011-01-09         17.3              582
## 10 2011-01-10         11.1              626
## # ℹ 110 more rows

EJERCICIO 27

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

library("RODBC")