2  Importación de conjuntos de datos

2.1 Consejo para escribir “código””

En general, cuando hacemos nuestro código querremos verificar que nuestras librerías estén instaladas. Si actualizamos nuestro R y Rstudio es probable que hayamos perdido alguno.

Este es un ejemplo de un código. Y vamos a introducir un paquete muy útil llamado {pacman}

if (!require("pacman")) install.packages("pacman") # instala pacman si se requiere
Cargando paquete requerido: pacman
pacman::p_load(tidyverse, 
               readxl,writexl,googlesheets4, # importar hojas de cálculo
               haven, foreign, # importación de dta y sab
               sjlabelled, # etiquetas
               janitor, skimr, #carga los paquetes necesarios para esta práctica
               curl) # para que lea urls 

2.2 Vamos a trabajar con el proyecto

Descarguemos algunos ejemplos de información, aquí un par de ejemplo de algunos formatos.

2.3 Importación de datos

2.3.1 Desde Excel

El paquete más compatible con RStudio es readxl. A veces, otros paquetes tienen más problemas de configuración entre R y el Java.

ejemploxl <- readxl::read_excel("datos/ejemplo_xlsx.xlsx", sheet = "para_importar")
New names:
• `` -> `...128`
• `` -> `...129`
• `` -> `...132`
• `PIB (Paridad de Poder Adquisitivo)` -> `PIB (Paridad de Poder
  Adquisitivo)...135`
• `PIB (Paridad de Poder Adquisitivo)` -> `PIB (Paridad de Poder
  Adquisitivo)...136`
• `PIB per cápita (Paridad de Poder Adquisitivo)` -> `PIB per cápita (Paridad
  de Poder Adquisitivo)...137`
• `PIB per cápita (Paridad de Poder Adquisitivo)` -> `PIB per cápita (Paridad
  de Poder Adquisitivo)...138`
• `PIB per cápita` -> `PIB per cápita...139`
• `PIB per cápita` -> `PIB per cápita...140`
• `PIB` -> `PIB...141`
• `PIB` -> `PIB...142`

Como el nombre de paquete lo indica, sólo lee. Para escribir en este formato, recomiendo el paquete “writexl”. Lo instalamos anteriormente.

Si quisiéramos exportar un objeto a Excel

writexl::write_xlsx(ejemploxl, path = "Mi_Exportación.xlsx")

2.3.2 Desde STATA y SPSS

Si bien también se puede realizar desde el paquete {foreign}. Pero este no importa algunas características como las etiquetas y tampoco funciona con las versiones más nuevas de STATA. Vamos a instalar otro paquete, compatible con el mundo tidyverse.

Recuerda que no hay que instalarlo (viene adentro de tidyverse).

concentradohogar <- haven::read_dta("datos/concentradohogar.dta")

!Importante, a R no le gustan los objetos con nombres que empiezan en números

El paquete haven sí exporta información.

haven::write_dta(concentradohogar, "datos/mi_exportacion.dta", version = 12)

Con SSPS es muy parecido. Dentro de “haven” hay una función específica para ello.

ingresos<- haven::read_sav("datos/ingresos.sav")

Para escribir

#haven::write_sav(concentradohogar , "mi_exportacion.sav")

Checa que en todas las exportaciones en los nombres hay que incluir la extensión del programa. Si quieres guardar en un lugar diferente al directorio del trabajo, hay que escribir toda la ruta dentro de la computadora.

2.4 Desde .dbf

{foreing} nos permite leer archivos en formato de dBase, con extensión “.dbf”. Si bien no es un formato muy común para los investigadores, sí para los que generan la información, puesto que dBase es uno de los principales programas de administración de bases de datos.

He puesto un ejemplo de una base de datos mexicana en dbf, en este formato.

ejemplo_dbf<-foreign::read.dbf("datos/ejemplo_dbf.DBF") #checa cómo nos vamos adentro de nuestro directorio

2.5 Revisión de nuestro data.frame

Vamos a revisar la data.frame,

class(concentradohogar) # tipo de objeto
[1] "tbl_df"     "tbl"        "data.frame"
names(concentradohogar) # lista las variables
  [1] "folioviv"   "foliohog"   "ubica_geo"  "tam_loc"    "est_socio" 
  [6] "est_dis"    "upm"        "factor"     "clase_hog"  "sexo_jefe" 
 [11] "edad_jefe"  "educa_jefe" "tot_integ"  "hombres"    "mujeres"   
 [16] "mayores"    "menores"    "p12_64"     "p65mas"     "ocupados"  
 [21] "percep_ing" "perc_ocupa" "ing_cor"    "ingtrab"    "trabajo"   
 [26] "sueldos"    "horas_extr" "comisiones" "aguinaldo"  "indemtrab" 
 [31] "otra_rem"   "remu_espec" "negocio"    "noagrop"    "industria" 
 [36] "comercio"   "servicios"  "agrope"     "agricolas"  "pecuarios" 
 [41] "reproducc"  "pesca"      "otros_trab" "rentas"     "utilidad"  
 [46] "arrenda"    "transfer"   "jubilacion" "becas"      "donativos" 
 [51] "remesas"    "bene_gob"   "transf_hog" "trans_inst" "estim_alqu"
 [56] "otros_ing"  "gasto_mon"  "alimentos"  "ali_dentro" "cereales"  
 [61] "carnes"     "pescado"    "leche"      "huevo"      "aceites"   
 [66] "tuberculo"  "verduras"   "frutas"     "azucar"     "cafe"      
 [71] "especias"   "otros_alim" "bebidas"    "ali_fuera"  "tabaco"    
 [76] "vesti_calz" "vestido"    "calzado"    "vivienda"   "alquiler"  
 [81] "pred_cons"  "agua"       "energia"    "limpieza"   "cuidados"  
 [86] "utensilios" "enseres"    "salud"      "atenc_ambu" "hospital"  
 [91] "medicinas"  "transporte" "publico"    "foraneo"    "adqui_vehi"
 [96] "mantenim"   "refaccion"  "combus"     "comunica"   "educa_espa"
