Capítulo9 Transformación: Seleccionar variables
Fecha de la última revisión
## [1] "2026-09-02"
9.1 Funciones en este módulo
- starts_with() # selecciona variables que empiezan con una palabra o letra
- ends_with() # selecciona variables que terminan con una palabra o letra
- rename() # cambiar el nombre de una variable
- contains() # selecciona variables que contienen una palabra o letra
- everything() # selecciona todas las variables
- if_else() # reemplaza valores en una columna basado en una condición
Es una función para seleccionar basado en una características del nombre de la columna
Los ayudantes como starts_with(), ends_with() y contains() te evitan escribir cada nombre de columna a mano, sobre todo en tablas con muchas variables.
## [1] "anio" "mes" "dia"
## [4] "horario_salida" "salida_programada" "atraso_salida"
## [7] "horario_llegada" "llegada_programada" "atraso_llegada"
## [10] "aerolinea" "vuelo" "codigo_cola"
## [13] "origen" "destino" "tiempo_vuelo"
## [16] "distancia" "hora" "minuto"
## [19] "fecha_hora"
## # A tibble: 336,776 × 1
## horario_salida
## <int>
## 1 517
## 2 533
## 3 542
## 4 544
## 5 554
## 6 554
## 7 555
## 8 557
## 9 557
## 10 558
## # ℹ 336,766 more rows
## # A tibble: 336,776 × 2
## horario_salida horario_llegada
## <int> <int>
## 1 517 830
## 2 533 850
## 3 542 923
## 4 544 1004
## 5 554 812
## 6 554 740
## 7 555 913
## 8 557 709
## 9 557 838
## 10 558 753
## # ℹ 336,766 more rows
## # A tibble: 336,776 × 2
## horario_salida atraso_salida
## <int> <dbl>
## 1 517 2
## 2 533 4
## 3 542 2
## 4 544 -1
## 5 554 -6
## 6 554 -4
## 7 555 -5
## 8 557 -3
## 9 557 -3
## 10 558 -2
## # ℹ 336,766 more rows
## # A tibble: 336,776 × 3
## horario_salida salida_programada atraso_salida
## <int> <int> <dbl>
## 1 517 515 2
## 2 533 529 4
## 3 542 540 2
## 4 544 545 -1
## 5 554 600 -6
## 6 554 558 -4
## 7 555 600 -5
## 8 557 600 -3
## 9 557 600 -3
## 10 558 600 -2
## # ℹ 336,766 more rows
## # A tibble: 336,776 × 2
## vuelo tiempo_vuelo
## <int> <dbl>
## 1 1545 227
## 2 1714 227
## 3 1141 160
## 4 725 183
## 5 461 116
## 6 1696 150
## 7 507 158
## 8 5708 53
## 9 79 140
## 10 301 138
## # ℹ 336,766 more rows
#vuelos %>%
# dplyr::filter(contains("AA")) # no funciona con filter
vuelos %>%
dplyr::filter(aerolinea %in% c("AA", "DL"))## # A tibble: 80,839 × 19
## anio mes dia horario_salida salida_programada atraso_salida
## <int> <int> <int> <int> <int> <dbl>
## 1 2013 1 1 542 540 2
## 2 2013 1 1 554 600 -6
## 3 2013 1 1 558 600 -2
## 4 2013 1 1 559 600 -1
## 5 2013 1 1 602 610 -8
## 6 2013 1 1 606 610 -4
## 7 2013 1 1 606 610 -4
## 8 2013 1 1 615 615 0
## 9 2013 1 1 623 610 13
## 10 2013 1 1 628 630 -2
## # ℹ 80,829 more rows
## # ℹ 13 more variables: horario_llegada <int>, llegada_programada <int>,
## # atraso_llegada <dbl>, aerolinea <chr>, vuelo <int>, codigo_cola <chr>,
## # origen <chr>, destino <chr>, tiempo_vuelo <dbl>, distancia <dbl>,
## # hora <dbl>, minuto <dbl>, fecha_hora <dttm>
9.2 rename()
rename(nuevo = viejo) — cambiar el nombre de columnas.
- Qué hace: renombra columnas; el nombre nuevo va primero, el original después.
- Relacionadas:
select(nuevo = viejo, ...)renombra y selecciona a la vez;everything()reordena poniendo unas columnas al frente y el resto después.
Cambiar el nombre de la columna
vuelos %>%
rename(aeropuerto_origen=origen) %>%
rename(aeropuerto_destino=destino) %>%
dplyr::select(contains("aeropuerto")) # nombre nuevo= nombre original## # A tibble: 336,776 × 2
## aeropuerto_origen aeropuerto_destino
## <chr> <chr>
## 1 EWR IAH
## 2 LGA IAH
## 3 JFK MIA
## 4 JFK BQN
## 5 LGA ATL
## 6 EWR ORD
## 7 EWR FLL
## 8 LGA IAD
## 9 JFK MCO
## 10 LGA ORD
## # ℹ 336,766 more rows
9.3 Reorganizar el orden de las columnas, usando select() y everything() en la misma función
## # A tibble: 6 × 19
## anio mes dia horario_salida salida_programada atraso_salida
## <int> <int> <int> <int> <int> <dbl>
## 1 2013 1 1 517 515 2
## 2 2013 1 1 533 529 4
## 3 2013 1 1 542 540 2
## 4 2013 1 1 544 545 -1
## 5 2013 1 1 554 600 -6
## 6 2013 1 1 554 558 -4
## # ℹ 13 more variables: horario_llegada <int>, llegada_programada <int>,
## # atraso_llegada <dbl>, aerolinea <chr>, vuelo <int>, codigo_cola <chr>,
## # origen <chr>, destino <chr>, tiempo_vuelo <dbl>, distancia <dbl>,
## # hora <dbl>, minuto <dbl>, fecha_hora <dttm>
## # A tibble: 336,776 × 19
## distancia aerolinea anio mes dia horario_salida salida_programada
## <dbl> <chr> <int> <int> <int> <int> <int>
## 1 1400 UA 2013 1 1 517 515
## 2 1416 UA 2013 1 1 533 529
## 3 1089 AA 2013 1 1 542 540
## 4 1576 B6 2013 1 1 544 545
## 5 762 DL 2013 1 1 554 600
## 6 719 UA 2013 1 1 554 558
## 7 1065 B6 2013 1 1 555 600
## 8 229 EV 2013 1 1 557 600
## 9 944 B6 2013 1 1 557 600
## 10 733 AA 2013 1 1 558 600
## # ℹ 336,766 more rows
## # ℹ 12 more variables: atraso_salida <dbl>, horario_llegada <int>,
## # llegada_programada <int>, atraso_llegada <dbl>, vuelo <int>,
## # codigo_cola <chr>, origen <chr>, destino <chr>, tiempo_vuelo <dbl>,
## # hora <dbl>, minuto <dbl>, fecha_hora <dttm>
Seleccionar de un conjunto de variables en orden que aparece en el data.frame
## # A tibble: 336,776 × 4
## mes dia horario_salida salida_programada
## <int> <int> <int> <int>
## 1 1 1 517 515
## 2 1 1 533 529
## 3 1 1 542 540
## 4 1 1 544 545
## 5 1 1 554 600
## 6 1 1 554 558
## 7 1 1 555 600
## 8 1 1 557 600
## 9 1 1 557 600
## 10 1 1 558 600
## # ℹ 336,766 more rows
## [1] 10 11 12 13 14 15
## # A tibble: 336,776 × 4
## horario_salida salida_programada atraso_salida horario_llegada
## <int> <int> <dbl> <int>
## 1 517 515 2 830
## 2 533 529 4 850
## 3 542 540 2 923
## 4 544 545 -1 1004
## 5 554 600 -6 812
## 6 554 558 -4 740
## 7 555 600 -5 913
## 8 557 600 -3 709
## 9 557 600 -3 838
## 10 558 600 -2 753
## # ℹ 336,766 more rows
- Ejercicios:
Hacer los ejercicios en la sección 5.4.1 del libro en español
https://es.r4ds.hadley.nz/05-transform.html#ejercicios-2
## # A tibble: 587 × 18
## ...1 Fecha Muertes IncrementoMuertes CasosPCR_Salud IncCasosPCR_Salud
## <dbl> <chr> <dbl> <dbl> <dbl> <dbl>
## 1 1 3/12/20 0 0 NA NA
## 2 2 3/13/20 0 0 NA NA
## 3 3 3/14/20 0 0 NA NA
## 4 4 3/15/20 0 0 NA NA
## 5 5 3/16/20 0 0 NA NA
## 6 6 3/17/20 0 0 NA NA
## 7 7 3/18/20 0 0 NA NA
## 8 8 3/19/20 0 0 NA NA
## 9 9 3/20/20 0 0 NA NA
## 10 10 3/21/20 0 0 NA NA
## # ℹ 577 more rows
## # ℹ 12 more variables: CasosSaludNuevo <dbl>, IncCasosSaludNuevo <dbl>,
## # HospitCOV19 <dbl>, CamasICU <dbl>, CamasICU_disp <dbl>, Ventiladores <dbl>,
## # MuertesSalud <dbl>, IncMueSalud <dbl>, VacDoses <dbl>, VacAdm <dbl>,
## # N1MoreDoses <dbl>, N2Doses <dbl>
library(tidyverse)
df2=url_COVID_PR %>%
dplyr::select(IncCasosSaludNuevo) %>%
mutate(Cambios_Casos=IncCasosSaludNuevo-lag(IncCasosSaludNuevo,7))
df2## # A tibble: 587 × 2
## IncCasosSaludNuevo Cambios_Casos
## <dbl> <dbl>
## 1 2 NA
## 2 3 NA
## 3 3 NA
## 4 0 NA
## 5 9 NA
## 6 7 NA
## 7 6 NA
## 8 5 3
## 9 14 11
## 10 12 9
## # ℹ 577 more rows