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)