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   cuestion_mig cuestion_completo formato
        <dbl> <dbl+lbl>   <dbl> <dbl+lbl> <dbl+lbl>    <dbl+lbl>         <dbl+l>
 1    1101011 6 [2022]   202201 1 [Muest… 2 [Venezola… 1 [Completa]      1 [CAP…
 2    1101012 6 [2022]   202201 1 [Muest… 2 [Venezola… 1 [Completa]      1 [CAP…
 3    1101023 6 [2022]   202201 1 [Muest… 2 [Venezola… 1 [Completa]      1 [CAP…
 4    1101041 6 [2022]   202201 1 [Muest… 2 [Venezola… 1 [Completa]      1 [CAP…
 5    1101081 6 [2022]   202201 1 [Muest… 2 [Venezola… 1 [Completa]      1 [CAP…
 6    1101082 6 [2022]   202201 1 [Muest… 1 [Peruanos] 1 [Completa]      1 [CAP…
 7    1101102 6 [2022]   202201 1 [Muest… 2 [Venezola… 1 [Completa]      1 [CAP…
 8    1101103 6 [2022]   202201 1 [Muest… 1 [Peruanos] 1 [Completa]      1 [CAP…
 9    1101111 6 [2022]   202201 1 [Muest… 2 [Venezola… 1 [Completa]      1 [CAP…
10    1101113 6 [2022]   202201 1 [Muest… 1 [Peruanos] 1 [Completa]      1 [CAP…
# ℹ 2,720 more rows
# ℹ 430 more variables: segmento <dbl>, comuna <chr>, 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>, …

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
   idencuesta   ola version muestra cuestion_mig cuestion_completo formato
        <dbl> <dbl>   <dbl>   <dbl>        <dbl>             <dbl>   <dbl>
 1    1101011     6  202201       1            2                 1       1
 2    1101012     6  202201       1            2                 1       1
 3    1101023     6  202201       1            2                 1       1
 4    1101041     6  202201       1            2                 1       1
 5    1101081     6  202201       1            2                 1       1
 6    1101082     6  202201       1            1                 1       1
 7    1101102     6  202201       1            2                 1       1
 8    1101103     6  202201       1            1                 1       1
 9    1101111     6  202201       1            2                 1       1
10    1101113     6  202201       1            1                 1       1
# ℹ 2,720 more rows
# ℹ 430 more variables: segmento <dbl>, comuna <chr>, comuna_cod <dbl>,
#   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>, …

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
   idencuesta   ola version muestra cuestion_mig cuestion_completo formato
        <dbl> <dbl>   <dbl>   <dbl>        <dbl>             <dbl>   <dbl>
 1    1101011     6  202201       1            2                 1       1
 2    1101012     6  202201       1            2                 1       1
 3    1101023     6  202201       1            2                 1       1
 4    1101041     6  202201       1            2                 1       1
 5    1101081     6  202201       1            2                 1       1
 6    1101082     6  202201       1            1                 1       1
 7    1101102     6  202201       1            2                 1       1
 8    1101103     6  202201       1            1                 1       1
 9    1101111     6  202201       1            2                 1       1
10    1101113     6  202201       1            1                 1       1
# ℹ 2,720 more rows
# ℹ 430 more variables: segmento <dbl>, comuna <chr>, comuna_cod <dbl>,
#   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>, …

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
   idencuesta   ola version muestra cuestion_mig cuestion_completo formato
        <dbl> <dbl>   <dbl>   <dbl>        <dbl>             <dbl>   <dbl>
 1    1101011     6  202201       1            2                 1       1
 2    1101012     6  202201       1            2                 1       1
 3    1101023     6  202201       1            2                 1       1
 4    1101041     6  202201       1            2                 1       1
 5    1101081     6  202201       1            2                 1       1
 6    1101082     6  202201       1            1                 1       1
 7    1101102     6  202201       1            2                 1       1
 8    1101103     6  202201       1            1                 1       1
 9    1101111     6  202201       1            2                 1       1
10    1101113     6  202201       1            1                 1       1
# ℹ 2,720 more rows
# ℹ 430 more variables: segmento <dbl>, comuna <chr>, comuna_cod <dbl>,
#   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>, …

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
   idencuesta   ola version muestra cuestion_mig cuestion_completo formato
        <dbl> <dbl>   <dbl>   <dbl>        <dbl>             <dbl>   <dbl>
 1    1101011     6  202201       1            2                 1       1
 2    1101012     6  202201       1            2                 1       1
 3    1101023     6  202201       1            2                 1       1
 4    1101041     6  202201       1            2                 1       1
 5    1101081     6  202201       1            2                 1       1
 6    1101082     6  202201       1            1                 1       1
 7    1101102     6  202201       1            2                 1       1
 8    1101103     6  202201       1            1                 1       1
 9    1101111     6  202201       1            2                 1       1
10    1101113     6  202201       1            1                 1       1
# ℹ 2,720 more rows
# ℹ 19 more variables: segmento <dbl>, comuna <chr>, comuna_cod <dbl>,
#   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>

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
   idencuesta   ola version muestra cuestion_mig cuestion_completo formato
        <dbl> <dbl>   <int>   <dbl>        <dbl>             <dbl>   <dbl>
 1    1101011     6  202201       1            2                 1       1
 2    1101012     6  202201       1            2                 1       1
 3    1101023     6  202201       1            2                 1       1
 4    1101041     6  202201       1            2                 1       1
 5    1101081     6  202201       1            2                 1       1
 6    1101082     6  202201       1            1                 1       1
 7    1101102     6  202201       1            2                 1       1
 8    1101103     6  202201       1            1                 1       1
 9    1101111     6  202201       1            2                 1       1
10    1101113     6  202201       1            1                 1       1
# ℹ 2,720 more rows
# ℹ 430 more variables: segmento <dbl>, comuna <chr>, comuna_cod <dbl>,
#   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>, …