[101] "educacion"  "esparci"    "paq_turist" "personales" "cuida_pers"
[106] "acces_pers" "otros_gas"  "transf_gas" "percep_tot" "retiro_inv"
[111] "prestamos"  "otras_perc" "ero_nm_viv" "ero_nm_hog" "erogac_tot"
[116] "cuota_viv"  "mater_serv" "material"   "servicio"   "deposito"  
[121] "prest_terc" "pago_tarje" "deudas"     "balance"    "otras_erog"
[126] "smg"       
head(concentradohogar) # muestra las primeras 6 líneas
# A tibble: 6 × 126
  folioviv   foliohog ubica_geo tam_loc est_socio est_dis upm   factor clase_hog
  <chr>      <chr>    <chr>     <chr>   <chr>     <chr>   <chr>  <dbl> <chr>    
1 0100005002 1        01001     1       4         003     0000…    206 3        
2 0100005003 1        01001     1       4         003     0000…    206 2        
3 0100005004 1        01001     1       4         003     0000…    206 2        
4 0100012002 1        01001     1       3         002     0000…    167 3        
5 0100012002 2        01001     1       3         002     0000…    167 1        
6 0100012004 1        01001     1       3         002     0000…    167 2        
# ℹ 117 more variables: sexo_jefe <chr>, edad_jefe <dbl>, educa_jefe <chr>,
#   tot_integ <dbl>, hombres <dbl>, mujeres <dbl>, mayores <dbl>,
#   menores <dbl>, p12_64 <dbl>, p65mas <dbl>, ocupados <dbl>,
#   percep_ing <dbl>, perc_ocupa <dbl>, ing_cor <dbl>, ingtrab <dbl>,
#   trabajo <dbl>, sueldos <dbl>, horas_extr <dbl>, comisiones <dbl>,
#   aguinaldo <dbl>, indemtrab <dbl>, otra_rem <dbl>, remu_espec <dbl>,
#   negocio <dbl>, noagrop <dbl>, industria <dbl>, comercio <dbl>, …
table(concentradohogar$clase_hog) # un tabulado simple

    1     2     3     4     5 
11886 55540 21786   583   307 

2.6 Revisión con dplyr

Operador de “pipe” o “tubería” %>% (Ctrl+Shift+M) Antes de continuar, presentemos el operador “pipe” %>%. dplyr importa este operador de otro paquete (magrittr). Este operador le permite canalizar la salida de una función a la entrada de otra función. En lugar de funciones de anidamiento (lectura desde adentro hacia afuera), la idea de la tubería es leer las funciones de izquierda a derecha.

concentradohogar %>% 
    dplyr::select(sexo_jefe, edad_jefe) %>% 
    head
# A tibble: 6 × 2
  sexo_jefe edad_jefe
  <chr>         <dbl>
1 2                91
2 1                68
3 1                56
4 1                87
5 1                27
6 1                57
concentradohogar %>% 
    dplyr::select(sexo_jefe, edad_jefe) %>% 
    glimpse
Rows: 90,102
Columns: 2
$ sexo_jefe <chr> "2", "1", "1", "1", "1", "1", "2", "2", "2", "1", "1", "1", …
$ edad_jefe <dbl> 91, 68, 56, 87, 27, 57, 47, 75, 70, 69, 48, 73, 64, 55, 58, …

2.6.1 Ojeando

