Importar datos en R

Fecha de publicación

11 de mayo de 2023

Otras formas de importar datos en R

1. Cargar librerías

pacman::p_load(tidyverse,
               sjmisc,
               dplyr,
               haven, # para .dta, .sav
               readr, # para .csv
               readxl) # para archivos excel 

2. Cargar datos en distintos formatos

a) .dta

Los archivos con extensión .dta generalmente provienen de Stata, es decir, son bases o datos procesadas en dicho software. Para estos archivos, así como aquellos que vienen en .sav, usamos el paquete haven(). En estos casos siempre es conveniente señalar el tipo de encoding en el argumento, en este caso, usamos "UTF-8" que corresponde al estandar.

elsoc_2022 <- haven::read_dta(file = "input/data/ELSOC_W06_v1.0_Stata.dta", encoding = "UTF-8")

elsoc_2022
# A tibble: 2,730 × 437
   idencuesta ola       version muestra   cuest…¹ cuest…² formato segme…³ comuna
        <dbl> <dbl+lbl>   <dbl> <dbl+lbl> <dbl+l> <dbl+l> <dbl+l>   <dbl> <chr> 
 1    1101011 6 [2022]   202201 1 [Muest… 2 [Ven… 1 [Com… 1 [CAP…  110101 Iquiq…
 2    1101012 6 [2022]   202201 1 [Muest… 2 [Ven… 1 [Com… 1 [CAP…  110101 Iquiq…
 3    1101023 6 [2022]   202201 1 [Muest… 2 [Ven… 1 [Com… 1 [CAP…  110102 Iquiq…
 4    1101041 6 [2022]   202201 1 [Muest… 2 [Ven… 1 [Com… 1 [CAP…  110104 Iquiq…
 5    1101081 6 [2022]   202201 1 [Muest… 2 [Ven… 1 [Com… 1 [CAP…  110108 Iquiq…
 6    1101082 6 [2022]   202201 1 [Muest… 1 [Per… 1 [Com… 1 [CAP…  110108 Iquiq…
 7    1101102 6 [2022]   202201 1 [Muest… 2 [Ven… 1 [Com… 1 [CAP…  110110 San F…
 8    1101103 6 [2022]   202201 1 [Muest… 1 [Per… 1 [Com… 1 [CAP…  110110 Iquiq…
 9    1101111 6 [2022]   202201 1 [Muest… 2 [Ven… 1 [Com… 1 [CAP…  110111 Iquiq…
10    1101113 6 [2022]   202201 1 [Muest… 1 [Per… 1 [Com… 1 [CAP…  110111 Iquiq…
# … with 2,720 more rows, 428 more variables: comuna_cod <dbl+lbl>,
#   region <chr>, region_cod <dbl+lbl>, estrato <dbl+lbl>, ponderador01 <dbl>,
#   ponderador02 <dbl>, fact_exp01 <dbl>, fact_exp02 <dbl>, r05_01 <dbl+lbl>,
#   r05_02 <dbl+lbl>, r06 <dbl+lbl>, r07 <dbl+lbl>, r08 <dbl+lbl>,
#   r09 <dbl+lbl>, r10 <dbl+lbl>, r11 <dbl+lbl>, r12_01 <dbl+lbl>,
#   r12_02 <dbl+lbl>, r12_03 <dbl+lbl>, r12_04 <dbl+lbl>, r12_05 <dbl+lbl>,
#   r12_06 <dbl+lbl>, r12_07 <dbl+lbl>, r13_nredes <dbl>, …

b) .csv

Para los archivos con extension .csv usamos el paquete readr::. Importante es que los archivos .csv vienen separados por comas ,.

elsoc_2022 <- readr::read_csv(file ="input/data/ELSOC_W06_v1.0_CSV.csv")
Rows: 2730 Columns: 437
── Column specification ────────────────────────────────────────────────────────
Delimiter: ","
chr   (14): comuna, region, c12_09_otro, c16_otro, c17_otro, c20_otro, m36_o...
dbl  (422): idencuesta, ola, version, muestra, cuestion_mig, cuestion_comple...
date   (1): fecha_entr

ℹ Use `spec()` to retrieve the full column specification for this data.
ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.
elsoc_2022
# A tibble: 2,730 × 437
   idencu…¹   ola version muestra cuest…² cuest…³ formato segme…⁴ comuna comun…⁵
      <dbl> <dbl>   <dbl>   <dbl>   <dbl>   <dbl>   <dbl>   <dbl> <chr>    <dbl>
 1  1101011     6  202201       1       2       1       1  110101 Iquiq…    1101
 2  1101012     6  202201       1       2       1       1  110101 Iquiq…    1101
 3  1101023     6  202201       1       2       1       1  110102 Iquiq…    1101
 4  1101041     6  202201       1       2       1       1  110104 Iquiq…    1101
 5  1101081     6  202201       1       2       1       1  110108 Iquiq…    1101
 6  1101082     6  202201       1       1       1       1  110108 Iquiq…    1101
 7  1101102     6  202201       1       2       1       1  110110 San F…    6301
 8  1101103     6  202201       1       1       1       1  110110 Iquiq…    1101
 9  1101111     6  202201       1       2       1       1  110111 Iquiq…    1101
10  1101113     6  202201       1       1       1       1  110111 Iquiq…    1101
# … with 2,720 more rows, 427 more variables: region <chr>, region_cod <dbl>,
#   estrato <dbl>, ponderador01 <dbl>, ponderador02 <dbl>, fact_exp01 <dbl>,
#   fact_exp02 <dbl>, r05_01 <dbl>, r05_02 <dbl>, r06 <dbl>, r07 <dbl>,
#   r08 <dbl>, r09 <dbl>, r10 <dbl>, r11 <dbl>, r12_01 <dbl>, r12_02 <dbl>,
#   r12_03 <dbl>, r12_04 <dbl>, r12_05 <dbl>, r12_06 <dbl>, r12_07 <dbl>,
#   r13_nredes <dbl>, r13_sexo_01 <dbl>, r13_edad_01 <dbl>,
#   r13_relacion_01 <dbl>, r13_tiempo_01 <dbl>, r13_barrio_01 <dbl>, …

c) .xlsx

Para los archivos que provienen de Excel, tales como los .xlsx usamos el paquete readxl::. Noten que podemos cargar la base completa, como en el primer ejemplo, pero también podemos especificarle que queremos determinadas columnas y filas de un archivo Excel, como en el segundo ejmplo.

elsoc_2022 <- readxl::read_excel("input/data/ELSOC_W06_v1.0_EXCEL.xlsx")

elsoc_2022
# A tibble: 2,730 × 437
   idencu…¹   ola version muestra cuest…² cuest…³ formato segme…⁴ comuna comun…⁵
      <dbl> <dbl>   <dbl>   <dbl>   <dbl>   <dbl>   <dbl>   <dbl> <chr>    <dbl>
 1  1101011     6  202201       1       2       1       1  110101 Iquiq…    1101
 2  1101012     6  202201       1       2       1       1  110101 Iquiq…    1101
 3  1101023     6  202201       1       2       1       1  110102 Iquiq…    1101
 4  1101041     6  202201       1       2       1       1  110104 Iquiq…    1101
 5  1101081     6  202201       1       2       1       1  110108 Iquiq…    1101
 6  1101082     6  202201       1       1       1       1  110108 Iquiq…    1101
 7  1101102     6  202201       1       2       1       1  110110 San F…    6301
 8  1101103     6  202201       1       1       1       1  110110 Iquiq…    1101
 9  1101111     6  202201       1       2       1       1  110111 Iquiq…    1101
10  1101113     6  202201       1       1       1       1  110111 Iquiq…    1101
# … with 2,720 more rows, 427 more variables: region <chr>, region_cod <dbl>,
#   estrato <dbl>, ponderador01 <dbl>, ponderador02 <dbl>, fact_exp01 <dbl>,
#   fact_exp02 <dbl>, r05_01 <dbl>, r05_02 <dbl>, r06 <dbl>, r07 <dbl>,
#   r08 <dbl>, r09 <dbl>, r10 <dbl>, r11 <dbl>, r12_01 <dbl>, r12_02 <dbl>,
#   r12_03 <dbl>, r12_04 <dbl>, r12_05 <dbl>, r12_06 <dbl>, r12_07 <dbl>,
#   r13_nredes <dbl>, r13_sexo_01 <dbl>, r13_edad_01 <dbl>,
#   r13_relacion_01 <dbl>, r13_tiempo_01 <dbl>, r13_barrio_01 <dbl>, …

En este caso le especificamos la hoja del excel en donde están los datos, y también le indicamos el rango que son las columnas y filas que queremos ver. Esto siempre sigue el mismo formato: “COLUMNAFILA_INICIO:COLUMNAFILA_FINAL”. No necesariamente tienen que ser todas las columnas o filas, eso lo podemos cambiar según necesitemos.

elsoc_2022 <- readxl::read_excel(path = "input/data/ELSOC_W06_v1.0_EXCEL.xlsx",
                                 sheet = 1, # indicamos la hoja del excel,
                                 range = "A1:PU2731")

elsoc_2022
# A tibble: 2,730 × 437
   idencu…¹   ola version muestra cuest…² cuest…³ formato segme…⁴ comuna comun…⁵
      <dbl> <dbl>   <dbl>   <dbl>   <dbl>   <dbl>   <dbl>   <dbl> <chr>    <dbl>
 1  1101011     6  202201       1       2       1       1  110101 Iquiq…    1101
 2  1101012     6  202201       1       2       1       1  110101 Iquiq…    1101
 3  1101023     6  202201       1       2       1       1  110102 Iquiq…    1101
 4  1101041     6  202201       1       2       1       1  110104 Iquiq…    1101
 5  1101081     6  202201       1       2       1       1  110108 Iquiq…    1101
 6  1101082     6  202201       1       1       1       1  110108 Iquiq…    1101
 7  1101102     6  202201       1       2       1       1  110110 San F…    6301
 8  1101103     6  202201       1       1       1       1  110110 Iquiq…    1101
 9  1101111     6  202201       1       2       1       1  110111 Iquiq…    1101
10  1101113     6  202201       1       1       1       1  110111 Iquiq…    1101
# … with 2,720 more rows, 427 more variables: region <chr>, region_cod <dbl>,
#   estrato <dbl>, ponderador01 <dbl>, ponderador02 <dbl>, fact_exp01 <dbl>,
#   fact_exp02 <dbl>, r05_01 <dbl>, r05_02 <dbl>, r06 <dbl>, r07 <dbl>,
#   r08 <dbl>, r09 <dbl>, r10 <dbl>, r11 <dbl>, r12_01 <dbl>, r12_02 <dbl>,
#   r12_03 <dbl>, r12_04 <dbl>, r12_05 <dbl>, r12_06 <dbl>, r12_07 <dbl>,
#   r13_nredes <dbl>, r13_sexo_01 <dbl>, r13_edad_01 <dbl>,
#   r13_relacion_01 <dbl>, r13_tiempo_01 <dbl>, r13_barrio_01 <dbl>, …

Seleccionamos solo algunas columnas. Ahora vemos que solo tenemos 26 columnas:

elsoc_2022 <- readxl::read_excel(path = "input/data/ELSOC_W06_v1.0_EXCEL.xlsx",
                                 sheet = 1, # indicamos la hoja del excel,
                                 range = "A1:Z2731")

elsoc_2022
# A tibble: 2,730 × 26
   idencu…¹   ola version muestra cuest…² cuest…³ formato segme…⁴ comuna comun…⁵
      <dbl> <dbl>   <dbl>   <dbl>   <dbl>   <dbl>   <dbl>   <dbl> <chr>    <dbl>
 1  1101011     6  202201       1       2       1       1  110101 Iquiq…    1101
 2  1101012     6  202201       1       2       1       1  110101 Iquiq…    1101
 3  1101023     6  202201       1       2       1       1  110102 Iquiq…    1101
 4  1101041     6  202201       1       2       1       1  110104 Iquiq…    1101
 5  1101081     6  202201       1       2       1       1  110108 Iquiq…    1101
 6  1101082     6  202201       1       1       1       1  110108 Iquiq…    1101
 7  1101102     6  202201       1       2       1       1  110110 San F…    6301
 8  1101103     6  202201       1       1       1       1  110110 Iquiq…    1101
 9  1101111     6  202201       1       2       1       1  110111 Iquiq…    1101
10  1101113     6  202201       1       1       1       1  110111 Iquiq…    1101
# … with 2,720 more rows, 16 more variables: region <chr>, region_cod <dbl>,
#   estrato <dbl>, ponderador01 <dbl>, ponderador02 <dbl>, fact_exp01 <dbl>,
#   fact_exp02 <dbl>, r05_01 <dbl>, r05_02 <dbl>, r06 <dbl>, r07 <dbl>,
#   r08 <dbl>, r09 <dbl>, r10 <dbl>, r11 <dbl>, r12_01 <dbl>, and abbreviated
#   variable names ¹​idencuesta, ²​cuestion_mig, ³​cuestion_completo, ⁴​segmento,
#   ⁵​comuna_cod

d) .RData o .rds

Cuando los datos vienen en formato .R no es necesario asinarle un objeto, lo podemos hacer después de ser necesario. Para leer estos archivos usamos la función load() de R base.

base::load(file = "input/data/ELSOC_W06_v1.0_R.RData") 

elsoc_2022
# A tibble: 2,730 × 437
   idencu…¹   ola version muestra cuest…² cuest…³ formato segme…⁴ comuna comun…⁵
      <dbl> <dbl>   <int>   <dbl>   <dbl>   <dbl>   <dbl>   <dbl> <chr>    <dbl>
 1  1101011     6  202201       1       2       1       1  110101 Iquiq…    1101
 2  1101012     6  202201       1       2       1       1  110101 Iquiq…    1101
 3  1101023     6  202201       1       2       1       1  110102 Iquiq…    1101
 4  1101041     6  202201       1       2       1       1  110104 Iquiq…    1101
 5  1101081     6  202201       1       2       1       1  110108 Iquiq…    1101
 6  1101082     6  202201       1       1       1       1  110108 Iquiq…    1101
 7  1101102     6  202201       1       2       1       1  110110 San F…    6301
 8  1101103     6  202201       1       1       1       1  110110 Iquiq…    1101
 9  1101111     6  202201       1       2       1       1  110111 Iquiq…    1101
10  1101113     6  202201       1       1       1       1  110111 Iquiq…    1101
# … with 2,720 more rows, 427 more variables: region <chr>, region_cod <dbl>,
#   estrato <dbl>, ponderador01 <dbl>, ponderador02 <dbl>, fact_exp01 <dbl>,
#   fact_exp02 <dbl>, r05_01 <dbl>, r05_02 <dbl>, r06 <dbl>, r07 <dbl>,
#   r08 <dbl>, r09 <dbl>, r10 <dbl>, r11 <dbl>, r12_01 <dbl>, r12_02 <dbl>,
#   r12_03 <dbl>, r12_04 <dbl>, r12_05 <dbl>, r12_06 <dbl>, r12_07 <dbl>,
#   r13_nredes <dbl>, r13_sexo_01 <dbl>, r13_edad_01 <dbl>,
#   r13_relacion_01 <dbl>, r13_tiempo_01 <dbl>, r13_barrio_01 <dbl>, …