::p_load(tidyverse,
pacman
sjmisc,
dplyr,# para .dta, .sav
haven, # para .csv
readr, # para archivos excel readxl)
Importar datos en R
Otras formas de importar datos en R
1. Cargar librerías
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.
<- haven::read_dta(file = "input/data/ELSOC_W06_v1.0_Stata.dta", encoding = "UTF-8")
elsoc_2022
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 ,
.
<- readr::read_csv(file ="input/data/ELSOC_W06_v1.0_CSV.csv") elsoc_2022
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.
<- readxl::read_excel("input/data/ELSOC_W06_v1.0_EXCEL.xlsx")
elsoc_2022
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.
<- readxl::read_excel(path = "input/data/ELSOC_W06_v1.0_EXCEL.xlsx",
elsoc_2022 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:
<- readxl::read_excel(path = "input/data/ELSOC_W06_v1.0_EXCEL.xlsx",
elsoc_2022 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.
::load(file = "input/data/ELSOC_W06_v1.0_R.RData")
base
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>, …