dplyr::glimpse(concentradohogar)
Rows: 90,102
Columns: 126
$ folioviv   <chr> "0100005002", "0100005003", "0100005004", "0100012002", "01…
$ foliohog   <chr> "1", "1", "1", "1", "2", "1", "1", "1", "1", "1", "1", "1",…
$ ubica_geo  <chr> "01001", "01001", "01001", "01001", "01001", "01001", "0100…
$ tam_loc    <chr> "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1",…
$ est_socio  <chr> "4", "4", "4", "3", "3", "3", "3", "4", "4", "4", "4", "3",…
$ est_dis    <chr> "003", "003", "003", "002", "002", "002", "002", "003", "00…
$ upm        <chr> "0000001", "0000001", "0000001", "0000002", "0000002", "000…
$ factor     <dbl> 206, 206, 206, 167, 167, 167, 167, 212, 212, 212, 212, 184,…
$ clase_hog  <chr> "3", "2", "2", "3", "1", "2", "2", "1", "2", "2", "2", "1",…
$ sexo_jefe  <chr> "2", "1", "1", "1", "1", "1", "2", "2", "2", "1", "1", "1",…
$ edad_jefe  <dbl> 91, 68, 56, 87, 27, 57, 47, 75, 70, 69, 48, 73, 64, 55, 58,…
$ educa_jefe <chr> "03", "08", "10", "11", "08", "08", "10", "06", "10", "04",…
$ tot_integ  <dbl> 3, 2, 3, 4, 1, 4, 4, 1, 3, 2, 5, 1, 4, 3, 1, 6, 4, 2, 3, 1,…
$ hombres    <dbl> 0, 1, 2, 2, 1, 2, 2, 0, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 3, 0,…
$ mujeres    <dbl> 3, 1, 1, 2, 0, 2, 2, 1, 2, 1, 4, 0, 3, 2, 1, 5, 3, 1, 0, 1,…
$ mayores    <dbl> 3, 2, 3, 4, 1, 3, 4, 1, 3, 2, 5, 1, 4, 2, 1, 4, 4, 2, 1, 1,…
$ menores    <dbl> 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 2, 0, 0, 2, 0,…
$ p12_64     <dbl> 2, 1, 3, 2, 1, 3, 4, 0, 2, 0, 5, 0, 4, 2, 1, 4, 3, 0, 1, 1,…
$ p65mas     <dbl> 1, 1, 0, 2, 0, 0, 0, 1, 1, 2, 0, 1, 0, 0, 0, 0, 1, 2, 0, 0,…
$ ocupados   <dbl> 1, 2, 2, 0, 1, 3, 1, 0, 3, 1, 1, 0, 1, 1, 0, 3, 1, 1, 1, 1,…
$ percep_ing <dbl> 3, 2, 2, 2, 1, 4, 2, 1, 3, 2, 1, 1, 2, 2, 1, 3, 2, 2, 1, 1,…
$ perc_ocupa <dbl> 1, 2, 2, 0, 1, 3, 1, 0, 3, 1, 1, 0, 1, 1, 0, 3, 1, 1, 1, 1,…
$ ing_cor    <dbl> 56123.75, 108048.87, 133852.88, 105054.15, 24211.95, 121649…
$ ingtrab    <dbl> 35706.51, 66766.28, 93081.50, 0.00, 22255.43, 40255.41, 333…
$ trabajo    <dbl> 35706.51, 66766.28, 51603.24, 0.00, 17364.13, 40255.41, 327…
$ sueldos    <dbl> 33749.99, 61630.42, 41086.95, 0.00, 17364.13, 36586.94, 246…
$ horas_extr <dbl> 0.00, 0.00, 978.26, 0.00, 0.00, 0.00, 7092.39, 0.00, 0.00, …
$ comisiones <dbl> 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00,…
$ aguinaldo  <dbl> 1956.52, 4646.73, 5135.86, 0.00, 0.00, 3668.47, 1027.17, 0.…
$ indemtrab  <dbl> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,…
$ otra_rem   <dbl> 0.00, 489.13, 4402.17, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, …
$ remu_espec <dbl> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,…
$ negocio    <dbl> 0.00, 0.00, 41478.26, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0…
$ noagrop    <dbl> 0.00, 0.00, 41478.26, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0…
$ industria  <dbl> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,…
$ comercio   <dbl> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,…
$ servicios  <dbl> 0.00, 0.00, 41478.26, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0…
$ agrope     <dbl> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,…
$ agricolas  <dbl> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,…
$ pecuarios  <dbl> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,…
$ reproducc  <dbl> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,…
$ pesca      <dbl> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,…
$ otros_trab <dbl> 0.00, 0.00, 0.00, 0.00, 4891.30, 0.00, 586.95, 0.00, 0.00, …
$ rentas     <dbl> 0.00, 32282.60, 11739.13, 0.00, 0.00, 72684.78, 0.00, 0.00,…
$ utilidad   <dbl> 0.00, 0.00, 0.00, 0.00, 0.00, 72684.78, 0.00, 0.00, 16007.2…
$ arrenda    <dbl> 0.00, 32282.60, 11739.13, 0.00, 0.00, 0.00, 0.00, 0.00, 0.0…
$ transfer   <dbl> 8804.34, 8999.99, 0.00, 90538.03, 1956.52, 0.00, 26902.17, …
$ jubilacion <dbl> 0.00, 0.00, 0.00, 79239.13, 0.00, 0.00, 0.00, 73369.56, 440…
$ becas      <dbl> 391.3, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.…
$ donativos  <dbl> 0.00, 0.00, 0.00, 0.00, 1956.52, 0.00, 26902.17, 0.00, 0.00…
$ remesas    <dbl> 978.26, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.0…
$ bene_gob   <dbl> 7434.78, 0.00, 0.00, 11298.90, 0.00, 0.00, 0.00, 5649.45, 0…
$ transf_hog <dbl> 0.00, 8999.99, 0.00, 0.00, 0.00, 0.00, 0.00, 2442.84, 0.00,…
$ trans_inst <dbl> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,…
$ estim_alqu <dbl> 11612.90, 0.00, 29032.25, 14516.12, 0.00, 8709.67, 0.00, 14…
$ otros_ing  <dbl> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,…
$ gasto_mon  <dbl> 35091.17, 78670.73, 101647.27, 46702.31, 26927.85, 51176.07…
$ alimentos  <dbl> 9514.19, 17524.25, 18321.36, 14759.90, 12458.47, 6351.40, 1…
$ ali_dentro <dbl> 6814.20, 5181.41, 16907.08, 6274.20, 7315.63, 951.42, 11828…
$ cereales   <dbl> 1465.70, 231.42, 1362.84, 1928.53, 308.56, 617.14, 1915.67,…
$ carnes     <dbl> 617.14, 4114.28, 5142.85, 1928.57, 2442.84, 0.00, 6685.69, …
$ pescado    <dbl> 0.00, 0.00, 0.00, 0.00, 1799.99, 0.00, 1414.28, 0.00, 0.00,…
$ leche      <dbl> 269.99, 578.57, 0.00, 1414.26, 0.00, 334.28, 0.00, 565.70, …
$ huevo      <dbl> 0.00, 257.14, 1028.57, 0.00, 321.42, 0.00, 0.00, 0.00, 1002…
$ aceites    <dbl> 0.00, 0.00, 565.71, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.0…
$ tuberculo  <dbl> 0.00, 0.00, 0.00, 0.00, 1028.56, 0.00, 321.42, 621.38, 0.00…
$ verduras   <dbl> 2288.53, 0.00, 1735.69, 1002.84, 642.85, 0.00, 951.41, 2069…
$ frutas     <dbl> 1954.27, 0.00, 0.00, 0.00, 0.00, 0.00, 539.99, 1234.27, 195…
$ azucar     <dbl> 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00,…
$ cafe       <dbl> 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00,…
$ especias   <dbl> 218.57, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.0…
$ otros_alim <dbl> 0.00, 0.00, 5142.85, 0.00, 0.00, 0.00, 0.00, 3857.14, 1928.…
$ bebidas    <dbl> 0.00, 0.00, 1928.57, 0.00, 771.41, 0.00, 0.00, 462.84, 2378…
$ ali_fuera  <dbl> 2699.99, 12342.84, 1414.28, 8485.70, 5142.84, 5399.98, 5528…
$ tabaco     <dbl> 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00,…
$ vesti_calz <dbl> 2445.64, 684.78, 0.00, 1369.56, 0.00, 1751.06, 9782.60, 489…
$ vestido    <dbl> 2445.64, 684.78, 0.00, 1369.56, 0.00, 1751.06, 5380.43, 489…
$ calzado    <dbl> 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 4402.17, 0.00, 0.00, 0.…
$ vivienda   <dbl> 1736.75, 29649.66, 3232.25, 2850.00, 2700.00, 3660.00, 1822…
$ alquiler   <dbl> 0.00, 24677.41, 0.00, 0.00, 0.00, 0.00, 13935.48, 0.00, 0.0…
$ pred_cons  <dbl> 116.75, 2032.25, 2032.25, 150.00, 0.00, 150.00, 0.00, 750.0…
$ agua       <dbl> 780, 540, 750, 450, 450, 1200, 1410, 420, 840, 420, 900, 87…
$ energia    <dbl> 840.00, 2400.00, 450.00, 2250.00, 2250.00, 2310.00, 2876.61…
$ limpieza   <dbl> 2075.80, 2816.11, 1422.55, 1228.04, 890.36, 3518.67, 2386.3…
$ cuidados   <dbl> 2075.80, 2816.11, 1422.55, 1228.04, 792.54, 3518.67, 2386.3…
$ utensilios <dbl> 0.00, 0.00, 0.00, 0.00, 97.82, 0.00, 0.00, 0.00, 489.13, 23…
$ enseres    <dbl> 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00,…
$ salud      <dbl> 2641.29, 0.00, 0.00, 0.00, 0.00, 1007.60, 8902.16, 3277.16,…
$ atenc_ambu <dbl> 2641.29, 0.00, 0.00, 0.00, 0.00, 1007.60, 7923.90, 3277.16,…
$ hospital   <dbl> 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00,…
$ medicinas  <dbl> 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 978.26, 0.00, 978.26, 0…
$ transporte <dbl> 6773.62, 6706.44, 23312.90, 23574.19, 5080.63, 20601.28, 84…
$ publico    <dbl> 2314.28, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 771.42, 1157.1…
$ foraneo    <dbl> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,…
$ adqui_vehi <dbl> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,…
$ mantenim   <dbl> 2903.22, 4354.83, 11612.90, 20322.58, 4064.51, 17709.67, 53…
$ refaccion  <dbl> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,…
$ combus     <dbl> 2903.22, 4354.83, 11612.90, 20322.58, 4064.51, 17709.67, 53…
$ comunica   <dbl> 1556.12, 2351.61, 11700.00, 3251.61, 1016.12, 2891.61, 3033…
$ educa_espa <dbl> 2903.22, 0.00, 34728.25, 0.00, 4209.66, 6967.74, 9058.05, 0…
$ educacion  <dbl> 2903.22, 0.00, 0.00, 0.00, 0.00, 6967.74, 6735.47, 0.00, 0.…
$ esparci    <dbl> 0.00, 0.00, 5380.43, 0.00, 4209.66, 0.00, 2322.58, 0.00, 0.…
$ paq_turist <dbl> 0.00, 0.00, 29347.82, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0…
$ personales <dbl> 4097.44, 3870.14, 13416.08, 2920.62, 1344.17, 812.90, 4918.…
$ cuida_pers <dbl> 673.53, 3745.14, 1916.09, 2920.62, 1344.17, 812.90, 4708.95…
$ acces_pers <dbl> 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00,…
$ otros_gas  <dbl> 3423.91, 125.00, 11499.99, 0.00, 0.00, 0.00, 210.00, 0.00, …
$ transf_gas <dbl> 2903.22, 17419.35, 7213.88, 0.00, 244.56, 6505.42, 73.36, 4…
$ percep_tot <dbl> 0.00, 0.00, 0.00, 0.00, 3214.27, 0.00, 0.00, 0.00, 0.00, 0.…
$ retiro_inv <dbl> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,…
$ prestamos  <dbl> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,…
$ otras_perc <dbl> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,…
$ ero_nm_viv <dbl> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,…
$ ero_nm_hog <dbl> 0.00, 0.00, 0.00, 0.00, 3214.27, 0.00, 0.00, 0.00, 0.00, 0.…
$ erogac_tot <dbl> 0.00, 19565.21, 0.00, 28124.99, 0.00, 5771.73, 360.97, 2445…
$ cuota_viv  <dbl> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,…
$ mater_serv <dbl> 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00,…
$ material   <dbl> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,…
$ servicio   <dbl> 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00,…
$ deposito   <dbl> 0.00, 19565.21, 0.00, 28124.99, 0.00, 5771.73, 0.00, 2445.6…
$ prest_terc <dbl> 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00,…
$ pago_tarje <dbl> 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00,…
$ deudas     <dbl> 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00,…
$ balance    <dbl> 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00,…
$ otras_erog <dbl> 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 360.97, 0.00, 0.00, 0.0…
$ smg        <dbl> 15558.3, 15558.3, 15558.3, 15558.3, 15558.3, 15558.3, 15558…
dplyr::glimpse(concentradohogar[,20:30]) # en corchete del lado derecho podemos ojear columnas 
Rows: 90,102
Columns: 11
$ ocupados   <dbl> 1, 2, 2, 0, 1, 3, 1, 0, 3, 1, 1, 0, 1, 1, 0, 3, 1, 1, 1, 1,…
$ percep_ing <dbl> 3, 2, 2, 2, 1, 4, 2, 1, 3, 2, 1, 1, 2, 2, 1, 3, 2, 2, 1, 1,…
$ perc_ocupa <dbl> 1, 2, 2, 0, 1, 3, 1, 0, 3, 1, 1, 0, 1, 1, 0, 3, 1, 1, 1, 1,…
$ ing_cor    <dbl> 56123.75, 108048.87, 133852.88, 105054.15, 24211.95, 121649…
$ ingtrab    <dbl> 35706.51, 66766.28, 93081.50, 0.00, 22255.43, 40255.41, 333…
$ trabajo    <dbl> 35706.51, 66766.28, 51603.24, 0.00, 17364.13, 40255.41, 327…
$ sueldos    <dbl> 33749.99, 61630.42, 41086.95, 0.00, 17364.13, 36586.94, 246…
$ horas_extr <dbl> 0.00, 0.00, 978.26, 0.00, 0.00, 0.00, 7092.39, 0.00, 0.00, …
$ comisiones <dbl> 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00,…
$ aguinaldo  <dbl> 1956.52, 4646.73, 5135.86, 0.00, 0.00, 3668.47, 1027.17, 0.…
$ indemtrab  <dbl> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,…

