Capítulo8 Transformacion: Selecionar variables

Fecha de la ultima revisión

## [1] "2025-10-01"

8.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 caracteristicas del nombre de la columna

library(datos)
names(vuelos)
##  [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"
library(tidyverse)
vuelos %>% 
  dplyr::select(horario_salida)
## # 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
vuelos %>% 
  dplyr::select(starts_with("horario"))
## # 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
vuelos %>% 
  dplyr::select(ends_with("salida"))
## # 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
vuelos %>% 
  dplyr::select(contains("salida"))
## # 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
vuelos %>% 
  dplyr::select(contains("ue"))
## # 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>

8.2 rename()

Cambiar el nombre de la columna

vuelos %>% 
  rename(aeropuerto_origen=origen) %>% 
  rename(aeropuerto_destino=destino) %>% 
  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

8.3 Reoganizar el orden de las columnas, usando select() y everything() en la misma función

head(vuelos)
## # 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>
vuelos %>% 
    dplyr::select(distancia, aerolinea, everything())
## # 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

vuelos |> dplyr::select(mes:salida_programada)
## # 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
x=c(10:15)


x
## [1] 10 11 12 13 14 15
vuelos[,c(4:7)]
## # 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

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

?mean