Podemos hacer un tipo “labelbook”, usando una función que viene de la librería {sjlabelled}, get_labels(). Funciona para toda la base o para columnas, o para variables.

#print(sjlabelled::get_labels(concentradohogar)) #todas
print(sjlabelled::get_labels(concentradohogar[, 20:30])) #de las segundas 10 variables
$ocupados
NULL

$percep_ing
NULL

$perc_ocupa
NULL

$ing_cor
NULL

$ingtrab
NULL

$trabajo
NULL

$sueldos
NULL

$horas_extr
NULL

$comisiones
NULL

$aguinaldo
NULL

$indemtrab
NULL

No tienen :(

En singular nos da las etiquetas de las variables, no de los valores:

#print(get_label(concentradohogar)) #todas
print(get_label(concentradohogar[, 1:10])) #de las primeras 10 variables
                      folioviv                       foliohog 
"Identificador de la vivienda"      "Identificador del hogar" 
                     ubica_geo                        tam_loc 
        "Ubicación geográfica"          "Tamaño de localidad" 
                     est_socio                        est_dis 
      "Estrato socioeconómico"   "Estrato de diseño muestral" 
                           upm                         factor 
 "Unidad primaria de muestreo"          "Factor de expansión" 
                     clase_hog                      sexo_jefe 
              "Clase de hogar"      "Sexo del jefe del hogar" 
print(get_label(concentradohogar$clase_hog)) #
[1] "Clase de hogar"

2.6.2 Revisión con {skimr}

skimr::skim(concentradohogar)
Data summary
Name concentradohogar
Number of rows 90102
Number of columns 126
_______________________
Column type frequency:
character 10
numeric 116
________________________
Group variables None

Variable type: character

skim_variable n_missing complete_rate min max empty n_unique whitespace
folioviv 0 1 10 10 0 88823 0
foliohog 0 1 1 1 0 5 0
ubica_geo 0 1 5 5 0 1132 0
tam_loc 0 1 1 1 0 4 0
est_socio 0 1 1 1 0 4 0
est_dis 0 1 3 3 0 560 0
upm 0 1 7 7 0 10211 0
clase_hog 0 1 1 1 0 5 0
sexo_jefe 0 1 1 1 0 2 0
educa_jefe 0 1 2 2 0 11 0

Variable type: numeric

skim_variable n_missing complete_rate mean sd p0 p25 p50 p75 p100 hist
factor 0 1 416.86 419.41 6.0 156.00 283.00 530.00 6470.00 ▇▁▁▁▁
edad_jefe 0 1 51.23 15.91 13.0 39.00 50.00 63.00 109.00 ▂▇▇▂▁
tot_integ 0 1 3.44 1.78 1.0 2.00 3.00 4.00 19.00 ▇▂▁▁▁
hombres 0 1 1.66 1.12 0.0 1.00 1.00 2.00 12.00 ▇▂▁▁▁
mujeres 0 1 1.78 1.17 0.0 1.00 2.00 2.00 11.00 ▇▂▁▁▁
mayores 0 1 2.78 1.36 1.0 2.00 3.00 4.00 15.00 ▇▃▁▁▁
menores 0 1 0.65 0.95 0.0 0.00 0.00 1.00 9.00 ▇▂▁▁▁
p12_64 0 1 2.45 1.49 0.0 1.00 2.00 3.00 15.00 ▇▂▁▁▁
p65mas 0 1 0.33 0.62 0.0 0.00 0.00 1.00 4.00 ▇▂▁▁▁
ocupados 0 1 1.66 1.09 0.0 1.00 2.00 2.00 11.00 ▇▂▁▁▁
percep_ing 0 1 2.26 1.18 0.0 1.00 2.00 3.00 16.00 ▇▁▁▁▁
perc_ocupa 0 1 1.61 1.06 0.0 1.00 1.00 2.00 12.00 ▇▂▁▁▁
ing_cor 0 1 61489.96 78324.84 0.0 28385.69 46073.68 74343.65 7153770.46 ▇▁▁▁▁
ingtrab 0 1 40359.54 52327.25 0.0 12170.67 29899.10 54327.95 5891913.57 ▇▁▁▁▁
trabajo 0 1 33514.63 44828.95 0.0 49.18 23867.40 47445.65 3771994.00 ▇▁▁▁▁
sueldos 0 1 28866.79 37377.13 0.0 0.00 21130.43 41086.95 2655737.70 ▇▁▁▁▁
horas_extr 0 1 292.47 1995.00 0.0 0.00 0.00 0.00 110543.47 ▇▁▁▁▁
comisiones 0 1 879.37 6484.49 0.0 0.00 0.00 0.00 690491.80 ▇▁▁▁▁
aguinaldo 0 1 1489.57 3781.67 0.0 0.00 0.00 1475.40 293478.25 ▇▁▁▁▁
indemtrab 0 1 129.04 3639.71 0.0 0.00 0.00 0.00 449999.99 ▇▁▁▁▁
otra_rem 0 1 654.77 3389.42 0.0 0.00 0.00 0.00 225245.89 ▇▁▁▁▁
remu_espec 0 1 1202.61 11869.30 0.0 0.00 0.00 0.00 3015428.52 ▇▁▁▁▁
negocio 0 1 5525.91 28303.90 0.0 0.00 0.00 1549.18 5712891.84 ▇▁▁▁▁
noagrop 0 1 4374.96 17327.48 0.0 0.00 0.00 0.00 1114679.34 ▇▁▁▁▁
industria 0 1 997.87 8092.96 0.0 0.00 0.00 0.00 1114679.34 ▇▁▁▁▁
comercio 0 1 1466.54 11309.68 0.0 0.00 0.00 0.00 889369.06 ▇▁▁▁▁
servicios 0 1 1910.54 10479.11 0.0 0.00 0.00 0.00 889524.59 ▇▁▁▁▁
agrope 0 1 1150.96 22407.72 0.0 0.00 0.00 0.00 5712891.84 ▇▁▁▁▁
agricolas 0 1 584.18 9493.09 0.0 0.00 0.00 0.00 1473748.04 ▇▁▁▁▁
pecuarios 0 1 489.26 19957.84 0.0 0.00 0.00 0.00 5712891.84 ▇▁▁▁▁
reproducc 0 1 29.05 1651.04 0.0 0.00 0.00 0.00 424032.78 ▇▁▁▁▁
pesca 0 1 48.46 1442.87 0.0 0.00 0.00 0.00 154190.54 ▇▁▁▁▁
otros_trab 0 1 1319.00 7439.20 0.0 0.00 0.00 0.00 1257295.08 ▇▁▁▁▁
rentas 0 1 3585.66 51810.69 0.0 0.00 0.00 0.00 6854754.09 ▇▁▁▁▁
utilidad 0 1 2922.56 50880.21 0.0 0.00 0.00 0.00 6854754.09 ▇▁▁▁▁
arrenda 0 1 663.09 7270.20 0.0 0.00 0.00 0.00 733695.65 ▇▁▁▁▁
transfer 0 1 10901.15 21915.52 0.0 0.00 3692.92 12913.03 1001867.40 ▇▁▁▁▁
jubilacion 0 1 4722.85 17245.75 0.0 0.00 0.00 0.00 688524.59 ▇▁▁▁▁
becas 0 1 105.17 1548.61 0.0 0.00 0.00 0.00 153831.51 ▇▁▁▁▁
donativos 0 1 1305.04 5071.83 0.0 0.00 0.00 0.00 413114.75 ▇▁▁▁▁
remesas 0 1 848.70 5791.98 0.0 0.00 0.00 0.00 238524.59 ▇▁▁▁▁
bene_gob 0 1 1849.19 3366.51 0.0 0.00 0.00 2611.22 63195.64 ▇▁▁▁▁
transf_hog 0 1 1512.32 4697.95 0.0 0.00 0.00 771.42 465000.00 ▇▁▁▁▁
trans_inst 0 1 557.90 7606.45 0.0 0.00 0.00 0.00 978260.86 ▇▁▁▁▁
estim_alqu 0 1 6592.66 8338.00 0.0 2903.22 4500.00 8709.67 348387.09 ▇▁▁▁▁
otros_ing 0 1 50.95 973.27 0.0 0.00 0.00 0.00 73369.56 ▇▁▁▁▁
gasto_mon 0 1 37615.18 34649.23 0.0 18561.37 29678.83 45901.43 1703575.17 ▇▁▁▁▁
alimentos 0 1 14046.16 11010.37 0.0 7482.73 11957.05 17961.27 849839.62 ▇▁▁▁▁
ali_dentro 0 1 11533.55 7834.39 0.0 6197.01 10144.16 15158.38 302942.31 ▇▁▁▁▁
cereales 0 1 2052.96 1570.90 0.0 977.12 1761.40 2751.39 32631.39 ▇▁▁▁▁
carnes 0 1 2493.10 2847.37 0.0 359.99 1774.27 3689.96 157448.49 ▇▁▁▁▁
pescado 0 1 248.92 857.41 0.0 0.00 0.00 0.00 60685.70 ▇▁▁▁▁
leche 0 1 1011.34 1277.08 0.0 0.00 642.85 1427.11 32014.25 ▇▁▁▁▁
huevo 0 1 515.33 595.19 0.0 0.00 385.71 848.56 9218.54 ▇▁▁▁▁
aceites 0 1 214.21 446.77 0.0 0.00 0.00 347.14 13395.84 ▇▁▁▁▁
tuberculo 0 1 198.87 337.12 0.0 0.00 0.00 321.42 12857.14 ▇▁▁▁▁
verduras 0 1 1241.79 1234.53 0.0 321.42 977.12 1810.20 54784.26 ▇▁▁▁▁
frutas 0 1 469.28 841.42 0.0 0.00 0.00 642.85 38571.42 ▇▁▁▁▁
azucar 0 1 109.78 293.17 0.0 0.00 0.00 0.00 25714.28 ▇▁▁▁▁
cafe 0 1 120.40 377.98 0.0 0.00 0.00 0.00 12471.42 ▇▁▁▁▁
especias 0 1 108.18 284.00 0.0 0.00 0.00 64.28 13139.99 ▇▁▁▁▁
otros_alim 0 1 1651.95 2858.15 0.0 0.00 321.42 2314.28 55028.54 ▇▁▁▁▁
bebidas 0 1 1097.43 1570.63 0.0 218.57 719.99 1480.50 128237.11 ▇▁▁▁▁
ali_fuera 0 1 2445.31 6907.11 0.0 0.00 0.00 2571.42 802542.78 ▇▁▁▁▁
tabaco 0 1 67.31 449.34 0.0 0.00 0.00 0.00 19234.27 ▇▁▁▁▁
vesti_calz 0 1 1470.03 2611.47 0.0 0.00 684.77 1858.68 131191.33 ▇▁▁▁▁
vestido 0 1 906.82 1863.60 0.0 0.00 273.91 1105.42 96050.32 ▇▁▁▁▁
calzado 0 1 563.21 1092.30 0.0 0.00 107.60 733.69 47739.11 ▇▁▁▁▁
vivienda 0 1 3361.12 5429.41 0.0 1020.00 2160.00 3862.21 604814.51 ▇▁▁▁▁
alquiler 0 1 1031.01 4667.52 0.0 0.00 0.00 0.00 581951.61 ▇▁▁▁▁
pred_cons 0 1 180.63 1100.52 0.0 0.00 0.00 87.50 116400.00 ▇▁▁▁▁
agua 0 1 407.19 776.34 0.0 0.00 240.00 540.00 78000.00 ▇▁▁▁▁
energia 0 1 1742.29 1743.06 0.0 553.69 1400.80 2400.00 113080.64 ▇▁▁▁▁
limpieza 0 1 2345.68 3932.56 0.0 771.00 1379.01 2481.43 302696.82 ▇▁▁▁▁
cuidados 0 1 1745.97 2833.03 0.0 678.00 1158.36 1896.00 128197.70 ▇▁▁▁▁
utensilios 0 1 218.77 1378.17 0.0 0.00 0.00 0.00 294740.20 ▇▁▁▁▁
enseres 0 1 380.94 1649.55 0.0 0.00 0.00 0.00 90098.34 ▇▁▁▁▁
salud 0 1 1270.55 5662.22 0.0 0.00 146.73 841.29 324547.74 ▇▁▁▁▁
atenc_ambu 0 1 903.67 4754.37 0.0 0.00 0.00 538.03 283695.64 ▇▁▁▁▁
hospital 0 1 152.99 2368.65 0.0 0.00 0.00 0.00 241434.73 ▇▁▁▁▁
medicinas 0 1 213.90 1294.84 0.0 0.00 0.00 97.82 127464.42 ▇▁▁▁▁
transporte 0 1 7538.59 12471.10 0.0 1975.75 4803.31 9299.92 491168.39 ▇▁▁▁▁
publico 0 1 1365.08 2596.60 0.0 0.00 0.00 1851.41 137031.32 ▇▁▁▁▁
foraneo 0 1 205.99 1200.95 0.0 0.00 0.00 0.00 88011.04 ▇▁▁▁▁
adqui_vehi 0 1 1045.70 9662.96 0.0 0.00 0.00 0.00 489130.43 ▇▁▁▁▁
mantenim 0 1 3122.62 4882.43 0.0 0.00 929.03 4770.49 113684.95 ▇▁▁▁▁
refaccion 0 1 275.12 1029.55 0.0 0.00 0.00 0.00 39130.43 ▇▁▁▁▁
combus 0 1 2847.50 4483.70 0.0 0.00 870.96 4354.83 113225.80 ▇▁▁▁▁
comunica 0 1 1799.20 2322.07 0.0 580.64 1380.00 2409.98 105366.77 ▇▁▁▁▁
educa_espa 0 1 3506.12 8866.90 0.0 0.00 753.00 3641.60 475717.08 ▇▁▁▁▁
educacion 0 1 2466.90 7454.48 0.0 0.00 0.00 2177.41 451161.26 ▇▁▁▁▁
esparci 0 1 718.84 2310.87 0.0 0.00 0.00 747.00 96406.00 ▇▁▁▁▁
paq_turist 0 1 320.39 2610.74 0.0 0.00 0.00 0.00 166304.34 ▇▁▁▁▁
personales 0 1 2953.55 4402.36 0.0 998.69 1884.00 3452.78 296006.96 ▇▁▁▁▁
cuida_pers 0 1 2239.89 2335.69 0.0 888.34 1628.67 2824.79 69462.00 ▇▁▁▁▁
acces_pers 0 1 94.06 433.90 0.0 0.00 0.00 0.00 23996.72 ▇▁▁▁▁
otros_gas 0 1 619.60 3203.71 0.0 0.00 0.00 48.91 295256.96 ▇▁▁▁▁
transf_gas 0 1 1123.38 5306.60 0.0 0.00 0.00 225.08 737704.91 ▇▁▁▁▁
percep_tot 0 1 3940.89 40469.54 0.0 0.00 0.00 2842.18 8171344.09 ▇▁▁▁▁
retiro_inv 0 1 993.91 14080.54 0.0 0.00 0.00 0.00 3480662.98 ▇▁▁▁▁
prestamos 0 1 407.08 4801.37 0.0 0.00 0.00 0.00 540983.60 ▇▁▁▁▁
otras_perc 0 1 877.86 24750.31 0.0 0.00 0.00 0.00 4402173.91 ▇▁▁▁▁
ero_nm_viv 0 1 40.11 2162.50 0.0 0.00 0.00 0.00 440217.38 ▇▁▁▁▁
ero_nm_hog 0 1 1621.92 27703.08 0.0 0.00 0.00 1349.97 8171344.09 ▇▁▁▁▁
erogac_tot 0 1 7659.37 43226.39 0.0 0.00 489.13 6208.52 5733149.15 ▇▁▁▁▁
cuota_viv 0 1 712.97 3500.36 0.0 0.00 0.00 0.00 150000.00 ▇▁▁▁▁
mater_serv 0 1 441.57 4152.57 0.0 0.00 0.00 0.00 391304.34 ▇▁▁▁▁
material 0 1 267.11 2604.68 0.0 0.00 0.00 0.00 244565.21 ▇▁▁▁▁
servicio 0 1 174.46 2301.69 0.0 0.00 0.00 0.00 195652.17 ▇▁▁▁▁
deposito 0 1 4006.25 31415.73 0.0 0.00 0.00 1320.65 4176795.57 ▇▁▁▁▁
prest_terc 0 1 125.48 4000.35 0.0 0.00 0.00 0.00 1100543.47 ▇▁▁▁▁
pago_tarje 0 1 990.75 9069.74 0.0 0.00 0.00 0.00 1640883.97 ▇▁▁▁▁
deudas 0 1 430.28 2720.39 0.0 0.00 0.00 0.00 122282.60 ▇▁▁▁▁
balance 0 1 420.11 4608.27 0.0 0.00 0.00 0.00 496467.39 ▇▁▁▁▁
otras_erog 0 1 531.96 14050.93 0.0 0.00 0.00 0.00 2934782.60 ▇▁▁▁▁
smg 0 1 15558.30 0.00 15558.3 15558.30 15558.30 15558.30 15558.30 ▁▁▇▁▁

2.6.3 Selección de casos y de variables

Poco a poco vamos comprendiendo más la lógica de R. Hay varias “formas” de programar. Por lo que no te asustes si varios códigos llegan al mismo resultado

Para revisar el contenido de un data frame podemos usar, como lo hicimos anteriormente, el formato dataframe$var o usar corchete, checa como estas cuatro formas tan el mismo resultado.

x<-concentradohogar$ing_cor
x<-concentradohogar[["ing_cor"]]  # ¡Ojo con las comillas! 
x<-concentradohogar[,23]
x<-concentradohogar[,"ing_cor"]

Ahora, con el formato de dplyr podemos llegar a lo mismo

x<-concentradohogar %>% 
  select(ing_cor)

2.7 “Subsetting”

Selección “inversa” O sea no “botar algo”, es con el negativo. No funciona con todos los formatos

x<-concentradohogar %>% 
  select(-ing_cor)

rm(x) #rm sólo bota objetos

Pero con los otros formatos podemos “asignar” valores adentro de un data.frame, y uno de eso valores puede ser “la nada””

concentradohogar$ing_cor2<-concentradohogar$ing_cor
concentradohogar$ing_cor2<-NULL

De aquí viene esa cuesta en el aprendizaje; tenemos que comprender en qué forma programó el que hizo la librería e incluso a veces cómo aprendió quién te está enseñando o el foro que estás leyendo.

Rara vez utilizamos una base de datos completa, y rara vez queremos hacer operaciones completas con ellas.

Vamos a pedir cosas más específicas y podemos seleccionar observaciones o filas. Como nuestra base de datos es muy grande, guardaremos el filtro o selección en un objeto.

subset1<-concentradohogar[concentradohogar$ing_cor>5000,]

También podemos seleccionar columnas

subset2<- concentradohogar[, c("sexo_jefe", "edad_jefe", "ing_cor")]

podemos combinar los dos tipos de selección

subset3<- concentradohogar[(concentradohogar$ing_cor>5000 & concentradohogar$sexo_jefe==1 ), c("sexo_jefe", "edad_jefe", "ing_cor")]

Con dplyr, podemos usar “filter” y “select”

subset4<-concentradohogar %>% 
  dplyr::filter(ing_cor>5000 & sexo_jefe==1) %>%
  dplyr::select(sexo_jefe, edad_jefe, ing_cor)

3 Ejercicio

  • Escoja una base con la que usted esté trabajando. Impórtela
  • Replique la exploración de la práctica: incluya limpiar nombre, alguna revisión global y, opcionalmente, alguna selección de variables o casos de acuerdo a su interés
  • Utilice al menos un comando con {dplyr} para revisar algo
  • Adjunte un archivo con información de la base (para que yo verifique su importación.), así como el código en .R

Envíe el script utilizado al formulario