Varias funciones estadísticas estándar están disponibles como funciones principales. Otras funciones adicionales y específicas están disponibles a través de librerías pre-instaladas o de librerías que es necesario instalar. Se usa la función install.packages() para instalar una librería desde CRAN (Comprehensive R Archive Network). Luego de instalada una librería, se llama a uso y disponibilidad de sus funciones con library().
La descarga de paquetes se hace una sola vez en nuestra PC y luego se los “llama” al inicio de cada sesión. Pero si actualizo o reinstalo R, debo reinstalar las librerías.
Ejemplo: instalamos y accedemos a la librería “gdata”.
library(gdata)
## Warning: package 'gdata' was built under R version 4.3.3
##
## Attaching package: 'gdata'
## The following object is masked from 'package:stats':
##
## nobs
## The following object is masked from 'package:utils':
##
## object.size
## The following object is masked from 'package:base':
##
## startsWith
Pueden aparecer avisos, pero la librería ya está disponible para usar sus funciones.
Para obtener información sobre una librería:
library(help=gdata)
Para obtener ayuda sobre una función en particular dentro de una librería:
library(foreign)
help(read.spss)
A veces es preciso indicar el repositorio desde el que R debe descargar el paquete. Ejemplos:
install.packages("foreign", repos="http://cran.itam.mx/", dependencies = TRUE)
Algunas de las librerías que usaremos frecuentemente durante el curso y que conviene tener instaladas son:
if (!require("TraMineR")) install.packages("TraMineR")
library(TraMineR)
if (!require("prettyR")) install.packages("prettyR")
library(prettyR)
if (!require("foreign")) install.packages("foreign")
library(foreign)
if (!require("cluster")) install.packages("cluster")
library(cluster)
if (!require("dplyr")) install.packages("dplyr")
library(dplyr)
if (!require("memisc")) install.packages("memisc")
library(memisc)
if (!require("car")) install.packages("car")
library(car)
if (!require("skimr")) install.packages("skimr")
library(skimr)
Primero hay que saber en qué directorio trabaja R (dónde busca y envía archivos).
getwd()
## [1] "C:/Users/liaca/OneDrive - El Colegio de México A.C/06_CLASES/FLACSO_Secuencias"
Esta función nos da el directorio en el que está trabajando R.
Para establecer el directorio en el que deseamos que trabaje usamos la función setwd.
?setwd
setwd("C:/Users/liaca/OneDrive - El Colegio de México A.C/06_CLASES/FLACSO_Secuencias/DATOS")
getwd()
## [1] "C:/Users/liaca/OneDrive - El Colegio de México A.C/06_CLASES/FLACSO_Secuencias/DATOS"
Si fijamos el directorio en una carpeta que contenga los datos que vamos a cargar, podemos llamar después los archivos directamente. Atención a las diagonales; en R tienen que ser hacia la derecha (“/”), pero en PC la ruta se indica con diagonales hacia la izquierda (“"). Hay que cambiarlas.
base_txt <- read.table("base_ej.txt", header=TRUE)
head(base_txt)
header=TRUE indica que la primera fila es el nombre de las variables
## id sexo edad hijos
## 1 1 1 34 2
## 2 2 2 28 0
## 3 3 1 45 3
## 4 4 2 39 1
## 5 5 2 31 0
base_csv <- read.csv("testdat.csv", header=T)
head(base_csv)
## Variable1 Variable2
## 1 6 67
## 2 65 16
## 3 12 56
## 4 56 34
## 5 45 54
## 6 84 42
if (!require("openxlsx")) install.packages("openxlsx")
library(openxlsx)
base_xls <- read.xlsx("test.xlsx", sheet=1)
sheet=1 indica que tiene que importar los datos de la primera hoja del Excel.
## Variable1 Variable2
## 1 6 67
## 2 65 16
## 3 12 56
## 4 56 34
## 5 45 54
## 6 84 42
base_spss <- read.spss("test_spss.sav", to.data.frame=TRUE)
head(base_spss)
## id sexo edad hijos
## 1 1 1 34 2
## 2 2 2 28 0
## 3 3 1 45 3
## 4 4 2 39 1
## 5 5 2 31 0
if (!require("haven")) install.packages("haven")
library(haven)
base_stata <- read_dta("test_stata.dta")
head(base_stata)
En la librería haven se usa la función “read_dta”, que sirve para abrir bases de Stata de versiones 13 y superior. Si la base de datos fue creada con Stata 12 o menos, se puede usar la función “read.dta” de la librería foreign.
## # A tibble: 5 × 4
## id sexo edad hijos
## <dbl> <dbl> <dbl> <dbl>
## 1 1 1 34 2
## 2 2 2 28 0
## 3 3 1 45 3
## 4 4 2 39 1
## 5 5 2 31 0
Puede ser útil guardar las bases en un formato distinto, ya sea para guardar resultados (por ejemplo, en Excel) o para usar las bases en otro paquete estadístico (como Stata o SPSS). Los archivos se guardan en el mismo directorio que habíamos indicado antes en setwd(). Podemos cambiarlo antes de guardar, si así lo queremos, o indicar la ruta completa en el comando de write.
write.csv(base_spss, file="spss_a_csv.csv",colnames=T,sep=",")
library(openxlsx)
write.xlsx(base_txt, "txt_a_xls.xlsx")
write.table(base_stata, "stata_a_txt.txt", col.names=TRUE)
library(haven)
write_sav(base_txt, "txt_a_spss.sav")
library(haven)
write_dta(base_txt, "txt_a_stata.dta")
Antes de empezar, conviene limpiar el entorno de trabajo de los objetos del trabajo previo que ya no vamos a usar.
ls()
## [1] "base_csv" "base_spss" "base_stata" "base_txt" "base_xls"
rm(list=ls())
ls()
## character(0)
ls() muestra la lista de objetos que hay en el entorno. rm los elimina.
Vamos a trabajar con una versión limpia de la Eder 2011, que cargaremos desde un achivo de Stata.
eder <- read.dta("Ederlimpia.dta")
Veamos cuántas filas y cuántas columnas tiene la base de datos.
dim(eder)
## [1] 109034 170
Tiene 109,034 filas y 170 columnas.
nrow(eder)
## [1] 109034
ncol(eder)
## [1] 170
Nos da la misma información por separado.
Para visualizar la base de datos, usamos el comando View (equivale a pulsar sobre la base en el directorio de trabajo). Abre la base en una ventana aparte.
View(eder)
También podemos visualizar directamente en la consola, indicando que nos muestre los primeros casos de la base de datos.
head(eder)
## folio cd_a ent con upm v_sel n_hog h_mud per d_sem n_pro_viv n_ren
## 1 1 14 01 0167 00092 02 1 0 311 206 0081 02
## 2 1 14 01 0167 00092 02 1 0 311 206 0081 02
## 3 1 14 01 0167 00092 02 1 0 311 206 0081 02
## 4 1 14 01 0167 00092 02 1 0 311 206 0081 02
## 5 1 14 01 0167 00092 02 1 0 311 206 0081 02
## 6 1 14 01 0167 00092 02 1 0 311 206 0081 02
## edad_retro sex p1_anio p1_mes p1_eda p2_1 p2_1_c p2_2
## 1 6 2 1984 10 33 AGUASCALIENTES 1 AGUASCALIENTES
## 2 7 2 1985 10 33 AGUASCALIENTES 1 AGUASCALIENTES
## 3 8 2 1986 10 33 AGUASCALIENTES 1 AGUASCALIENTES
## 4 9 2 1987 10 33 AGUASCALIENTES 1 AGUASCALIENTES
## 5 10 2 1988 10 33 AGUASCALIENTES 1 AGUASCALIENTES
## 6 11 2 1989 10 33 AGUASCALIENTES 1 AGUASCALIENTES
## p2_3 p2_3_c p2_4 conmig acumig conmign acumign conmigi acumigi
## 1 AGUASCALIENTES 1 2 0 0 0 0 0 0
## 2 AGUASCALIENTES 1 2 0 0 0 0 0 0
## 3 AGUASCALIENTES 1 2 0 0 0 0 0 0
## 4 AGUASCALIENTES 1 2 0 0 0 0 0 0
## 5 AGUASCALIENTES 1 2 0 0 0 0 0 0
## 6 AGUASCALIENTES 1 2 0 0 0 0 0 0
## sinmig p3_1 p3_2 p3_3 p3_4_anio p3_4_nivel p4_1 p4_3 p4_4 p4_4_c p4_5 p4_5_c
## 1 0 1 1 1 3 2 1 0 0 0 0 0
## 2 0 1 1 1 3 2 1 0 0 0 0 0
## 3 0 1 1 1 3 2 1 0 0 0 0 0
## 4 0 1 1 1 3 2 1 0 0 0 0 0
## 5 0 1 1 1 3 2 1 0 0 0 0 0
## 6 0 1 1 1 3 2 1 0 0 0 0 0
## p4_6 p4_7 p4_8 p4_9 conlab aculab camlaba aculaba deslabc deslaba p5_1a_pa
## 1 0 0 0 0 0 0 0 0 0 0 60
## 2 0 0 0 0 0 0 0 0 0 0 60
## 3 0 0 0 0 0 0 0 0 0 0 60
## 4 0 0 0 0 0 0 0 0 0 0 60
## 5 0 0 0 0 0 0 0 0 0 0 60
## 6 0 0 0 0 0 0 0 0 0 0 60
## p5_1b_pa p5_1a_ma p5_1b_ma p5_2 p5_3 p6_1 p6_2_nom_1 p6_2_anio1 p6_3_nup_1
## 1 2 60 2 2 0 1 0 0 0
## 2 2 60 2 2 0 1 0 0 0
## 3 2 60 2 2 0 1 0 0 0
## 4 2 60 2 2 0 1 0 0 0
## 5 2 60 2 2 0 1 0 0 0
## 6 2 60 2 2 0 1 0 0 0
## p6_6_1 p6_2_nom_2 p6_2_anio2 p6_3_nup_2 p6_6_2 p6_2_nom_3 p6_2_anio3
## 1 0 0 0 0 0 0 0
## 2 0 0 0 0 0 0 0
## 3 0 0 0 0 0 0 0
## 4 0 0 0 0 0 0 0
## 5 0 0 0 0 0 0 0
## 6 0 0 0 0 0 0 0
## p6_3_nup_3 p6_6_3 p6_2_nom_4 p6_2_anio4 p6_3_nup_4 p6_6_4 sincony p6_7_so
## 1 0 0 0 0 0 0 SO 0
## 2 0 0 0 0 0 0 SO 0
## 3 0 0 0 0 0 0 SO 0
## 4 0 0 0 0 0 0 SO 0
## 5 0 0 0 0 0 0 SO 0
## 6 0 0 0 0 0 0 SO 0
## p6_7_sa p6_8 p7_1 p7_2_nom_1 p7_2_sex_1 p7_3_1 p7_4_1 p7_5_1 p7_7_1
## 1 0 0 3 0 0 0 0 0 0
## 2 0 0 3 0 0 0 0 0 0
## 3 0 0 3 0 0 0 0 0 0
## 4 0 0 3 0 0 0 0 0 0
## 5 0 0 3 0 0 0 0 0 0
## 6 0 0 3 0 0 0 0 0 0
## p7_2_nom_2 p7_2_sex_2 p7_3_2 p7_4_2 p7_5_2 p7_7_2 p7_2_nom_3 p7_2_sex_3
## 1 0 0 0 0 0 0 0 0
## 2 0 0 0 0 0 0 0 0
## 3 0 0 0 0 0 0 0 0
## 4 0 0 0 0 0 0 0 0
## 5 0 0 0 0 0 0 0 0
## 6 0 0 0 0 0 0 0 0
## p7_3_3 p7_4_3 p7_5_3 p7_7_3 p7_2_nom_4 p7_2_sex_4 p7_3_4 p7_4_4 p7_5_4 p7_7_4
## 1 0 0 0 0 0 0 0 0 0 0
## 2 0 0 0 0 0 0 0 0 0 0
## 3 0 0 0 0 0 0 0 0 0 0
## 4 0 0 0 0 0 0 0 0 0 0
## 5 0 0 0 0 0 0 0 0 0 0
## 6 0 0 0 0 0 0 0 0 0 0
## p7_2_nom_5 p7_2_sex_5 p7_3_5 p7_4_5 p7_5_5 p7_7_5 p7_2_nom_6 p7_2_sex_6
## 1 0 0 0 0 0 0 0 0
## 2 0 0 0 0 0 0 0 0
## 3 0 0 0 0 0 0 0 0
## 4 0 0 0 0 0 0 0 0
## 5 0 0 0 0 0 0 0 0
## 6 0 0 0 0 0 0 0 0
## p7_3_6 p7_4_6 p7_5_6 p7_7_6 p7_2_nom_7 p7_2_sex_7 p7_3_7 p7_4_7 p7_5_7 p7_7_7
## 1 0 0 0 0 0 0 0 0 0 0
## 2 0 0 0 0 0 0 0 0 0 0
## 3 0 0 0 0 0 0 0 0 0 0
## 4 0 0 0 0 0 0 0 0 0 0
## 5 0 0 0 0 0 0 0 0 0 0
## 6 0 0 0 0 0 0 0 0 0 0
## p7_2_nom_8 p7_2_sex_8 p7_3_8 p7_4_8 p7_5_8 p7_7_8 p7_2_nom_9 p7_2_sex_9
## 1 0 0 0 0 0 0 0 0
## 2 0 0 0 0 0 0 0 0
## 3 0 0 0 0 0 0 0 0
## 4 0 0 0 0 0 0 0 0
## 5 0 0 0 0 0 0 0 0
## 6 0 0 0 0 0 0 0 0
## p7_3_9 p7_4_9 p7_5_9 p7_7_9 p7_2_nom10 p7_2_sex10 p7_3_10 p7_4_10 p7_5_10
## 1 0 0 0 0 0 0 0 0 0
## 2 0 0 0 0 0 0 0 0 0
## 3 0 0 0 0 0 0 0 0 0
## 4 0 0 0 0 0 0 0 0 0
## 5 0 0 0 0 0 0 0 0 0
## 6 0 0 0 0 0 0 0 0 0
## p7_7_10 p7_2_nom11 p7_2_sex11 p7_3_11 p7_4_11 p7_5_11 p7_7_11 p7_2_nom12
## 1 0 0 0 0 0 0 0 0
## 2 0 0 0 0 0 0 0 0
## 3 0 0 0 0 0 0 0 0
## 4 0 0 0 0 0 0 0 0
## 5 0 0 0 0 0 0 0 0
## 6 0 0 0 0 0 0 0 0
## p7_2_sex12 p7_3_12 p7_4_12 p7_5_12 p7_7_12 p7_2_nom13 p7_2_sex13 p7_3_13
## 1 0 0 0 0 0 0 0 0
## 2 0 0 0 0 0 0 0 0
## 3 0 0 0 0 0 0 0 0
## 4 0 0 0 0 0 0 0 0
## 5 0 0 0 0 0 0 0 0
## 6 0 0 0 0 0 0 0 0
## p7_4_13 p7_5_13 p7_7_13 p7_2_nom14 p7_2_sex14 p7_3_14 p7_4_14 p7_5_14 p7_7_14
## 1 0 0 0 0 0 0 0 0 0
## 2 0 0 0 0 0 0 0 0 0
## 3 0 0 0 0 0 0 0 0 0
## 4 0 0 0 0 0 0 0 0 0
## 5 0 0 0 0 0 0 0 0 0
## 6 0 0 0 0 0 0 0 0 0
## acuhijo p8_1 fac anio_naci cohorte tercilesios estrato
## 1 0 0 2103 1978 3 Alto 3
## 2 0 0 2103 1978 3 Alto 3
## 3 0 0 2103 1978 3 Alto 3
## 4 0 0 2103 1978 3 Alto 3
## 5 0 0 2103 1978 3 Alto 3
## 6 0 0 2103 1978 3 Alto 3
Por defecto muestra las primeras 6 filas de todas las variables.
Podemos indicar cuántos casos queremos que muestre y también de qué variables.
head(eder,2)
## folio cd_a ent con upm v_sel n_hog h_mud per d_sem n_pro_viv n_ren
## 1 1 14 01 0167 00092 02 1 0 311 206 0081 02
## 2 1 14 01 0167 00092 02 1 0 311 206 0081 02
## edad_retro sex p1_anio p1_mes p1_eda p2_1 p2_1_c p2_2
## 1 6 2 1984 10 33 AGUASCALIENTES 1 AGUASCALIENTES
## 2 7 2 1985 10 33 AGUASCALIENTES 1 AGUASCALIENTES
## p2_3 p2_3_c p2_4 conmig acumig conmign acumign conmigi acumigi
## 1 AGUASCALIENTES 1 2 0 0 0 0 0 0
## 2 AGUASCALIENTES 1 2 0 0 0 0 0 0
## sinmig p3_1 p3_2 p3_3 p3_4_anio p3_4_nivel p4_1 p4_3 p4_4 p4_4_c p4_5 p4_5_c
## 1 0 1 1 1 3 2 1 0 0 0 0 0
## 2 0 1 1 1 3 2 1 0 0 0 0 0
## p4_6 p4_7 p4_8 p4_9 conlab aculab camlaba aculaba deslabc deslaba p5_1a_pa
## 1 0 0 0 0 0 0 0 0 0 0 60
## 2 0 0 0 0 0 0 0 0 0 0 60
## p5_1b_pa p5_1a_ma p5_1b_ma p5_2 p5_3 p6_1 p6_2_nom_1 p6_2_anio1 p6_3_nup_1
## 1 2 60 2 2 0 1 0 0 0
## 2 2 60 2 2 0 1 0 0 0
## p6_6_1 p6_2_nom_2 p6_2_anio2 p6_3_nup_2 p6_6_2 p6_2_nom_3 p6_2_anio3
## 1 0 0 0 0 0 0 0
## 2 0 0 0 0 0 0 0
## p6_3_nup_3 p6_6_3 p6_2_nom_4 p6_2_anio4 p6_3_nup_4 p6_6_4 sincony p6_7_so
## 1 0 0 0 0 0 0 SO 0
## 2 0 0 0 0 0 0 SO 0
## p6_7_sa p6_8 p7_1 p7_2_nom_1 p7_2_sex_1 p7_3_1 p7_4_1 p7_5_1 p7_7_1
## 1 0 0 3 0 0 0 0 0 0
## 2 0 0 3 0 0 0 0 0 0
## p7_2_nom_2 p7_2_sex_2 p7_3_2 p7_4_2 p7_5_2 p7_7_2 p7_2_nom_3 p7_2_sex_3
## 1 0 0 0 0 0 0 0 0
## 2 0 0 0 0 0 0 0 0
## p7_3_3 p7_4_3 p7_5_3 p7_7_3 p7_2_nom_4 p7_2_sex_4 p7_3_4 p7_4_4 p7_5_4 p7_7_4
## 1 0 0 0 0 0 0 0 0 0 0
## 2 0 0 0 0 0 0 0 0 0 0
## p7_2_nom_5 p7_2_sex_5 p7_3_5 p7_4_5 p7_5_5 p7_7_5 p7_2_nom_6 p7_2_sex_6
## 1 0 0 0 0 0 0 0 0
## 2 0 0 0 0 0 0 0 0
## p7_3_6 p7_4_6 p7_5_6 p7_7_6 p7_2_nom_7 p7_2_sex_7 p7_3_7 p7_4_7 p7_5_7 p7_7_7
## 1 0 0 0 0 0 0 0 0 0 0
## 2 0 0 0 0 0 0 0 0 0 0
## p7_2_nom_8 p7_2_sex_8 p7_3_8 p7_4_8 p7_5_8 p7_7_8 p7_2_nom_9 p7_2_sex_9
## 1 0 0 0 0 0 0 0 0
## 2 0 0 0 0 0 0 0 0
## p7_3_9 p7_4_9 p7_5_9 p7_7_9 p7_2_nom10 p7_2_sex10 p7_3_10 p7_4_10 p7_5_10
## 1 0 0 0 0 0 0 0 0 0
## 2 0 0 0 0 0 0 0 0 0
## p7_7_10 p7_2_nom11 p7_2_sex11 p7_3_11 p7_4_11 p7_5_11 p7_7_11 p7_2_nom12
## 1 0 0 0 0 0 0 0 0
## 2 0 0 0 0 0 0 0 0
## p7_2_sex12 p7_3_12 p7_4_12 p7_5_12 p7_7_12 p7_2_nom13 p7_2_sex13 p7_3_13
## 1 0 0 0 0 0 0 0 0
## 2 0 0 0 0 0 0 0 0
## p7_4_13 p7_5_13 p7_7_13 p7_2_nom14 p7_2_sex14 p7_3_14 p7_4_14 p7_5_14 p7_7_14
## 1 0 0 0 0 0 0 0 0 0
## 2 0 0 0 0 0 0 0 0 0
## acuhijo p8_1 fac anio_naci cohorte tercilesios estrato
## 1 0 0 2103 1978 3 Alto 3
## 2 0 0 2103 1978 3 Alto 3
Ahora sólo muestra las dos primeras filas para todas las variables.
head(eder[,c(1:3,13:15)])
## folio cd_a ent edad_retro sex p1_anio
## 1 1 14 01 6 2 1984
## 2 1 14 01 7 2 1985
## 3 1 14 01 8 2 1986
## 4 1 14 01 9 2 1987
## 5 1 14 01 10 2 1988
## 6 1 14 01 11 2 1989
Ahora muestra las 6 primeras filas, pero sólo de las variables que le indicamos (aquellas entre la 1 y la 3 y entre la 13 y la 15).
También podemos pedirle que muestre casos que cumplen una condición en específico:
eder[eder$folio==3,c(1:3,13:15)]
## folio cd_a ent edad_retro sex p1_anio
## 83 3 14 01 6 1 1957
## 84 3 14 01 7 1 1958
## 85 3 14 01 8 1 1959
## 86 3 14 01 9 1 1960
## 87 3 14 01 10 1 1961
## 88 3 14 01 11 1 1962
## 89 3 14 01 12 1 1963
## 90 3 14 01 13 1 1964
## 91 3 14 01 14 1 1965
## 92 3 14 01 15 1 1966
## 93 3 14 01 16 1 1967
## 94 3 14 01 17 1 1968
## 95 3 14 01 18 1 1969
## 96 3 14 01 19 1 1970
## 97 3 14 01 20 1 1971
## 98 3 14 01 21 1 1972
## 99 3 14 01 22 1 1973
## 100 3 14 01 23 1 1974
## 101 3 14 01 24 1 1975
## 102 3 14 01 25 1 1976
## 103 3 14 01 26 1 1977
## 104 3 14 01 27 1 1978
## 105 3 14 01 28 1 1979
## 106 3 14 01 29 1 1980
## 107 3 14 01 30 1 1981
## 108 3 14 01 31 1 1982
## 109 3 14 01 32 1 1983
## 110 3 14 01 33 1 1984
## 111 3 14 01 34 1 1985
## 112 3 14 01 35 1 1986
## 113 3 14 01 36 1 1987
## 114 3 14 01 37 1 1988
## 115 3 14 01 38 1 1989
## 116 3 14 01 39 1 1990
## 117 3 14 01 40 1 1991
## 118 3 14 01 41 1 1992
## 119 3 14 01 42 1 1993
## 120 3 14 01 43 1 1994
## 121 3 14 01 44 1 1995
## 122 3 14 01 45 1 1996
## 123 3 14 01 46 1 1997
## 124 3 14 01 47 1 1998
## 125 3 14 01 48 1 1999
## 126 3 14 01 49 1 2000
## 127 3 14 01 50 1 2001
## 128 3 14 01 51 1 2002
## 129 3 14 01 52 1 2003
## 130 3 14 01 53 1 2004
## 131 3 14 01 54 1 2005
## 132 3 14 01 55 1 2006
## 133 3 14 01 56 1 2007
## 134 3 14 01 57 1 2008
## 135 3 14 01 58 1 2009
## 136 3 14 01 59 1 2010
## 137 3 14 01 60 1 2011
Para ver los nombres de las variables de la base de datos:
names(eder)
## [1] "folio" "cd_a" "ent" "con" "upm"
## [6] "v_sel" "n_hog" "h_mud" "per" "d_sem"
## [11] "n_pro_viv" "n_ren" "edad_retro" "sex" "p1_anio"
## [16] "p1_mes" "p1_eda" "p2_1" "p2_1_c" "p2_2"
## [21] "p2_3" "p2_3_c" "p2_4" "conmig" "acumig"
## [26] "conmign" "acumign" "conmigi" "acumigi" "sinmig"
## [31] "p3_1" "p3_2" "p3_3" "p3_4_anio" "p3_4_nivel"
## [36] "p4_1" "p4_3" "p4_4" "p4_4_c" "p4_5"
## [41] "p4_5_c" "p4_6" "p4_7" "p4_8" "p4_9"
## [46] "conlab" "aculab" "camlaba" "aculaba" "deslabc"
## [51] "deslaba" "p5_1a_pa" "p5_1b_pa" "p5_1a_ma" "p5_1b_ma"
## [56] "p5_2" "p5_3" "p6_1" "p6_2_nom_1" "p6_2_anio1"
## [61] "p6_3_nup_1" "p6_6_1" "p6_2_nom_2" "p6_2_anio2" "p6_3_nup_2"
## [66] "p6_6_2" "p6_2_nom_3" "p6_2_anio3" "p6_3_nup_3" "p6_6_3"
## [71] "p6_2_nom_4" "p6_2_anio4" "p6_3_nup_4" "p6_6_4" "sincony"
## [76] "p6_7_so" "p6_7_sa" "p6_8" "p7_1" "p7_2_nom_1"
## [81] "p7_2_sex_1" "p7_3_1" "p7_4_1" "p7_5_1" "p7_7_1"
## [86] "p7_2_nom_2" "p7_2_sex_2" "p7_3_2" "p7_4_2" "p7_5_2"
## [91] "p7_7_2" "p7_2_nom_3" "p7_2_sex_3" "p7_3_3" "p7_4_3"
## [96] "p7_5_3" "p7_7_3" "p7_2_nom_4" "p7_2_sex_4" "p7_3_4"
## [101] "p7_4_4" "p7_5_4" "p7_7_4" "p7_2_nom_5" "p7_2_sex_5"
## [106] "p7_3_5" "p7_4_5" "p7_5_5" "p7_7_5" "p7_2_nom_6"
## [111] "p7_2_sex_6" "p7_3_6" "p7_4_6" "p7_5_6" "p7_7_6"
## [116] "p7_2_nom_7" "p7_2_sex_7" "p7_3_7" "p7_4_7" "p7_5_7"
## [121] "p7_7_7" "p7_2_nom_8" "p7_2_sex_8" "p7_3_8" "p7_4_8"
## [126] "p7_5_8" "p7_7_8" "p7_2_nom_9" "p7_2_sex_9" "p7_3_9"
## [131] "p7_4_9" "p7_5_9" "p7_7_9" "p7_2_nom10" "p7_2_sex10"
## [136] "p7_3_10" "p7_4_10" "p7_5_10" "p7_7_10" "p7_2_nom11"
## [141] "p7_2_sex11" "p7_3_11" "p7_4_11" "p7_5_11" "p7_7_11"
## [146] "p7_2_nom12" "p7_2_sex12" "p7_3_12" "p7_4_12" "p7_5_12"
## [151] "p7_7_12" "p7_2_nom13" "p7_2_sex13" "p7_3_13" "p7_4_13"
## [156] "p7_5_13" "p7_7_13" "p7_2_nom14" "p7_2_sex14" "p7_3_14"
## [161] "p7_4_14" "p7_5_14" "p7_7_14" "acuhijo" "p8_1"
## [166] "fac" "anio_naci" "cohorte" "tercilesios" "estrato"
El comando names() nos da el nombre de las variables y su posición, lo cual nos permite “llamar” a una variable de cualquiera de las dos maneras.
head(eder[,c(75,168)])
## sincony cohorte
## 1 SO 3
## 2 SO 3
## 3 SO 3
## 4 SO 3
## 5 SO 3
## 6 SO 3
head(eder[,c("sincony", "cohorte")])
## sincony cohorte
## 1 SO 3
## 2 SO 3
## 3 SO 3
## 4 SO 3
## 5 SO 3
## 6 SO 3
Podemos conocer más sobre la estructura de la base de datos o sobre alguna variable concreta (tipo de variable y primeros valores).
str(eder)
## 'data.frame': 109034 obs. of 170 variables:
## $ folio : int 1 1 1 1 1 1 1 1 1 1 ...
## $ cd_a : chr "14" "14" "14" "14" ...
## $ ent : chr "01" "01" "01" "01" ...
## $ con : chr "0167" "0167" "0167" "0167" ...
## $ upm : chr "00092" "00092" "00092" "00092" ...
## $ v_sel : chr "02" "02" "02" "02" ...
## $ n_hog : chr "1" "1" "1" "1" ...
## $ h_mud : chr "0" "0" "0" "0" ...
## $ per : chr "311" "311" "311" "311" ...
## $ d_sem : chr "206" "206" "206" "206" ...
## $ n_pro_viv : chr "0081" "0081" "0081" "0081" ...
## $ n_ren : chr "02" "02" "02" "02" ...
## $ edad_retro : int 6 7 8 9 10 11 12 13 14 15 ...
## $ sex : int 2 2 2 2 2 2 2 2 2 2 ...
## $ p1_anio : int 1984 1985 1986 1987 1988 1989 1990 1991 1992 1993 ...
## $ p1_mes : int 10 10 10 10 10 10 10 10 10 10 ...
## $ p1_eda : int 33 33 33 33 33 33 33 33 33 33 ...
## $ p2_1 : chr "AGUASCALIENTES" "AGUASCALIENTES" "AGUASCALIENTES" "AGUASCALIENTES" ...
## $ p2_1_c : int 1 1 1 1 1 1 1 1 1 1 ...
## $ p2_2 : chr "AGUASCALIENTES" "AGUASCALIENTES" "AGUASCALIENTES" "AGUASCALIENTES" ...
## $ p2_3 : chr "AGUASCALIENTES" "AGUASCALIENTES" "AGUASCALIENTES" "AGUASCALIENTES" ...
## $ p2_3_c : int 1 1 1 1 1 1 1 1 1 1 ...
## $ p2_4 : int 2 2 2 2 2 2 2 2 2 2 ...
## $ conmig : int 0 0 0 0 0 0 0 0 0 0 ...
## $ acumig : int 0 0 0 0 0 0 0 0 0 0 ...
## $ conmign : int 0 0 0 0 0 0 0 0 0 0 ...
## $ acumign : int 0 0 0 0 0 0 0 0 0 0 ...
## $ conmigi : int 0 0 0 0 0 0 0 0 0 0 ...
## $ acumigi : int 0 0 0 0 0 0 0 0 0 0 ...
## $ sinmig : int 0 0 0 0 0 0 0 0 0 0 ...
## $ p3_1 : int 1 1 1 1 1 1 1 1 1 1 ...
## $ p3_2 : int 1 1 1 1 1 1 2 2 2 92 ...
## $ p3_3 : int 1 1 1 1 1 1 1 1 1 0 ...
## $ p3_4_anio : int 3 3 3 3 3 3 3 3 3 3 ...
## $ p3_4_nivel : int 2 2 2 2 2 2 2 2 2 2 ...
## $ p4_1 : int 1 1 1 1 1 1 1 1 1 1 ...
## $ p4_3 : chr "0" "0" "0" "0" ...
## $ p4_4 : chr "0" "0" "0" "0" ...
## $ p4_4_c : chr "0" "0" "0" "0" ...
## $ p4_5 : chr "0" "0" "0" "0" ...
## $ p4_5_c : chr "0" "0" "0" "0" ...
## $ p4_6 : int 0 0 0 0 0 0 0 0 0 0 ...
## $ p4_7 : chr "0" "0" "0" "0" ...
## $ p4_8 : chr "0" "0" "0" "0" ...
## $ p4_9 : int 0 0 0 0 0 0 0 0 0 0 ...
## $ conlab : int 0 0 0 0 0 0 0 0 0 0 ...
## $ aculab : int 0 0 0 0 0 0 0 0 0 0 ...
## $ camlaba : int 0 0 0 0 0 0 0 0 0 0 ...
## $ aculaba : int 0 0 0 0 0 0 0 0 0 0 ...
## $ deslabc : int 0 0 0 0 0 0 0 0 0 0 ...
## $ deslaba : int 0 0 0 0 0 0 0 0 0 0 ...
## $ p5_1a_pa : int 60 60 60 60 60 60 60 60 60 60 ...
## $ p5_1b_pa : int 2 2 2 2 2 2 2 2 2 2 ...
## $ p5_1a_ma : int 60 60 60 60 60 60 60 60 60 60 ...
## $ p5_1b_ma : int 2 2 2 2 2 2 2 2 2 2 ...
## $ p5_2 : int 2 2 2 2 2 2 2 2 2 2 ...
## $ p5_3 : int 0 0 0 0 0 0 0 0 0 0 ...
## $ p6_1 : int 1 1 1 1 1 1 1 1 1 1 ...
## $ p6_2_nom_1 : chr "0" "0" "0" "0" ...
## $ p6_2_anio1 : int 0 0 0 0 0 0 0 0 0 0 ...
## $ p6_3_nup_1 : int 0 0 0 0 0 0 0 0 0 0 ...
## $ p6_6_1 : int 0 0 0 0 0 0 0 0 0 0 ...
## $ p6_2_nom_2 : chr "0" "0" "0" "0" ...
## $ p6_2_anio2 : int 0 0 0 0 0 0 0 0 0 0 ...
## $ p6_3_nup_2 : int 0 0 0 0 0 0 0 0 0 0 ...
## $ p6_6_2 : int 0 0 0 0 0 0 0 0 0 0 ...
## $ p6_2_nom_3 : chr "0" "0" "0" "0" ...
## $ p6_2_anio3 : int 0 0 0 0 0 0 0 0 0 0 ...
## $ p6_3_nup_3 : int 0 0 0 0 0 0 0 0 0 0 ...
## $ p6_6_3 : int 0 0 0 0 0 0 0 0 0 0 ...
## $ p6_2_nom_4 : chr "0" "0" "0" "0" ...
## $ p6_2_anio4 : int 0 0 0 0 0 0 0 0 0 0 ...
## $ p6_3_nup_4 : int 0 0 0 0 0 0 0 0 0 0 ...
## $ p6_6_4 : int 0 0 0 0 0 0 0 0 0 0 ...
## $ sincony : chr "SO" "SO" "SO" "SO" ...
## $ p6_7_so : int 0 0 0 0 0 0 0 0 0 0 ...
## $ p6_7_sa : int 0 0 0 0 0 0 0 0 0 0 ...
## $ p6_8 : int 0 0 0 0 0 0 0 0 0 0 ...
## $ p7_1 : int 3 3 3 3 3 3 3 3 3 3 ...
## $ p7_2_nom_1 : chr "0" "0" "0" "0" ...
## $ p7_2_sex_1 : int 0 0 0 0 0 0 0 0 0 0 ...
## $ p7_3_1 : int 0 0 0 0 0 0 0 0 0 0 ...
## $ p7_4_1 : int 0 0 0 0 0 0 0 0 0 0 ...
## $ p7_5_1 : int 0 0 0 0 0 0 0 0 0 0 ...
## $ p7_7_1 : int 0 0 0 0 0 0 0 0 0 0 ...
## $ p7_2_nom_2 : chr "0" "0" "0" "0" ...
## $ p7_2_sex_2 : int 0 0 0 0 0 0 0 0 0 0 ...
## $ p7_3_2 : int 0 0 0 0 0 0 0 0 0 0 ...
## $ p7_4_2 : int 0 0 0 0 0 0 0 0 0 0 ...
## $ p7_5_2 : int 0 0 0 0 0 0 0 0 0 0 ...
## $ p7_7_2 : int 0 0 0 0 0 0 0 0 0 0 ...
## $ p7_2_nom_3 : chr "0" "0" "0" "0" ...
## $ p7_2_sex_3 : int 0 0 0 0 0 0 0 0 0 0 ...
## $ p7_3_3 : int 0 0 0 0 0 0 0 0 0 0 ...
## $ p7_4_3 : int 0 0 0 0 0 0 0 0 0 0 ...
## $ p7_5_3 : int 0 0 0 0 0 0 0 0 0 0 ...
## $ p7_7_3 : int 0 0 0 0 0 0 0 0 0 0 ...
## $ p7_2_nom_4 : chr "0" "0" "0" "0" ...
## $ p7_2_sex_4 : int 0 0 0 0 0 0 0 0 0 0 ...
## [list output truncated]
## - attr(*, "datalabel")= chr ""
## - attr(*, "time.stamp")= chr "28 Oct 2013 16:53"
## - attr(*, "formats")= chr [1:170] "%8.0g" "%2s" "%2s" "%4s" ...
## - attr(*, "types")= int [1:170] 252 2 2 4 5 2 1 1 3 3 ...
## - attr(*, "val.labels")= chr [1:170] "" "" "" "" ...
## - attr(*, "var.labels")= chr [1:170] "" "" "" "" ...
## - attr(*, "expansion.fields")=List of 2
## ..$ : chr [1:3] "_dta" "__xi__Vars__To__Drop__" "_Isex_2"
## ..$ : chr [1:3] "_dta" "__xi__Vars__Prefix__" "_I"
## - attr(*, "version")= int 12
## - attr(*, "label.table")=List of 1
## ..$ tercilesios: Named int [1:3] 1 2 3
## .. ..- attr(*, "names")= chr [1:3] " Bajo " " Medio " " Alto "
Otros comandos para ver la estructura general de los datos:
El comando skim() pertenece al paquete skimr. Da una visión general de los datos y muestra las características de cada variable y algunas medidas resumen, agrupadas las variables por tipo.
skimr::skim(eder)
skim_type | skim_variable | n_missing | complete_rate | character.min | character.max | character.empty | character.n_unique | character.whitespace | factor.ordered | factor.n_unique | factor.top_counts | numeric.mean | numeric.sd | numeric.p0 | numeric.p25 | numeric.p50 | numeric.p75 | numeric.p100 | numeric.hist |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
character | cd_a | 0 | 1 | 2 | 2 | 0 | 32 | 0 | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA |
character | ent | 0 | 1 | 2 | 2 | 0 | 32 | 0 | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA |
character | con | 0 | 1 | 4 | 4 | 0 | 556 | 0 | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA |
character | upm | 0 | 1 | 5 | 5 | 0 | 1318 | 0 | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA |
character | v_sel | 0 | 1 | 2 | 2 | 0 | 11 | 0 | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA |
character | n_hog | 0 | 1 | 1 | 1 | 0 | 4 | 0 | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA |
character | h_mud | 0 | 1 | 1 | 1 | 0 | 3 | 0 | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA |
character | per | 0 | 1 | 3 | 3 | 0 | 1 | 0 | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA |
character | d_sem | 0 | 1 | 3 | 3 | 0 | 16 | 0 | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA |
character | n_pro_viv | 0 | 1 | 4 | 4 | 0 | 301 | 0 | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA |
character | n_ren | 0 | 1 | 2 | 2 | 0 | 11 | 0 | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA |
character | p2_1 | 0 | 1 | 2 | 30 | 0 | 1349 | 0 | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA |
character | p2_2 | 0 | 1 | 2 | 29 | 0 | 983 | 0 | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA |
character | p2_3 | 0 | 1 | 2 | 30 | 0 | 102 | 0 | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA |
character | p4_3 | 0 | 1 | 1 | 120 | 0 | 8470 | 0 | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA |
character | p4_4 | 0 | 1 | 1 | 73 | 0 | 4147 | 0 | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA |
character | p4_4_c | 0 | 1 | 1 | 4 | 0 | 326 | 0 | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA |
character | p4_5 | 0 | 1 | 1 | 120 | 0 | 6851 | 0 | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA |
character | p4_5_c | 0 | 1 | 1 | 4 | 0 | 149 | 0 | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA |
character | p4_7 | 0 | 1 | 1 | 1 | 0 | 6 | 0 | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA |
character | p4_8 | 0 | 1 | 1 | 1 | 0 | 3 | 0 | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA |
character | p6_2_nom_1 | 0 | 1 | 1 | 26 | 0 | 1014 | 0 | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA |
character | p6_2_nom_2 | 0 | 1 | 1 | 18 | 0 | 250 | 0 | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA |
character | p6_2_nom_3 | 0 | 1 | 1 | 15 | 0 | 31 | 0 | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA |
character | p6_2_nom_4 | 0 | 1 | 1 | 12 | 0 | 5 | 0 | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA |
character | sincony | 0 | 1 | 2 | 2 | 0 | 11 | 0 | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA |
character | p7_2_nom_1 | 0 | 1 | 1 | 24 | 0 | 1248 | 0 | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA |
character | p7_2_nom_2 | 0 | 1 | 1 | 20 | 0 | 1086 | 0 | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA |
character | p7_2_nom_3 | 0 | 1 | 1 | 21 | 0 | 774 | 0 | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA |
character | p7_2_nom_4 | 0 | 1 | 1 | 19 | 0 | 420 | 0 | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA |
character | p7_2_nom_5 | 0 | 1 | 1 | 20 | 0 | 242 | 0 | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA |
character | p7_2_nom_6 | 0 | 1 | 1 | 17 | 0 | 124 | 0 | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA |
character | p7_2_nom_7 | 0 | 1 | 1 | 20 | 0 | 75 | 0 | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA |
character | p7_2_nom_8 | 0 | 1 | 1 | 17 | 0 | 42 | 0 | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA |
character | p7_2_nom_9 | 0 | 1 | 1 | 15 | 0 | 30 | 0 | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA |
character | p7_2_nom10 | 0 | 1 | 1 | 18 | 0 | 15 | 0 | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA |
character | p7_2_nom11 | 0 | 1 | 1 | 13 | 0 | 9 | 0 | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA |
character | p7_2_nom12 | 0 | 1 | 1 | 12 | 0 | 2 | 0 | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA |
character | p7_2_nom13 | 0 | 1 | 1 | 12 | 0 | 2 | 0 | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA |
character | p7_2_nom14 | 0 | 1 | 1 | 11 | 0 | 2 | 0 | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA |
factor | tercilesios | 0 | 1 | NA | NA | NA | NA | NA | FALSE | 3 | Ba: 37363, Al: 36666, Me: 35005 | NA | NA | NA | NA | NA | NA | NA | NA |
numeric | folio | 0 | 1 | NA | NA | NA | NA | NA | NA | NA | NA | 1594.4313609 | 930.4241974 | 1 | 777 | 1598 | 2402 | 3200 | ▇▇▇▇▇ |
numeric | edad_retro | 0 | 1 | NA | NA | NA | NA | NA | NA | NA | NA | 26.6689198 | 13.7791518 | 6 | 15 | 25 | 36 | 62 | ▇▇▆▃▂ |
numeric | sex | 0 | 1 | NA | NA | NA | NA | NA | NA | NA | NA | 1.5110883 | 0.4998793 | 1 | 1 | 2 | 2 | 2 | ▇▁▁▁▇ |
numeric | p1_anio | 0 | 1 | NA | NA | NA | NA | NA | NA | NA | NA | 1990.3310802 | 13.7791518 | 1955 | 1981 | 1992 | 2002 | 2011 | ▂▃▆▇▇ |
numeric | p1_mes | 0 | 1 | NA | NA | NA | NA | NA | NA | NA | NA | 6.5308803 | 3.4229017 | 1 | 4 | 7 | 10 | 12 | ▇▅▆▅▇ |
numeric | p1_eda | 0 | 1 | NA | NA | NA | NA | NA | NA | NA | NA | 47.3378396 | 11.0325792 | 29 | 34 | 45 | 59 | 62 | ▅▁▆▁▇ |
numeric | p2_1_c | 0 | 1 | NA | NA | NA | NA | NA | NA | NA | NA | 10.3643176 | 27.9009457 | 1 | 1 | 1 | 1 | 99 | ▇▁▁▁▁ |
numeric | p2_3_c | 0 | 1 | NA | NA | NA | NA | NA | NA | NA | NA | 16.4097071 | 8.9258374 | 1 | 9 | 15 | 24 | 34 | ▆▇▆▆▅ |
numeric | p2_4 | 0 | 1 | NA | NA | NA | NA | NA | NA | NA | NA | 1.3699672 | 0.4827977 | 1 | 1 | 1 | 2 | 2 | ▇▁▁▁▅ |
numeric | conmig | 0 | 1 | NA | NA | NA | NA | NA | NA | NA | NA | 0.0299081 | 0.1703346 | 0 | 0 | 0 | 0 | 1 | ▇▁▁▁▁ |
numeric | acumig | 0 | 1 | NA | NA | NA | NA | NA | NA | NA | NA | 0.9017096 | 1.3181523 | 0 | 0 | 0 | 1 | 13 | ▇▁▁▁▁ |
numeric | conmign | 0 | 1 | NA | NA | NA | NA | NA | NA | NA | NA | 0.0271016 | 0.1623804 | 0 | 0 | 0 | 0 | 1 | ▇▁▁▁▁ |
numeric | acumign | 0 | 1 | NA | NA | NA | NA | NA | NA | NA | NA | 0.8511657 | 1.2718236 | 0 | 0 | 0 | 1 | 13 | ▇▁▁▁▁ |
numeric | conmigi | 0 | 1 | NA | NA | NA | NA | NA | NA | NA | NA | 0.0028065 | 0.0529019 | 0 | 0 | 0 | 0 | 1 | ▇▁▁▁▁ |
numeric | acumigi | 0 | 1 | NA | NA | NA | NA | NA | NA | NA | NA | 0.0505439 | 0.3401111 | 0 | 0 | 0 | 0 | 8 | ▇▁▁▁▁ |
numeric | sinmig | 0 | 1 | NA | NA | NA | NA | NA | NA | NA | NA | 0.5179027 | 0.5981910 | 0 | 0 | 0 | 1 | 3 | ▇▇▁▁▁ |
numeric | p3_1 | 0 | 1 | NA | NA | NA | NA | NA | NA | NA | NA | 1.0336042 | 0.1802089 | 1 | 1 | 1 | 1 | 2 | ▇▁▁▁▁ |
numeric | p3_2 | 0 | 1 | NA | NA | NA | NA | NA | NA | NA | NA | 65.6670305 | 42.0032043 | 0 | 4 | 91 | 94 | 99 | ▃▁▁▁▇ |
numeric | p3_3 | 0 | 1 | NA | NA | NA | NA | NA | NA | NA | NA | 0.2884238 | 0.5177829 | 0 | 0 | 0 | 1 | 2 | ▇▁▂▁▁ |
numeric | p3_4_anio | 0 | 1 | NA | NA | NA | NA | NA | NA | NA | NA | 3.3817617 | 1.6345580 | 0 | 2 | 3 | 5 | 9 | ▂▇▃▂▁ |
numeric | p3_4_nivel | 0 | 1 | NA | NA | NA | NA | NA | NA | NA | NA | 3.7620926 | 2.8455494 | 0 | 1 | 2 | 6 | 9 | ▇▆▃▃▅ |
numeric | p4_1 | 0 | 1 | NA | NA | NA | NA | NA | NA | NA | NA | 1.0559734 | 0.2298713 | 1 | 1 | 1 | 1 | 2 | ▇▁▁▁▁ |
numeric | p4_6 | 0 | 1 | NA | NA | NA | NA | NA | NA | NA | NA | 1.5690794 | 1.5399986 | 0 | 0 | 2 | 3 | 6 | ▇▂▆▁▁ |
numeric | p4_9 | 0 | 1 | NA | NA | NA | NA | NA | NA | NA | NA | 0.6261166 | 0.9324505 | 0 | 0 | 0 | 2 | 9 | ▇▃▁▁▁ |
numeric | conlab | 0 | 1 | NA | NA | NA | NA | NA | NA | NA | NA | 0.0786177 | 0.2691423 | 0 | 0 | 0 | 0 | 1 | ▇▁▁▁▁ |
numeric | aculab | 0 | 1 | NA | NA | NA | NA | NA | NA | NA | NA | 1.6315920 | 1.7889641 | 0 | 0 | 1 | 3 | 17 | ▇▁▁▁▁ |
numeric | camlaba | 0 | 1 | NA | NA | NA | NA | NA | NA | NA | NA | 0.0911367 | 0.2878047 | 0 | 0 | 0 | 0 | 1 | ▇▁▁▁▁ |
numeric | aculaba | 0 | 1 | NA | NA | NA | NA | NA | NA | NA | NA | 1.8480566 | 1.9804696 | 0 | 0 | 1 | 3 | 17 | ▇▂▁▁▁ |
numeric | deslabc | 0 | 1 | NA | NA | NA | NA | NA | NA | NA | NA | 0.0125190 | 0.1111864 | 0 | 0 | 0 | 0 | 1 | ▇▁▁▁▁ |
numeric | deslaba | 0 | 1 | NA | NA | NA | NA | NA | NA | NA | NA | 0.2164646 | 0.4988684 | 0 | 0 | 0 | 0 | 6 | ▇▁▁▁▁ |
numeric | p5_1a_pa | 0 | 1 | NA | NA | NA | NA | NA | NA | NA | NA | 61.0769393 | 8.7610107 | 7 | 60 | 60 | 60 | 70 | ▁▁▁▁▇ |
numeric | p5_1b_pa | 0 | 1 | NA | NA | NA | NA | NA | NA | NA | NA | 0.7849111 | 1.0107134 | 0 | 0 | 0 | 2 | 3 | ▇▁▁▅▁ |
numeric | p5_1a_ma | 0 | 1 | NA | NA | NA | NA | NA | NA | NA | NA | 60.7831869 | 6.4959169 | 7 | 60 | 60 | 60 | 70 | ▁▁▁▁▇ |
numeric | p5_1b_ma | 0 | 1 | NA | NA | NA | NA | NA | NA | NA | NA | 0.9373498 | 1.0332269 | 0 | 0 | 0 | 2 | 3 | ▇▁▁▆▁ |
numeric | p5_2 | 0 | 1 | NA | NA | NA | NA | NA | NA | NA | NA | 0.8786342 | 1.0274138 | 0 | 0 | 0 | 2 | 3 | ▇▁▁▆▁ |
numeric | p5_3 | 0 | 1 | NA | NA | NA | NA | NA | NA | NA | NA | 0.1324358 | 0.5115814 | 0 | 0 | 0 | 0 | 3 | ▇▁▁▁▁ |
numeric | p6_1 | 0 | 1 | NA | NA | NA | NA | NA | NA | NA | NA | 1.0283214 | 0.5367165 | 0 | 1 | 1 | 1 | 7 | ▇▁▁▁▁ |
numeric | p6_2_anio1 | 0 | 1 | NA | NA | NA | NA | NA | NA | NA | NA | 1175.4930389 | 1550.5333045 | 0 | 0 | 1944 | 1960 | 9999 | ▇▁▁▁▁ |
numeric | p6_3_nup_1 | 0 | 1 | NA | NA | NA | NA | NA | NA | NA | NA | 18.3294294 | 22.0962270 | 0 | 0 | 4 | 40 | 80 | ▇▂▃▁▁ |
numeric | p6_6_1 | 0 | 1 | NA | NA | NA | NA | NA | NA | NA | NA | 0.8974173 | 1.0272917 | 0 | 0 | 0 | 2 | 9 | ▇▆▁▁▁ |
numeric | p6_2_anio2 | 0 | 1 | NA | NA | NA | NA | NA | NA | NA | NA | 120.4275639 | 740.9831195 | 0 | 0 | 0 | 0 | 9999 | ▇▁▁▁▁ |
numeric | p6_3_nup_2 | 0 | 1 | NA | NA | NA | NA | NA | NA | NA | NA | 1.1677183 | 7.3922254 | 0 | 0 | 0 | 0 | 80 | ▇▁▁▁▁ |
numeric | p6_6_2 | 0 | 1 | NA | NA | NA | NA | NA | NA | NA | NA | 0.0709687 | 0.3817876 | 0 | 0 | 0 | 0 | 4 | ▇▁▁▁▁ |
numeric | p6_2_anio3 | 0 | 1 | NA | NA | NA | NA | NA | NA | NA | NA | 11.7395124 | 254.7624148 | 0 | 0 | 0 | 0 | 9999 | ▇▁▁▁▁ |
numeric | p6_3_nup_3 | 0 | 1 | NA | NA | NA | NA | NA | NA | NA | NA | 0.0876516 | 2.0793053 | 0 | 0 | 0 | 0 | 80 | ▇▁▁▁▁ |
numeric | p6_6_3 | 0 | 1 | NA | NA | NA | NA | NA | NA | NA | NA | 0.0060256 | 0.1091522 | 0 | 0 | 0 | 0 | 3 | ▇▁▁▁▁ |
numeric | p6_2_anio4 | 0 | 1 | NA | NA | NA | NA | NA | NA | NA | NA | 0.5772420 | 33.6904312 | 0 | 0 | 0 | 0 | 1984 | ▇▁▁▁▁ |
numeric | p6_3_nup_4 | 0 | 1 | NA | NA | NA | NA | NA | NA | NA | NA | 0.0026047 | 0.1603440 | 0 | 0 | 0 | 0 | 10 | ▇▁▁▁▁ |
numeric | p6_6_4 | 0 | 1 | NA | NA | NA | NA | NA | NA | NA | NA | 0.0005503 | 0.0326128 | 0 | 0 | 0 | 0 | 2 | ▇▁▁▁▁ |
numeric | p6_7_so | 0 | 1 | NA | NA | NA | NA | NA | NA | NA | NA | 0.0382908 | 0.2845319 | 0 | 0 | 0 | 0 | 3 | ▇▁▁▁▁ |
numeric | p6_7_sa | 0 | 1 | NA | NA | NA | NA | NA | NA | NA | NA | 0.0504888 | 0.3248087 | 0 | 0 | 0 | 0 | 3 | ▇▁▁▁▁ |
numeric | p6_8 | 0 | 1 | NA | NA | NA | NA | NA | NA | NA | NA | 0.0335308 | 0.2653903 | 0 | 0 | 0 | 0 | 3 | ▇▁▁▁▁ |
numeric | p7_1 | 0 | 1 | NA | NA | NA | NA | NA | NA | NA | NA | 2.6961682 | 1.8847467 | 0 | 2 | 3 | 4 | 14 | ▇▇▁▁▁ |
numeric | p7_2_sex_1 | 0 | 1 | NA | NA | NA | NA | NA | NA | NA | NA | 0.7172350 | 0.8151498 | 0 | 0 | 0 | 1 | 2 | ▇▁▃▁▃ |
numeric | p7_3_1 | 0 | 1 | NA | NA | NA | NA | NA | NA | NA | NA | 28.0905131 | 29.9304048 | 0 | 0 | 0 | 60 | 70 | ▇▁▁▁▇ |
numeric | p7_4_1 | 0 | 1 | NA | NA | NA | NA | NA | NA | NA | NA | 0.6039309 | 0.7414504 | 0 | 0 | 0 | 1 | 9 | ▇▁▁▁▁ |
numeric | p7_5_1 | 0 | 1 | NA | NA | NA | NA | NA | NA | NA | NA | 1.0521489 | 1.3444819 | 0 | 0 | 0 | 2 | 9 | ▇▃▁▁▁ |
numeric | p7_7_1 | 0 | 1 | NA | NA | NA | NA | NA | NA | NA | NA | 0.7499587 | 0.9923636 | 0 | 0 | 0 | 2 | 9 | ▇▅▁▁▁ |
numeric | p7_2_sex_2 | 0 | 1 | NA | NA | NA | NA | NA | NA | NA | NA | 0.5735826 | 0.7880277 | 0 | 0 | 0 | 1 | 2 | ▇▁▂▁▂ |
numeric | p7_3_2 | 0 | 1 | NA | NA | NA | NA | NA | NA | NA | NA | 22.2259387 | 29.0097047 | 0 | 0 | 0 | 60 | 70 | ▇▁▁▁▅ |
numeric | p7_4_2 | 0 | 1 | NA | NA | NA | NA | NA | NA | NA | NA | 0.4684410 | 0.6573204 | 0 | 0 | 0 | 1 | 9 | ▇▁▁▁▁ |
numeric | p7_5_2 | 0 | 1 | NA | NA | NA | NA | NA | NA | NA | NA | 0.8152136 | 1.2412781 | 0 | 0 | 0 | 1 | 9 | ▇▂▁▁▁ |
numeric | p7_7_2 | 0 | 1 | NA | NA | NA | NA | NA | NA | NA | NA | 0.6051507 | 0.9360567 | 0 | 0 | 0 | 2 | 9 | ▇▃▁▁▁ |
numeric | p7_2_sex_3 | 0 | 1 | NA | NA | NA | NA | NA | NA | NA | NA | 0.3811747 | 0.7003198 | 0 | 0 | 0 | 1 | 2 | ▇▁▂▁▂ |
numeric | p7_3_3 | 0 | 1 | NA | NA | NA | NA | NA | NA | NA | NA | 14.6050039 | 25.7240596 | 0 | 0 | 0 | 6 | 70 | ▇▁▁▁▂ |
numeric | p7_4_3 | 0 | 1 | NA | NA | NA | NA | NA | NA | NA | NA | 0.3045931 | 0.5642292 | 0 | 0 | 0 | 1 | 9 | ▇▁▁▁▁ |
numeric | p7_5_3 | 0 | 1 | NA | NA | NA | NA | NA | NA | NA | NA | 0.5475723 | 1.1038030 | 0 | 0 | 0 | 1 | 9 | ▇▁▁▁▁ |
numeric | p7_7_3 | 0 | 1 | NA | NA | NA | NA | NA | NA | NA | NA | 0.4041125 | 0.8160434 | 0 | 0 | 0 | 0 | 9 | ▇▂▁▁▁ |
numeric | p7_2_sex_4 | 0 | 1 | NA | NA | NA | NA | NA | NA | NA | NA | 0.1939212 | 0.5353578 | 0 | 0 | 0 | 0 | 2 | ▇▁▁▁▁ |
numeric | p7_3_4 | 0 | 1 | NA | NA | NA | NA | NA | NA | NA | NA | 7.4431645 | 19.7797268 | 0 | 0 | 0 | 0 | 70 | ▇▁▁▁▁ |
numeric | p7_4_4 | 0 | 1 | NA | NA | NA | NA | NA | NA | NA | NA | 0.1445512 | 0.4067917 | 0 | 0 | 0 | 0 | 9 | ▇▁▁▁▁ |
numeric | p7_5_4 | 0 | 1 | NA | NA | NA | NA | NA | NA | NA | NA | 0.2906616 | 0.8686141 | 0 | 0 | 0 | 0 | 9 | ▇▁▁▁▁ |
numeric | p7_7_4 | 0 | 1 | NA | NA | NA | NA | NA | NA | NA | NA | 0.2041657 | 0.6137241 | 0 | 0 | 0 | 0 | 9 | ▇▁▁▁▁ |
numeric | p7_2_sex_5 | 0 | 1 | NA | NA | NA | NA | NA | NA | NA | NA | 0.0947503 | 0.3904726 | 0 | 0 | 0 | 0 | 2 | ▇▁▁▁▁ |
numeric | p7_3_5 | 0 | 1 | NA | NA | NA | NA | NA | NA | NA | NA | 3.5534512 | 14.1760469 | 0 | 0 | 0 | 0 | 70 | ▇▁▁▁▁ |
numeric | p7_4_5 | 0 | 1 | NA | NA | NA | NA | NA | NA | NA | NA | 0.0654658 | 0.2697655 | 0 | 0 | 0 | 0 | 9 | ▇▁▁▁▁ |
numeric | p7_5_5 | 0 | 1 | NA | NA | NA | NA | NA | NA | NA | NA | 0.1425152 | 0.6303876 | 0 | 0 | 0 | 0 | 4 | ▇▁▁▁▁ |
numeric | p7_7_5 | 0 | 1 | NA | NA | NA | NA | NA | NA | NA | NA | 0.0985564 | 0.4394173 | 0 | 0 | 0 | 0 | 9 | ▇▁▁▁▁ |
numeric | p7_2_sex_6 | 0 | 1 | NA | NA | NA | NA | NA | NA | NA | NA | 0.0532586 | 0.3003477 | 0 | 0 | 0 | 0 | 2 | ▇▁▁▁▁ |
numeric | p7_3_6 | 0 | 1 | NA | NA | NA | NA | NA | NA | NA | NA | 1.9465029 | 10.6840720 | 0 | 0 | 0 | 0 | 70 | ▇▁▁▁▁ |
numeric | p7_4_6 | 0 | 1 | NA | NA | NA | NA | NA | NA | NA | NA | 0.0368692 | 0.2061972 | 0 | 0 | 0 | 0 | 2 | ▇▁▁▁▁ |
numeric | p7_5_6 | 0 | 1 | NA | NA | NA | NA | NA | NA | NA | NA | 0.0798833 | 0.4822971 | 0 | 0 | 0 | 0 | 4 | ▇▁▁▁▁ |
numeric | p7_7_6 | 0 | 1 | NA | NA | NA | NA | NA | NA | NA | NA | 0.0505530 | 0.3193742 | 0 | 0 | 0 | 0 | 9 | ▇▁▁▁▁ |
numeric | p7_2_sex_7 | 0 | 1 | NA | NA | NA | NA | NA | NA | NA | NA | 0.0269549 | 0.2086730 | 0 | 0 | 0 | 0 | 2 | ▇▁▁▁▁ |
numeric | p7_3_7 | 0 | 1 | NA | NA | NA | NA | NA | NA | NA | NA | 1.0610268 | 7.9132113 | 0 | 0 | 0 | 0 | 70 | ▇▁▁▁▁ |
numeric | p7_4_7 | 0 | 1 | NA | NA | NA | NA | NA | NA | NA | NA | 0.0193059 | 0.1447449 | 0 | 0 | 0 | 0 | 2 | ▇▁▁▁▁ |
numeric | p7_5_7 | 0 | 1 | NA | NA | NA | NA | NA | NA | NA | NA | 0.0468294 | 0.3779978 | 0 | 0 | 0 | 0 | 4 | ▇▁▁▁▁ |
numeric | p7_7_7 | 0 | 1 | NA | NA | NA | NA | NA | NA | NA | NA | 0.0292753 | 0.2447724 | 0 | 0 | 0 | 0 | 9 | ▇▁▁▁▁ |
numeric | p7_2_sex_8 | 0 | 1 | NA | NA | NA | NA | NA | NA | NA | NA | 0.0149586 | 0.1613516 | 0 | 0 | 0 | 0 | 2 | ▇▁▁▁▁ |
numeric | p7_3_8 | 0 | 1 | NA | NA | NA | NA | NA | NA | NA | NA | 0.5439496 | 5.7249272 | 0 | 0 | 0 | 0 | 70 | ▇▁▁▁▁ |
numeric | p7_4_8 | 0 | 1 | NA | NA | NA | NA | NA | NA | NA | NA | 0.0100519 | 0.1069427 | 0 | 0 | 0 | 0 | 2 | ▇▁▁▁▁ |
numeric | p7_5_8 | 0 | 1 | NA | NA | NA | NA | NA | NA | NA | NA | 0.0216538 | 0.2494365 | 0 | 0 | 0 | 0 | 4 | ▇▁▁▁▁ |
numeric | p7_7_8 | 0 | 1 | NA | NA | NA | NA | NA | NA | NA | NA | 0.0130968 | 0.1683804 | 0 | 0 | 0 | 0 | 9 | ▇▁▁▁▁ |
numeric | p7_2_sex_9 | 0 | 1 | NA | NA | NA | NA | NA | NA | NA | NA | 0.0091256 | 0.1194578 | 0 | 0 | 0 | 0 | 2 | ▇▁▁▁▁ |
numeric | p7_3_9 | 0 | 1 | NA | NA | NA | NA | NA | NA | NA | NA | 0.3770108 | 4.7435989 | 0 | 0 | 0 | 0 | 70 | ▇▁▁▁▁ |
numeric | p7_4_9 | 0 | 1 | NA | NA | NA | NA | NA | NA | NA | NA | 0.0078508 | 0.1023098 | 0 | 0 | 0 | 0 | 2 | ▇▁▁▁▁ |
numeric | p7_5_9 | 0 | 1 | NA | NA | NA | NA | NA | NA | NA | NA | 0.0132803 | 0.1872939 | 0 | 0 | 0 | 0 | 4 | ▇▁▁▁▁ |
numeric | p7_7_9 | 0 | 1 | NA | NA | NA | NA | NA | NA | NA | NA | 0.0101253 | 0.1452024 | 0 | 0 | 0 | 0 | 9 | ▇▁▁▁▁ |
numeric | p7_2_sex10 | 0 | 1 | NA | NA | NA | NA | NA | NA | NA | NA | 0.0043748 | 0.0883413 | 0 | 0 | 0 | 0 | 2 | ▇▁▁▁▁ |
numeric | p7_3_10 | 0 | 1 | NA | NA | NA | NA | NA | NA | NA | NA | 0.1534475 | 3.0441399 | 0 | 0 | 0 | 0 | 70 | ▇▁▁▁▁ |
numeric | p7_4_10 | 0 | 1 | NA | NA | NA | NA | NA | NA | NA | NA | 0.0026505 | 0.0514154 | 0 | 0 | 0 | 0 | 1 | ▇▁▁▁▁ |
numeric | p7_5_10 | 0 | 1 | NA | NA | NA | NA | NA | NA | NA | NA | 0.0058422 | 0.1281748 | 0 | 0 | 0 | 0 | 4 | ▇▁▁▁▁ |
numeric | p7_7_10 | 0 | 1 | NA | NA | NA | NA | NA | NA | NA | NA | 0.0041822 | 0.0921612 | 0 | 0 | 0 | 0 | 3 | ▇▁▁▁▁ |
numeric | p7_2_sex11 | 0 | 1 | NA | NA | NA | NA | NA | NA | NA | NA | 0.0016875 | 0.0464934 | 0 | 0 | 0 | 0 | 2 | ▇▁▁▁▁ |
numeric | p7_3_11 | 0 | 1 | NA | NA | NA | NA | NA | NA | NA | NA | 0.0829833 | 2.2244964 | 0 | 0 | 0 | 0 | 60 | ▇▁▁▁▁ |
numeric | p7_4_11 | 0 | 1 | NA | NA | NA | NA | NA | NA | NA | NA | 0.0017242 | 0.0476610 | 0 | 0 | 0 | 0 | 2 | ▇▁▁▁▁ |
numeric | p7_5_11 | 0 | 1 | NA | NA | NA | NA | NA | NA | NA | NA | 0.0022929 | 0.0708572 | 0 | 0 | 0 | 0 | 4 | ▇▁▁▁▁ |
numeric | p7_7_11 | 0 | 1 | NA | NA | NA | NA | NA | NA | NA | NA | 0.0023754 | 0.0696139 | 0 | 0 | 0 | 0 | 3 | ▇▁▁▁▁ |
numeric | p7_2_sex12 | 0 | 1 | NA | NA | NA | NA | NA | NA | NA | NA | 0.0002568 | 0.0160230 | 0 | 0 | 0 | 0 | 1 | ▇▁▁▁▁ |
numeric | p7_3_12 | 0 | 1 | NA | NA | NA | NA | NA | NA | NA | NA | 0.0149128 | 0.9442357 | 0 | 0 | 0 | 0 | 60 | ▇▁▁▁▁ |
numeric | p7_4_12 | 0 | 1 | NA | NA | NA | NA | NA | NA | NA | NA | 0.0002568 | 0.0160230 | 0 | 0 | 0 | 0 | 1 | ▇▁▁▁▁ |
numeric | p7_5_12 | 0 | 1 | NA | NA | NA | NA | NA | NA | NA | NA | 0.0002568 | 0.0160230 | 0 | 0 | 0 | 0 | 1 | ▇▁▁▁▁ |
numeric | p7_7_12 | 0 | 1 | NA | NA | NA | NA | NA | NA | NA | NA | 0.0003485 | 0.0267443 | 0 | 0 | 0 | 0 | 3 | ▇▁▁▁▁ |
numeric | p7_2_sex13 | 0 | 1 | NA | NA | NA | NA | NA | NA | NA | NA | 0.0002385 | 0.0154403 | 0 | 0 | 0 | 0 | 1 | ▇▁▁▁▁ |
numeric | p7_3_13 | 0 | 1 | NA | NA | NA | NA | NA | NA | NA | NA | 0.0138122 | 0.9086130 | 0 | 0 | 0 | 0 | 60 | ▇▁▁▁▁ |
numeric | p7_4_13 | 0 | 1 | NA | NA | NA | NA | NA | NA | NA | NA | 0.0002385 | 0.0154403 | 0 | 0 | 0 | 0 | 1 | ▇▁▁▁▁ |
numeric | p7_5_13 | 0 | 1 | NA | NA | NA | NA | NA | NA | NA | NA | 0.0002385 | 0.0154403 | 0 | 0 | 0 | 0 | 1 | ▇▁▁▁▁ |
numeric | p7_7_13 | 0 | 1 | NA | NA | NA | NA | NA | NA | NA | NA | 0.0004677 | 0.0304320 | 0 | 0 | 0 | 0 | 2 | ▇▁▁▁▁ |
numeric | p7_2_sex14 | 0 | 1 | NA | NA | NA | NA | NA | NA | NA | NA | 0.0002109 | 0.0145224 | 0 | 0 | 0 | 0 | 1 | ▇▁▁▁▁ |
numeric | p7_3_14 | 0 | 1 | NA | NA | NA | NA | NA | NA | NA | NA | 0.0121613 | 0.8523895 | 0 | 0 | 0 | 0 | 60 | ▇▁▁▁▁ |
numeric | p7_4_14 | 0 | 1 | NA | NA | NA | NA | NA | NA | NA | NA | 0.0002109 | 0.0145224 | 0 | 0 | 0 | 0 | 1 | ▇▁▁▁▁ |
numeric | p7_5_14 | 0 | 1 | NA | NA | NA | NA | NA | NA | NA | NA | 0.0002109 | 0.0145224 | 0 | 0 | 0 | 0 | 1 | ▇▁▁▁▁ |
numeric | p7_7_14 | 0 | 1 | NA | NA | NA | NA | NA | NA | NA | NA | 0.0004127 | 0.0285674 | 0 | 0 | 0 | 0 | 2 | ▇▁▁▁▁ |
numeric | acuhijo | 0 | 1 | NA | NA | NA | NA | NA | NA | NA | NA | 1.3881542 | 1.8419340 | 0 | 0 | 0 | 3 | 14 | ▇▂▁▁▁ |
numeric | p8_1 | 0 | 1 | NA | NA | NA | NA | NA | NA | NA | NA | 1.2277363 | 2.1666132 | 0 | 0 | 0 | 2 | 9 | ▇▁▂▁▁ |
numeric | fac | 0 | 1 | NA | NA | NA | NA | NA | NA | NA | NA | 4945.3737825 | 3506.3556686 | 554 | 2484 | 4230 | 6472 | 19005 | ▇▆▁▁▁ |
numeric | anio_naci | 0 | 1 | NA | NA | NA | NA | NA | NA | NA | NA | 1963.6621604 | 11.0325792 | 1949 | 1952 | 1966 | 1977 | 1982 | ▇▁▆▁▅ |
numeric | cohorte | 0 | 1 | NA | NA | NA | NA | NA | NA | NA | NA | 1.8323734 | 0.8110904 | 1 | 1 | 2 | 3 | 3 | ▇▁▆▁▅ |
numeric | estrato | 0 | 1 | NA | NA | NA | NA | NA | NA | NA | NA | 1.9936075 | 0.8239652 | 1 | 1 | 2 | 3 | 3 | ▇▁▇▁▇ |
El comando glimpse() pertenece al paquete dplyr. Da otra visión de los datos, mostrando tipo y una lista de valores y permite ver si tenemos etiquetas. Si dice +lbl significa que esa variable está etiquetada.
dplyr::glimpse(eder)
## Rows: 109,034
## Columns: 170
## $ folio <int> 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1…
## $ cd_a <chr> "14", "14", "14", "14", "14", "14", "14", "14", "14", "14"…
## $ ent <chr> "01", "01", "01", "01", "01", "01", "01", "01", "01", "01"…
## $ con <chr> "0167", "0167", "0167", "0167", "0167", "0167", "0167", "0…
## $ upm <chr> "00092", "00092", "00092", "00092", "00092", "00092", "000…
## $ v_sel <chr> "02", "02", "02", "02", "02", "02", "02", "02", "02", "02"…
## $ n_hog <chr> "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1"…
## $ h_mud <chr> "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0"…
## $ per <chr> "311", "311", "311", "311", "311", "311", "311", "311", "3…
## $ d_sem <chr> "206", "206", "206", "206", "206", "206", "206", "206", "2…
## $ n_pro_viv <chr> "0081", "0081", "0081", "0081", "0081", "0081", "0081", "0…
## $ n_ren <chr> "02", "02", "02", "02", "02", "02", "02", "02", "02", "02"…
## $ edad_retro <int> 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21…
## $ sex <int> 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2…
## $ p1_anio <int> 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993…
## $ p1_mes <int> 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10…
## $ p1_eda <int> 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33…
## $ p2_1 <chr> "AGUASCALIENTES", "AGUASCALIENTES", "AGUASCALIENTES", "AGU…
## $ p2_1_c <int> 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1…
## $ p2_2 <chr> "AGUASCALIENTES", "AGUASCALIENTES", "AGUASCALIENTES", "AGU…
## $ p2_3 <chr> "AGUASCALIENTES", "AGUASCALIENTES", "AGUASCALIENTES", "AGU…
## $ p2_3_c <int> 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1…
## $ p2_4 <int> 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2…
## $ conmig <int> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0…
## $ acumig <int> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0…
## $ conmign <int> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0…
## $ acumign <int> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0…
## $ conmigi <int> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0…
## $ acumigi <int> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0…
## $ sinmig <int> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0…
## $ p3_1 <int> 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1…
## $ p3_2 <int> 1, 1, 1, 1, 1, 1, 2, 2, 2, 92, 92, 92, 92, 92, 92, 92, 92,…
## $ p3_3 <int> 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0…
## $ p3_4_anio <int> 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3…
## $ p3_4_nivel <int> 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2…
## $ p4_1 <int> 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1…
## $ p4_3 <chr> "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0"…
## $ p4_4 <chr> "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0"…
## $ p4_4_c <chr> "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0"…
## $ p4_5 <chr> "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0"…
## $ p4_5_c <chr> "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0"…
## $ p4_6 <int> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 3, 2…
## $ p4_7 <chr> "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0"…
## $ p4_8 <chr> "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0"…
## $ p4_9 <int> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0…
## $ conlab <int> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1…
## $ aculab <int> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 2…
## $ camlaba <int> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1…
## $ aculaba <int> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 2…
## $ deslabc <int> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0…
## $ deslaba <int> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0…
## $ p5_1a_pa <int> 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60…
## $ p5_1b_pa <int> 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0…
## $ p5_1a_ma <int> 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60…
## $ p5_1b_ma <int> 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0…
## $ p5_2 <int> 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0…
## $ p5_3 <int> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0…
## $ p6_1 <int> 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1…
## $ p6_2_nom_1 <chr> "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "GUILLER…
## $ p6_2_anio1 <int> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1974, 1974, 1974, 1974, 1974…
## $ p6_3_nup_1 <int> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 40, 40, 40, 40, 40, 40, 4…
## $ p6_6_1 <int> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2…
## $ p6_2_nom_2 <chr> "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0"…
## $ p6_2_anio2 <int> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0…
## $ p6_3_nup_2 <int> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0…
## $ p6_6_2 <int> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0…
## $ p6_2_nom_3 <chr> "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0"…
## $ p6_2_anio3 <int> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0…
## $ p6_3_nup_3 <int> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0…
## $ p6_6_3 <int> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0…
## $ p6_2_nom_4 <chr> "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0"…
## $ p6_2_anio4 <int> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0…
## $ p6_3_nup_4 <int> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0…
## $ p6_6_4 <int> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0…
## $ sincony <chr> "SO", "SO", "SO", "SO", "SO", "SO", "SO", "SO", "SO", "SO"…
## $ p6_7_so <int> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0…
## $ p6_7_sa <int> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0…
## $ p6_8 <int> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0…
## $ p7_1 <int> 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3…
## $ p7_2_nom_1 <chr> "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "GUILLER…
## $ p7_2_sex_1 <int> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1…
## $ p7_3_1 <int> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 60, 60, 60, 60, 60, 60, 6…
## $ p7_4_1 <int> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1…
## $ p7_5_1 <int> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1…
## $ p7_7_1 <int> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2…
## $ p7_2_nom_2 <chr> "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0"…
## $ p7_2_sex_2 <int> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2…
## $ p7_3_2 <int> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 60, 60, 60, 60, …
## $ p7_4_2 <int> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1…
## $ p7_5_2 <int> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1…
## $ p7_7_2 <int> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 2, 2, 2, 2, 2…
## $ p7_2_nom_3 <chr> "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0"…
## $ p7_2_sex_3 <int> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0…
## $ p7_3_3 <int> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0…
## $ p7_4_3 <int> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0…
## $ p7_5_3 <int> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0…
## $ p7_7_3 <int> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0…
## $ p7_2_nom_4 <chr> "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0"…
## $ p7_2_sex_4 <int> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0…
## $ p7_3_4 <int> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0…
## $ p7_4_4 <int> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0…
## $ p7_5_4 <int> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0…
## $ p7_7_4 <int> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0…
## $ p7_2_nom_5 <chr> "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0"…
## $ p7_2_sex_5 <int> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0…
## $ p7_3_5 <int> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0…
## $ p7_4_5 <int> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0…
## $ p7_5_5 <int> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0…
## $ p7_7_5 <int> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0…
## $ p7_2_nom_6 <chr> "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0"…
## $ p7_2_sex_6 <int> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0…
## $ p7_3_6 <int> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0…
## $ p7_4_6 <int> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0…
## $ p7_5_6 <int> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0…
## $ p7_7_6 <int> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0…
## $ p7_2_nom_7 <chr> "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0"…
## $ p7_2_sex_7 <int> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0…
## $ p7_3_7 <int> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0…
## $ p7_4_7 <int> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0…
## $ p7_5_7 <int> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0…
## $ p7_7_7 <int> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0…
## $ p7_2_nom_8 <chr> "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0"…
## $ p7_2_sex_8 <int> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0…
## $ p7_3_8 <int> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0…
## $ p7_4_8 <int> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0…
## $ p7_5_8 <int> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0…
## $ p7_7_8 <int> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0…
## $ p7_2_nom_9 <chr> "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0"…
## $ p7_2_sex_9 <int> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0…
## $ p7_3_9 <int> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0…
## $ p7_4_9 <int> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0…
## $ p7_5_9 <int> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0…
## $ p7_7_9 <int> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0…
## $ p7_2_nom10 <chr> "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0"…
## $ p7_2_sex10 <int> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0…
## $ p7_3_10 <int> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0…
## $ p7_4_10 <int> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0…
## $ p7_5_10 <int> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0…
## $ p7_7_10 <int> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0…
## $ p7_2_nom11 <chr> "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0"…
## $ p7_2_sex11 <int> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0…
## $ p7_3_11 <int> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0…
## $ p7_4_11 <int> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0…
## $ p7_5_11 <int> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0…
## $ p7_7_11 <int> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0…
## $ p7_2_nom12 <chr> "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0"…
## $ p7_2_sex12 <int> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0…
## $ p7_3_12 <int> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0…
## $ p7_4_12 <int> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0…
## $ p7_5_12 <int> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0…
## $ p7_7_12 <int> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0…
## $ p7_2_nom13 <chr> "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0"…
## $ p7_2_sex13 <int> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0…
## $ p7_3_13 <int> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0…
## $ p7_4_13 <int> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0…
## $ p7_5_13 <int> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0…
## $ p7_7_13 <int> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0…
## $ p7_2_nom14 <chr> "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0"…
## $ p7_2_sex14 <int> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0…
## $ p7_3_14 <int> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0…
## $ p7_4_14 <int> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0…
## $ p7_5_14 <int> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0…
## $ p7_7_14 <int> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0…
## $ acuhijo <int> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2…
## $ p8_1 <int> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 2, 2, 2, 2, 2, 2, 0…
## $ fac <int> 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103, 2103…
## $ anio_naci <int> 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978, 1978…
## $ cohorte <int> 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3…
## $ tercilesios <fct> Alto , Alto , Alto , Alto , Alto , Alto , Alto , A…
## $ estrato <dbl> 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3…
Los pipes (%>%) implican un formato diferente (más intuitivo) para pedir cosas a R. Funcionan como tuberías y encadenan comandos.
Mediante el uso de pipes podemos escribir funciones encadenadas, de manera que el comando siguiente se aplica sobre el resultado de la operación que hayamos hecho previamente sobre la base (sobre el resultado del comando anterior).
Para usar pipes debemos activar la librería dplyr.
library(dplyr)
Para escribir los pipes (%>%) se apreta: Ctrl+Shift+m (shortcut)
Por ejemplo, en lugar de pedir names(eder), usando pipes sería:
eder %>%
names()
## [1] "folio" "cd_a" "ent" "con" "upm"
## [6] "v_sel" "n_hog" "h_mud" "per" "d_sem"
## [11] "n_pro_viv" "n_ren" "edad_retro" "sex" "p1_anio"
## [16] "p1_mes" "p1_eda" "p2_1" "p2_1_c" "p2_2"
## [21] "p2_3" "p2_3_c" "p2_4" "conmig" "acumig"
## [26] "conmign" "acumign" "conmigi" "acumigi" "sinmig"
## [31] "p3_1" "p3_2" "p3_3" "p3_4_anio" "p3_4_nivel"
## [36] "p4_1" "p4_3" "p4_4" "p4_4_c" "p4_5"
## [41] "p4_5_c" "p4_6" "p4_7" "p4_8" "p4_9"
## [46] "conlab" "aculab" "camlaba" "aculaba" "deslabc"
## [51] "deslaba" "p5_1a_pa" "p5_1b_pa" "p5_1a_ma" "p5_1b_ma"
## [56] "p5_2" "p5_3" "p6_1" "p6_2_nom_1" "p6_2_anio1"
## [61] "p6_3_nup_1" "p6_6_1" "p6_2_nom_2" "p6_2_anio2" "p6_3_nup_2"
## [66] "p6_6_2" "p6_2_nom_3" "p6_2_anio3" "p6_3_nup_3" "p6_6_3"
## [71] "p6_2_nom_4" "p6_2_anio4" "p6_3_nup_4" "p6_6_4" "sincony"
## [76] "p6_7_so" "p6_7_sa" "p6_8" "p7_1" "p7_2_nom_1"
## [81] "p7_2_sex_1" "p7_3_1" "p7_4_1" "p7_5_1" "p7_7_1"
## [86] "p7_2_nom_2" "p7_2_sex_2" "p7_3_2" "p7_4_2" "p7_5_2"
## [91] "p7_7_2" "p7_2_nom_3" "p7_2_sex_3" "p7_3_3" "p7_4_3"
## [96] "p7_5_3" "p7_7_3" "p7_2_nom_4" "p7_2_sex_4" "p7_3_4"
## [101] "p7_4_4" "p7_5_4" "p7_7_4" "p7_2_nom_5" "p7_2_sex_5"
## [106] "p7_3_5" "p7_4_5" "p7_5_5" "p7_7_5" "p7_2_nom_6"
## [111] "p7_2_sex_6" "p7_3_6" "p7_4_6" "p7_5_6" "p7_7_6"
## [116] "p7_2_nom_7" "p7_2_sex_7" "p7_3_7" "p7_4_7" "p7_5_7"
## [121] "p7_7_7" "p7_2_nom_8" "p7_2_sex_8" "p7_3_8" "p7_4_8"
## [126] "p7_5_8" "p7_7_8" "p7_2_nom_9" "p7_2_sex_9" "p7_3_9"
## [131] "p7_4_9" "p7_5_9" "p7_7_9" "p7_2_nom10" "p7_2_sex10"
## [136] "p7_3_10" "p7_4_10" "p7_5_10" "p7_7_10" "p7_2_nom11"
## [141] "p7_2_sex11" "p7_3_11" "p7_4_11" "p7_5_11" "p7_7_11"
## [146] "p7_2_nom12" "p7_2_sex12" "p7_3_12" "p7_4_12" "p7_5_12"
## [151] "p7_7_12" "p7_2_nom13" "p7_2_sex13" "p7_3_13" "p7_4_13"
## [156] "p7_5_13" "p7_7_13" "p7_2_nom14" "p7_2_sex14" "p7_3_14"
## [161] "p7_4_14" "p7_5_14" "p7_7_14" "acuhijo" "p8_1"
## [166] "fac" "anio_naci" "cohorte" "tercilesios" "estrato"
O en lugar de pedir dim(eder), con pipes sería:
eder %>%
dim()
## [1] 109034 170
Encadenando varios comandos:
length(names(eder))
## [1] 170
eder %>%
names() %>%
length()
## [1] 170
Ambas formas de pedir la información son equivalentes. Luego veremos que cuando los comandos se vuelven más complejos, el uso de pipes simplifica bastante.
Como regla general para acceder a una variable debo indicar primero el nombre de la base de datos y mediado por $ el nombre de la variable.
eder$edad_retro
str(eder$edad_retro)
## int [1:109034] 6 7 8 9 10 11 12 13 14 15 ...
str(eder$sex)
## int [1:109034] 2 2 2 2 2 2 2 2 2 2 ...
class(eder$ent)
## [1] "character"
class(eder$edad_retro)
## [1] "integer"
class(eder$tercilesios)
## [1] "factor"
Podemos ver si una variable es de tipo caracter, numérica o factor.
Es importante evaluar si una variable tiene valores faltantes.
is.na(eder$edad_retro)
sum(is.na(eder$edad_retro))
## [1] 0
No hay ningún valor faltante.
Veamos cómo sería si lo hubiera. Asignamos un missing a un valor de la base en la variable edad_retro.
eder$edad_retro[5]
## [1] 10
Verificamos previamente cuál es el valor de edad_retro en la fila 5.
eder$edad_retro[5] <- NA
sum(is.na(eder$edad_retro))
## [1] 1
Ahora nos aparece que hay un valor faltante. Le podemos pedir la posición de ese valor faltante en la base.
which(is.na(eder$edad_retro))
## [1] 5
El valor faltante está en la fila 5.
Corregimos el valor.
eder$edad_retro[5] <- 10
El comando summary() arroja algunas medidas resumen:
summary(eder$edad_retro)
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 6.00 15.00 25.00 26.67 36.00 62.00
Con el comando subset podemos indicar una población específica (las condiciones para definirla) sobre la que queremos que calcule las medidas resumen.
summary(subset(eder$edad_retro, eder$sex ==1))
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 6.00 15.00 25.00 26.71 36.00 62.00
summary(subset(eder$edad_retro, eder$sex ==2))
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 6.00 15.00 25.00 26.63 36.00 62.00
Con el comando by podemos pedir que calcule las medidas resumen para cada grupo por separado (para cada categoría de una variable).
by(eder$edad_retro, eder$sex, summary)
## eder$sex: 1
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 6.00 15.00 25.00 26.71 36.00 62.00
## ------------------------------------------------------------
## eder$sex: 2
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 6.00 15.00 25.00 26.63 36.00 62.00
El comando dfSummary() da un resumen más amplio de la variable, que indica también cuántos missing tiene. Pertenece a la librería summarytools.
if (!require("summarytools")) install.packages("summarytools")
library(summarytools)
dfSummary(eder$edad_retro)
## Data Frame Summary
## eder
## Dimensions: 109034 x 1
## Duplicates: 108977
##
## -----------------------------------------------------------------------------------------------------------
## No Variable Stats / Values Freqs (% of Valid) Graph Valid Missing
## ---- ------------ ------------------------- -------------------- --------------------- ---------- ---------
## 1 edad_retro Mean (sd) : 26.7 (13.8) 57 distinct values : : : . 109034 0
## [numeric] min < med < max: : : : : : (100.0%) (0.0%)
## 6 < 25 < 62 : : : : : . :
## IQR (CV) : 21 (0.5) : : : : : : : . .
## : : : : : : : : : :
## -----------------------------------------------------------------------------------------------------------
Podemos pedir las medidas resumen para los casos que cumplen determinadas condiciones (para la base filtrada). Ejemplo: promedio de edad para cada sexo y cada cohorte.
mean(eder$edad_retro[eder$sex==1 & eder$cohorte ==1])
## [1] 32.48209
mean(eder$edad_retro[eder$sex==2 & eder$cohorte ==1])
## [1] 32.45933
mean(eder$edad_retro[eder$sex==1 & eder$cohorte ==2])
## [1] 25.0644
mean(eder$edad_retro[eder$sex==2 & eder$cohorte ==2])
## [1] 25.05362
mean(eder$edad_retro[eder$sex==1 & eder$cohorte ==3])
## [1] 19.03931
mean(eder$edad_retro[eder$sex==2 & eder$cohorte ==3])
## [1] 19.09074
El primer promedio con pipes se podría pedir así:
eder %>%
filter(sex == 1, cohorte == 1) %>%
summarise(prom_edad = mean(edad_retro))
## prom_edad
## 1 32.48209
Al usar el pipe se indica la base una única vez y se van encadenando comandos. El comando filter sirve para indicar el filtro que queremos que aplique sobre la base declarada previamente y después se indica la operación que debe realizar sobre la base filtrada (el promedio de la edad).
Usando pipes podemos obtener todos los promedios con un solo comando:
eder %>%
group_by(cohorte, sex) %>%
summarise(prom_edad = mean(edad_retro, na.rm = TRUE)) %>%
ungroup()
## # A tibble: 6 × 3
## cohorte sex prom_edad
## <int> <int> <dbl>
## 1 1 1 32.5
## 2 1 2 32.5
## 3 2 1 25.1
## 4 2 2 25.1
## 5 3 1 19.0
## 6 3 2 19.1
El comando group_by permite agrupar los casos según las categorías de las variables indicadas. Con el comando siguiente del pipe calcula el promedio de la edad para cada grupo por separado. El comando ungroup() al final sirve para deshacer esta agrupación y que no la tome en cuenta en operaciones posteriores.
Podemos ver cuáles son las edades máximas en cada cohorte:
max(eder$edad_retro[eder$cohorte ==1])
## [1] 62
max(eder$edad_retro[eder$cohorte ==2])
## [1] 47
max(eder$edad_retro[eder$cohorte ==3])
## [1] 35
O en un solo comando con pipes:
eder %>%
group_by(cohorte) %>%
summarise(max_edad = max(edad_retro, na.rm = TRUE)) %>%
ungroup()
## # A tibble: 3 × 2
## cohorte max_edad
## <int> <dbl>
## 1 1 62
## 2 2 47
## 3 3 35
Dado que no hay valores faltantes en la base no es necesario añadir la condición na.rm=TRUE, pero en caso de que hubiera, permitiría que calculara el promedio sin tenerlos en cuenta.
Con la función summarise podemos hacer varias operaciones a la vez y sobre distintas variables de la misma base. Por ejemplo, para la primera cohorte calculamos el promedio, el mínimo, el máximo y la mediana de la edad, el número total de casos y el número de categorías para la variable estrato.
eder %>%
filter(cohorte == 1) %>%
summarise(prom_edad = round(mean(edad_retro),2),
min_edad = min(edad_retro),
max_edad = max(edad_retro),
med_edad = median(edad_retro),
n_obs = n(),
n_estrato = n_distinct(estrato))
## prom_edad min_edad max_edad med_edad n_obs n_estrato
## 1 32.47 6 62 32 46535 3
Podemos hacer lo mismo para varios grupos de casos, por ejemplo, distinguiendo por cohorte y sexo.
eder %>%
group_by(cohorte, sex) %>%
summarise(prom_edad = mean(edad_retro),
min_edad = min(edad_retro),
max_edad = max(edad_retro),
med_edad = median(edad_retro),
n_obs = n(),
n_estrato = n_distinct(estrato)) %>%
ungroup()
## # A tibble: 6 × 8
## cohorte sex prom_edad min_edad max_edad med_edad n_obs n_estrato
## <int> <int> <dbl> <dbl> <dbl> <dbl> <int> <int>
## 1 1 1 32.5 6 62 32 22981 3
## 2 1 2 32.5 6 62 32 23554 3
## 3 2 1 25.1 6 47 25 16616 3
## 4 2 2 25.1 6 47 25 17625 3
## 5 3 1 19.0 6 35 19 13711 3
## 6 3 2 19.1 6 35 19 14547 3
Si queremos obtener los cuantiles de una variable, podemos usar el comando quantile.
quantile(eder$edad_retro, na.rm = TRUE)
## 0% 25% 50% 75% 100%
## 6 15 25 36 62
Por defecto arroja cuartiles. Con la opción seq podemos indicar si queremos deciles, quintiles o cualquier otro tipo de cuantil.
quantile(eder$edad_retro, seq(0, 1, 0.1), na.rm = TRUE)
## 0% 10% 20% 30% 40% 50% 60% 70% 80% 90% 100%
## 6 9 13 17 21 25 29 33 39 47 62
quantile(eder$edad_retro, seq(0, 1, 0.2), na.rm = TRUE)
## 0% 20% 40% 60% 80% 100%
## 6 13 21 29 39 62
Si queremos calcularlos por separado para cada sexo, podríamos hacerlo así.
quantile(subset(eder$edad_retro, eder$sex == "1"))
## 0% 25% 50% 75% 100%
## 6 15 25 36 62
quantile(subset(eder$edad_retro, eder$sex == "2"))
## 0% 25% 50% 75% 100%
## 6 15 25 36 62
quantile(subset(eder$edad_retro, eder$sex == "1"), seq(0, 1, 0.1))
## 0% 10% 20% 30% 40% 50% 60% 70% 80% 90% 100%
## 6 9 13 17 21 25 29 33 40 47 62
quantile(subset(eder$edad_retro, eder$sex == "2"), seq(0, 1, 0.1))
## 0% 10% 20% 30% 40% 50% 60% 70% 80% 90% 100%
## 6 9 13 17 21 25 29 33 39 47 62
quantile(subset(eder$edad_retro, eder$sex == "1"), seq(0,1, 0.2))
## 0% 20% 40% 60% 80% 100%
## 6 13 21 29 40 62
quantile(subset(eder$edad_retro, eder$sex == "2"), seq(0,1, 0.2))
## 0% 20% 40% 60% 80% 100%
## 6 13 21 29 39 62
O podríamos usar el comando by que vimos antes:
by(eder$edad_retro, eder$sex, quantile, na.rm = TRUE)
## eder$sex: 1
## 0% 25% 50% 75% 100%
## 6 15 25 36 62
## ------------------------------------------------------------
## eder$sex: 2
## 0% 25% 50% 75% 100%
## 6 15 25 36 62
by(eder$edad_retro, eder$sex, quantile, probs = seq(0, 1, 0.1), na.rm = TRUE)
## eder$sex: 1
## 0% 10% 20% 30% 40% 50% 60% 70% 80% 90% 100%
## 6 9 13 17 21 25 29 33 40 47 62
## ------------------------------------------------------------
## eder$sex: 2
## 0% 10% 20% 30% 40% 50% 60% 70% 80% 90% 100%
## 6 9 13 17 21 25 29 33 39 47 62
Es importante tener en cuenta la clase de variable que estamos manejando. Las variables categóricas a veces vienen dispuestas como variables de tipo caracter, otras veces son variables de tipo factor y a menudo están creadas como variables numéricas. Cuando obtenemos un summary, vemos las diferencias en lo que nos arroja en cada caso.
Una variable de tipo factor es una variable declarada como categórica con distintos niveles. Esos niveles están declarados explícitamente y los podemos ver con el comando levels.
class(eder$tercilesios)
## [1] "factor"
levels(eder$tercilesios)
## [1] " Bajo " " Medio " " Alto "
summary(eder$tercilesios)
## Bajo Medio Alto
## 37363 35005 36666
Para variables de tipo caracter summary no arroja resultados; sólo indica que es una variable de tipo caracter y el número de casos.
class(eder$ent)
## [1] "character"
summary(eder$ent)
## Length Class Mode
## 109034 character character
unique(eder$ent)
## [1] "01" "02" "03" "04" "05" "06" "07" "08" "09" "10" "11" "12" "13" "14" "15"
## [16] "16" "17" "18" "19" "20" "21" "22" "23" "24" "25" "26" "27" "28" "29" "30"
## [31] "31" "32"
El comando unique() nos permite saber cuáles son los distintos valores que asume esa variable de tipo caracter.
Podemos transformarla en una variable de tipo factor.
eder$ent_f <- as.factor(eder$ent)
levels(eder$ent_f)
## [1] "01" "02" "03" "04" "05" "06" "07" "08" "09" "10" "11" "12" "13" "14" "15"
## [16] "16" "17" "18" "19" "20" "21" "22" "23" "24" "25" "26" "27" "28" "29" "30"
## [31] "31" "32"
summary(eder$ent_f)
## 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16
## 3295 2861 3074 2864 3831 3225 3517 2964 4374 2609 4811 2666 2893 4416 6379 3004
## 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32
## 3024 3319 4539 3132 5148 3404 2282 3172 2891 3031 3646 2453 3138 2616 3320 3136
Para variables categóricas pero que están presentadas como numéricas, summary arroja resultados, pero su sentido no es interpretable. Por ejemplo, la variable cohorte es una variable categórica con tres niveles, pero figura en la base como variable numérica.
class(eder$cohorte)
## [1] "integer"
summary(eder$cohorte)
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 1.000 1.000 2.000 1.832 3.000 3.000
¿Qué significa que el promedio de la variable sea 1.832?
Podemos transformarla en una variable de tipo factor y la interpretación del summary ya será posible como la de una variable categórica.
eder$cohorte_f <- as.factor(eder$cohorte)
levels(eder$cohorte_f)
## [1] "1" "2" "3"
summary(eder$cohorte_f)
## 1 2 3
## 46535 34241 28258
Para cualquier variable categórica, independientemente del tipo que sea en la base, podemos obtener frecuencias y tablas de contingencia.
table(eder$sex)
##
## 1 2
## 53308 55726
table(eder$cohorte)
##
## 1 2 3
## 46535 34241 28258
table(eder$cohorte_f)
##
## 1 2 3
## 46535 34241 28258
Al obtener tablas de contingencia, las podemos obtener con frecuencias absolutas o relativas.
table(eder$sex, eder$cohorte)
##
## 1 2 3
## 1 22981 16616 13711
## 2 23554 17625 14547
Podemos añadir los marginales (los totales por fila y por columna) con el comando addmargins.
addmargins(table(eder$sex, eder$cohorte))
##
## 1 2 3 Sum
## 1 22981 16616 13711 53308
## 2 23554 17625 14547 55726
## Sum 46535 34241 28258 109034
Para obtener las frecuencias relativas, podemos hacerlo directamente o guardando la tabla como un objeto y pidiendo las proporciones de esa tabla. Si indicamos la opción 1, saca las proporciones por cada categoría de las filas (=row).
tabla1 <- table(eder$sex, eder$cohorte)
prop.table(tabla1,1)
##
## 1 2 3
## 1 0.4310985 0.3116981 0.2572034
## 2 0.4226752 0.3162797 0.2610451
Si queremos mostrarlo en porcentaje y redondeando a un decimal:
round(prop.table(tabla1,1)*100, 1)
##
## 1 2 3
## 1 43.1 31.2 25.7
## 2 42.3 31.6 26.1
addmargins(round(prop.table(tabla1,1)*100, 1), 2)
##
## 1 2 3 Sum
## 1 43.1 31.2 25.7 100.0
## 2 42.3 31.6 26.1 100.0
Si lo queremos hacer directamente, sin crear el objeto:
round(prop.table(table(eder$sex, eder$cohorte),1)*100,1)
##
## 1 2 3
## 1 43.1 31.2 25.7
## 2 42.3 31.6 26.1
Si indicamos la opción 2, saca las proporciones por cada categoría de las columnas (=col).
round(prop.table(tabla1,2)*100,1)
##
## 1 2 3
## 1 49.4 48.5 48.5
## 2 50.6 51.5 51.5
addmargins(round(prop.table(tabla1,2)*100,1),1)
##
## 1 2 3
## 1 49.4 48.5 48.5
## 2 50.6 51.5 51.5
## Sum 100.0 100.0 100.0
Si no indicamos ninguna opción, saca las proporciones por cada celda (=cell).
round(prop.table(tabla1)*100,1)
##
## 1 2 3
## 1 21.1 15.2 12.6
## 2 21.6 16.2 13.3
addmargins(round(prop.table(tabla1)*100,1))
##
## 1 2 3 Sum
## 1 21.1 15.2 12.6 48.9
## 2 21.6 16.2 13.3 51.1
## Sum 42.7 31.4 25.9 100.0
Vamos a ver cómo se verían las tablas si tuviéramos valores faltantes en alguna de las variables.
eder$sex[5] <- NA
eder$sex[50] <- NA
Si no indicamos nada, no aparecen missing, aunque los haya. Tenemos que pedir que muestre los valores faltantes.
table(eder$sex)
##
## 1 2
## 53308 55724
Si indicamos “ifany”, muestra la categoría NA sólo si hay missing. Como la variable cohorte no tiene missing, no aparece la categoría NA.
table(eder$sex, useNA="ifany")
##
## 1 2 <NA>
## 53308 55724 2
table(eder$cohorte, useNA="ifany")
##
## 1 2 3
## 46535 34241 28258
Si indicamos “always”, muestra la categoría NA haya o no missing.
table(eder$sex, useNA="always")
##
## 1 2 <NA>
## 53308 55724 2
table(eder$cohorte, useNA="always")
##
## 1 2 3 <NA>
## 46535 34241 28258 0
En la tabla de contingencia:
table(eder$sex, eder$cohorte, useNA="ifany")
##
## 1 2 3
## 1 22981 16616 13711
## 2 23553 17625 14546
## <NA> 1 0 1
round(prop.table(table(eder$sex, eder$cohorte, useNA="ifany"),1)*100, 1)
##
## 1 2 3
## 1 43.1 31.2 25.7
## 2 42.3 31.6 26.1
## <NA> 50.0 0.0 50.0
Volvemos a asignar los valores a los casos.
eder$sex[5] <- 2
eder$sex[50] <- 2
Podemos sacar también tablas cruzadas con tres variables:
table(eder$cohorte, eder$estrato, eder$sex)
## , , = 1
##
##
## 1 2 3
## 1 7826 7884 7271
## 2 5949 5008 5659
## 3 4235 4517 4959
##
## , , = 2
##
##
## 1 2 3
## 1 8574 6681 8299
## 2 5941 5971 5713
## 3 4838 4944 4765
tabla2 <- table(eder$cohorte, eder$estrato, eder$sex)
Muestra la tabla de contingencia de cohorte y estrato para cada sexo por separado.
round(prop.table(tabla2,2)*100,1)
## , , = 1
##
##
## 1 2 3
## 1 20.9 22.5 19.8
## 2 15.9 14.3 15.4
## 3 11.3 12.9 13.5
##
## , , = 2
##
##
## 1 2 3
## 1 22.9 19.1 22.6
## 2 15.9 17.1 15.6
## 3 12.9 14.1 13.0
Al pedir las frecuencias relativas en este caso, calcula los porcentajes por columna (para cada estrato), teniendo en cuenta ambos sexos. El 100% es la suma de todos los valores de cada cohorte y sexo.
Si queremos todo en una misma tabla, sin que la arroje por separado, usamos ftable, pero para obtener el mismo resultado hay que ordenar las variables de otra manera en el comando.
ftable(eder [,c("sex","cohorte","estrato")])
## estrato 1 2 3
## sex cohorte
## 1 1 7826 7884 7271
## 2 5949 5008 5659
## 3 4235 4517 4959
## 2 1 8574 6681 8299
## 2 5941 5971 5713
## 3 4838 4944 4765
tabla3 <- ftable(eder [,c("sex","cohorte","estrato")])
round(prop.table(tabla3,2)*100,1)
## estrato 1 2 3
## sex cohorte
## 1 1 20.9 22.5 19.8
## 2 15.9 14.3 15.4
## 3 11.3 12.9 13.5
## 2 1 22.9 19.1 22.6
## 2 15.9 17.1 15.6
## 3 12.9 14.1 13.0
Podemos generar sub-bases seleccionando un conjunto más reducido de casos (observaciones) o también seleccionando un conjunto más reducido de variables. Es decir, podemos recortar por filas o por columnas.
Recordemos cuántas filas y cuántas columnas tiene nuestra base:
dim(eder)
## [1] 109034 172
Tenemos 109,034 filas (observaciones) y 172 columnas (variables).
Podemos crear una sub-base que incluya sólo a las cohortes 1 y 2 (es decir, que excluya a la cohorte 3).
eder12 <- eder[eder$cohorte < 3, ]
Para ello indicamos la condición para la selección de casos en la primera parte del paréntesis y dejamos un espacio tras la coma. Eso implica que la sub-base mantendrá todas las variables de la base original.
table(eder12$cohorte)
##
## 1 2
## 46535 34241
table(eder$cohorte)
##
## 1 2 3
## 46535 34241 28258
dim(eder12)
## [1] 80776 172
La sub-base eder12 tiene 80,776 filas y la variable cohorte únicamente adopta los valores 1 y 2.
Con el comando subset podemos obtener el mismo resultado.
eder12s <- subset(eder, cohorte < 3)
dim(eder12s)
## [1] 80776 172
Si quisiéramos hacer la misma operación con pipes, utilizaríamos la función filter.
eder12f <- eder %>%
filter(cohorte < 3)
dim(eder12f)
## [1] 80776 172
La EDER tiene por filas los años-persona de cada individuo entrevistado; es decir, la información está recogida para cada año desde que nació hasta el momento de la encuesta (2011).
head(eder[,c("folio","edad_retro","p1_anio","anio_naci")],82)
## folio edad_retro p1_anio anio_naci
## 1 1 6 1984 1978
## 2 1 7 1985 1978
## 3 1 8 1986 1978
## 4 1 9 1987 1978
## 5 1 10 1988 1978
## 6 1 11 1989 1978
## 7 1 12 1990 1978
## 8 1 13 1991 1978
## 9 1 14 1992 1978
## 10 1 15 1993 1978
## 11 1 16 1994 1978
## 12 1 17 1995 1978
## 13 1 18 1996 1978
## 14 1 19 1997 1978
## 15 1 20 1998 1978
## 16 1 21 1999 1978
## 17 1 22 2000 1978
## 18 1 23 2001 1978
## 19 1 24 2002 1978
## 20 1 25 2003 1978
## 21 1 26 2004 1978
## 22 1 27 2005 1978
## 23 1 28 2006 1978
## 24 1 29 2007 1978
## 25 1 30 2008 1978
## 26 1 31 2009 1978
## 27 1 32 2010 1978
## 28 1 33 2011 1978
## 29 2 6 1958 1952
## 30 2 7 1959 1952
## 31 2 8 1960 1952
## 32 2 9 1961 1952
## 33 2 10 1962 1952
## 34 2 11 1963 1952
## 35 2 12 1964 1952
## 36 2 13 1965 1952
## 37 2 14 1966 1952
## 38 2 15 1967 1952
## 39 2 16 1968 1952
## 40 2 17 1969 1952
## 41 2 18 1970 1952
## 42 2 19 1971 1952
## 43 2 20 1972 1952
## 44 2 21 1973 1952
## 45 2 22 1974 1952
## 46 2 23 1975 1952
## 47 2 24 1976 1952
## 48 2 25 1977 1952
## 49 2 26 1978 1952
## 50 2 27 1979 1952
## 51 2 28 1980 1952
## 52 2 29 1981 1952
## 53 2 30 1982 1952
## 54 2 31 1983 1952
## 55 2 32 1984 1952
## 56 2 33 1985 1952
## 57 2 34 1986 1952
## 58 2 35 1987 1952
## 59 2 36 1988 1952
## 60 2 37 1989 1952
## 61 2 38 1990 1952
## 62 2 39 1991 1952
## 63 2 40 1992 1952
## 64 2 41 1993 1952
## 65 2 42 1994 1952
## 66 2 43 1995 1952
## 67 2 44 1996 1952
## 68 2 45 1997 1952
## 69 2 46 1998 1952
## 70 2 47 1999 1952
## 71 2 48 2000 1952
## 72 2 49 2001 1952
## 73 2 50 2002 1952
## 74 2 51 2003 1952
## 75 2 52 2004 1952
## 76 2 53 2005 1952
## 77 2 54 2006 1952
## 78 2 55 2007 1952
## 79 2 56 2008 1952
## 80 2 57 2009 1952
## 81 2 58 2010 1952
## 82 2 59 2011 1952
En esta base hemos acotado los registros a partir de los 6 años.
Para crear una base de individuos, podemos seleccionar los años-persona correspondientes al momento de la encuesta (2011) y tener la información de cada individuo en el último año disponible.
eder_ind <- eder[eder$p1_anio == 2011, ]
head(eder_ind[,c("folio","edad_retro","p1_anio","anio_naci")],15)
## folio edad_retro p1_anio anio_naci
## 28 1 33 2011 1978
## 82 2 59 2011 1952
## 137 3 60 2011 1951
## 175 4 43 2011 1968
## 203 5 33 2011 1978
## 257 6 59 2011 1952
## 285 7 33 2011 1978
## 313 10 33 2011 1978
## 341 12 33 2011 1978
## 380 13 44 2011 1967
## 408 14 33 2011 1978
## 461 15 58 2011 1953
## 514 16 58 2011 1953
## 540 17 31 2011 1980
## 580 18 45 2011 1966
dim(eder_ind)
## [1] 2782 172
Ahora tenemos un único registro (fila) por individuo. En la base de individuos tenemos 2,782 casos.
Ahora veamos cómo acotar la base eder12 (la base sin la cohorte 3, la más joven) al rango de edad entre 12 y 40 años.
dim(eder12)
## [1] 80776 172
eder12 %>%
group_by(cohorte) %>%
summarise(min_edad = min(edad_retro, na.rm = TRUE),
max_edad = max(edad_retro, na.rm = TRUE)) %>%
ungroup()
## # A tibble: 2 × 3
## cohorte min_edad max_edad
## <int> <dbl> <dbl>
## 1 1 6 62
## 2 2 6 47
En la cohorte 1 la edad máxima es de 62 años y en la cohorte 2 es de 47 años.
head(eder12[,c("folio","edad_retro","p1_anio","anio_naci")],109)
## folio edad_retro p1_anio anio_naci
## 29 2 6 1958 1952
## 30 2 7 1959 1952
## 31 2 8 1960 1952
## 32 2 9 1961 1952
## 33 2 10 1962 1952
## 34 2 11 1963 1952
## 35 2 12 1964 1952
## 36 2 13 1965 1952
## 37 2 14 1966 1952
## 38 2 15 1967 1952
## 39 2 16 1968 1952
## 40 2 17 1969 1952
## 41 2 18 1970 1952
## 42 2 19 1971 1952
## 43 2 20 1972 1952
## 44 2 21 1973 1952
## 45 2 22 1974 1952
## 46 2 23 1975 1952
## 47 2 24 1976 1952
## 48 2 25 1977 1952
## 49 2 26 1978 1952
## 50 2 27 1979 1952
## 51 2 28 1980 1952
## 52 2 29 1981 1952
## 53 2 30 1982 1952
## 54 2 31 1983 1952
## 55 2 32 1984 1952
## 56 2 33 1985 1952
## 57 2 34 1986 1952
## 58 2 35 1987 1952
## 59 2 36 1988 1952
## 60 2 37 1989 1952
## 61 2 38 1990 1952
## 62 2 39 1991 1952
## 63 2 40 1992 1952
## 64 2 41 1993 1952
## 65 2 42 1994 1952
## 66 2 43 1995 1952
## 67 2 44 1996 1952
## 68 2 45 1997 1952
## 69 2 46 1998 1952
## 70 2 47 1999 1952
## 71 2 48 2000 1952
## 72 2 49 2001 1952
## 73 2 50 2002 1952
## 74 2 51 2003 1952
## 75 2 52 2004 1952
## 76 2 53 2005 1952
## 77 2 54 2006 1952
## 78 2 55 2007 1952
## 79 2 56 2008 1952
## 80 2 57 2009 1952
## 81 2 58 2010 1952
## 82 2 59 2011 1952
## 83 3 6 1957 1951
## 84 3 7 1958 1951
## 85 3 8 1959 1951
## 86 3 9 1960 1951
## 87 3 10 1961 1951
## 88 3 11 1962 1951
## 89 3 12 1963 1951
## 90 3 13 1964 1951
## 91 3 14 1965 1951
## 92 3 15 1966 1951
## 93 3 16 1967 1951
## 94 3 17 1968 1951
## 95 3 18 1969 1951
## 96 3 19 1970 1951
## 97 3 20 1971 1951
## 98 3 21 1972 1951
## 99 3 22 1973 1951
## 100 3 23 1974 1951
## 101 3 24 1975 1951
## 102 3 25 1976 1951
## 103 3 26 1977 1951
## 104 3 27 1978 1951
## 105 3 28 1979 1951
## 106 3 29 1980 1951
## 107 3 30 1981 1951
## 108 3 31 1982 1951
## 109 3 32 1983 1951
## 110 3 33 1984 1951
## 111 3 34 1985 1951
## 112 3 35 1986 1951
## 113 3 36 1987 1951
## 114 3 37 1988 1951
## 115 3 38 1989 1951
## 116 3 39 1990 1951
## 117 3 40 1991 1951
## 118 3 41 1992 1951
## 119 3 42 1993 1951
## 120 3 43 1994 1951
## 121 3 44 1995 1951
## 122 3 45 1996 1951
## 123 3 46 1997 1951
## 124 3 47 1998 1951
## 125 3 48 1999 1951
## 126 3 49 2000 1951
## 127 3 50 2001 1951
## 128 3 51 2002 1951
## 129 3 52 2003 1951
## 130 3 53 2004 1951
## 131 3 54 2005 1951
## 132 3 55 2006 1951
## 133 3 56 2007 1951
## 134 3 57 2008 1951
## 135 3 58 2009 1951
## 136 3 59 2010 1951
## 137 3 60 2011 1951
Por ejemplo, al primer individuo lo tenemos registrado entre sus 6 y sus 59 años y al segundo entre sus 6 y sus 60 años.
eder12_red <- eder12[eder12$edad_retro < 41 & eder12$edad_retro > 11, ]
dim(eder12_red)
## [1] 50431 172
Pasamos de 80,776 filas (años-persona) a 50,431.
eder12_red %>%
group_by(cohorte) %>%
summarise(min_edad = min(edad_retro, na.rm = TRUE),
max_edad = max(edad_retro, na.rm = TRUE)) %>%
ungroup()
## # A tibble: 2 × 3
## cohorte min_edad max_edad
## <int> <dbl> <dbl>
## 1 1 12 40
## 2 2 12 40
Ahora los registros en las dos cohortes tienen una edad mínima de 12 años y una edad máxima de 40 años.
head(eder12_red[,c("folio","edad_retro","p1_anio","anio_naci")], 58)
## folio edad_retro p1_anio anio_naci
## 35 2 12 1964 1952
## 36 2 13 1965 1952
## 37 2 14 1966 1952
## 38 2 15 1967 1952
## 39 2 16 1968 1952
## 40 2 17 1969 1952
## 41 2 18 1970 1952
## 42 2 19 1971 1952
## 43 2 20 1972 1952
## 44 2 21 1973 1952
## 45 2 22 1974 1952
## 46 2 23 1975 1952
## 47 2 24 1976 1952
## 48 2 25 1977 1952
## 49 2 26 1978 1952
## 50 2 27 1979 1952
## 51 2 28 1980 1952
## 52 2 29 1981 1952
## 53 2 30 1982 1952
## 54 2 31 1983 1952
## 55 2 32 1984 1952
## 56 2 33 1985 1952
## 57 2 34 1986 1952
## 58 2 35 1987 1952
## 59 2 36 1988 1952
## 60 2 37 1989 1952
## 61 2 38 1990 1952
## 62 2 39 1991 1952
## 63 2 40 1992 1952
## 89 3 12 1963 1951
## 90 3 13 1964 1951
## 91 3 14 1965 1951
## 92 3 15 1966 1951
## 93 3 16 1967 1951
## 94 3 17 1968 1951
## 95 3 18 1969 1951
## 96 3 19 1970 1951
## 97 3 20 1971 1951
## 98 3 21 1972 1951
## 99 3 22 1973 1951
## 100 3 23 1974 1951
## 101 3 24 1975 1951
## 102 3 25 1976 1951
## 103 3 26 1977 1951
## 104 3 27 1978 1951
## 105 3 28 1979 1951
## 106 3 29 1980 1951
## 107 3 30 1981 1951
## 108 3 31 1982 1951
## 109 3 32 1983 1951
## 110 3 33 1984 1951
## 111 3 34 1985 1951
## 112 3 35 1986 1951
## 113 3 36 1987 1951
## 114 3 37 1988 1951
## 115 3 38 1989 1951
## 116 3 39 1990 1951
## 117 3 40 1991 1951
Para el ejemplo de los dos primeros individuos nos hemos quedado con los años-persona entre los 12 y los 40 años.
Ahora vamos a generar dos sub-bases a partir de la base eder12, una para hombres y otra para mujeres.
eder12_H <- subset(eder12, sex == 1)
eder12_M <- subset(eder12, sex == 2)
table(eder12$sex)
##
## 1 2
## 39597 41179
table(eder12_H$sex)
##
## 1
## 39597
table(eder12_M$sex)
##
## 2
## 41179
Con pipes los comandos equivalentes serían:
eder12_h <- eder12 %>%
filter(sex == 1)
eder12_m <- eder12 %>%
filter(sex == 2)
table(eder12_h$sex)
##
## 1
## 39597
table(eder12_m$sex)
##
## 2
## 41179
También podemos crear sub-bases seleccionando sólo algunas variables.
dim(eder_ind)
## [1] 2782 172
Vamos a crear una sub-base de individuos para las cohortes 1 y 2 sólo con las variables folio,cohorte,sex y estrato. Hacemos las dos operaciones en un solo comando.
eder12_ind_cov <- eder_ind[eder_ind$cohorte < 3 ,c("folio","cohorte","sex","edad_retro","estrato")]
Antes de la coma indicamos la condición para seleccionar las filas y después de la coma especificamos la lista de variables que queremos mantener.
dim(eder12_ind_cov)
## [1] 1739 5
Ahora tenemos 1,739 filas (que en esta base son individuos) y 5 variables.
names(eder12_ind_cov)
## [1] "folio" "cohorte" "sex" "edad_retro" "estrato"
head(eder12_ind_cov)
## folio cohorte sex edad_retro estrato
## 82 2 1 2 59 3
## 137 3 1 1 60 3
## 175 4 2 2 43 3
## 257 6 1 1 59 3
## 380 13 2 2 44 3
## 461 15 1 1 58 1
Para hacer esta misma operación con pipes sería así:
eder12_ind_cov2 <- eder_ind %>%
dplyr::filter(cohorte < 3) %>%
dplyr::select(folio, cohorte, sex, edad_retro, estrato)
dim(eder12_ind_cov2)
## [1] 1739 5
Indicamos dplyr:: para forzar a que use la función select (y filter) que está dentro del paquete dplyr y no otra función que tenga el mismo nombre dentro de otro paquete.
Algunas opciones interesantes al usar la función select: Podemos indicar que seleccione todas las variables cuyo nombre empieza igual.
names(eder)
## [1] "folio" "cd_a" "ent" "con" "upm"
## [6] "v_sel" "n_hog" "h_mud" "per" "d_sem"
## [11] "n_pro_viv" "n_ren" "edad_retro" "sex" "p1_anio"
## [16] "p1_mes" "p1_eda" "p2_1" "p2_1_c" "p2_2"
## [21] "p2_3" "p2_3_c" "p2_4" "conmig" "acumig"
## [26] "conmign" "acumign" "conmigi" "acumigi" "sinmig"
## [31] "p3_1" "p3_2" "p3_3" "p3_4_anio" "p3_4_nivel"
## [36] "p4_1" "p4_3" "p4_4" "p4_4_c" "p4_5"
## [41] "p4_5_c" "p4_6" "p4_7" "p4_8" "p4_9"
## [46] "conlab" "aculab" "camlaba" "aculaba" "deslabc"
## [51] "deslaba" "p5_1a_pa" "p5_1b_pa" "p5_1a_ma" "p5_1b_ma"
## [56] "p5_2" "p5_3" "p6_1" "p6_2_nom_1" "p6_2_anio1"
## [61] "p6_3_nup_1" "p6_6_1" "p6_2_nom_2" "p6_2_anio2" "p6_3_nup_2"
## [66] "p6_6_2" "p6_2_nom_3" "p6_2_anio3" "p6_3_nup_3" "p6_6_3"
## [71] "p6_2_nom_4" "p6_2_anio4" "p6_3_nup_4" "p6_6_4" "sincony"
## [76] "p6_7_so" "p6_7_sa" "p6_8" "p7_1" "p7_2_nom_1"
## [81] "p7_2_sex_1" "p7_3_1" "p7_4_1" "p7_5_1" "p7_7_1"
## [86] "p7_2_nom_2" "p7_2_sex_2" "p7_3_2" "p7_4_2" "p7_5_2"
## [91] "p7_7_2" "p7_2_nom_3" "p7_2_sex_3" "p7_3_3" "p7_4_3"
## [96] "p7_5_3" "p7_7_3" "p7_2_nom_4" "p7_2_sex_4" "p7_3_4"
## [101] "p7_4_4" "p7_5_4" "p7_7_4" "p7_2_nom_5" "p7_2_sex_5"
## [106] "p7_3_5" "p7_4_5" "p7_5_5" "p7_7_5" "p7_2_nom_6"
## [111] "p7_2_sex_6" "p7_3_6" "p7_4_6" "p7_5_6" "p7_7_6"
## [116] "p7_2_nom_7" "p7_2_sex_7" "p7_3_7" "p7_4_7" "p7_5_7"
## [121] "p7_7_7" "p7_2_nom_8" "p7_2_sex_8" "p7_3_8" "p7_4_8"
## [126] "p7_5_8" "p7_7_8" "p7_2_nom_9" "p7_2_sex_9" "p7_3_9"
## [131] "p7_4_9" "p7_5_9" "p7_7_9" "p7_2_nom10" "p7_2_sex10"
## [136] "p7_3_10" "p7_4_10" "p7_5_10" "p7_7_10" "p7_2_nom11"
## [141] "p7_2_sex11" "p7_3_11" "p7_4_11" "p7_5_11" "p7_7_11"
## [146] "p7_2_nom12" "p7_2_sex12" "p7_3_12" "p7_4_12" "p7_5_12"
## [151] "p7_7_12" "p7_2_nom13" "p7_2_sex13" "p7_3_13" "p7_4_13"
## [156] "p7_5_13" "p7_7_13" "p7_2_nom14" "p7_2_sex14" "p7_3_14"
## [161] "p7_4_14" "p7_5_14" "p7_7_14" "acuhijo" "p8_1"
## [166] "fac" "anio_naci" "cohorte" "tercilesios" "estrato"
## [171] "ent_f" "cohorte_f"
Seleccionemos un grupo de variables, incluidas todas las que empiezan con “p4”.
sub <- eder %>%
dplyr::select(folio, sex, cohorte, starts_with("p4"))
names(sub)
## [1] "folio" "sex" "cohorte" "p4_1" "p4_3" "p4_4" "p4_4_c"
## [8] "p4_5" "p4_5_c" "p4_6" "p4_7" "p4_8" "p4_9"
También existen comandos equivalentes para seleccionar variables según los caracteres con los que terminan (ends_with) o los caracteres que contienen (contains).
También podemos seleccionar en un solo comando todas las variables que se encuentran entre dos. Por ejemplo, seleccionemos todas las variables que van de conmig a sinmig y de conlab a deslaba.
sub2 <- eder %>%
dplyr::select(folio, sex, cohorte, conmig:sinmig, conlab:deslaba)
names(sub2)
## [1] "folio" "sex" "cohorte" "conmig" "acumig" "conmign" "acumign"
## [8] "conmigi" "acumigi" "sinmig" "conlab" "aculab" "camlaba" "aculaba"
## [15] "deslabc" "deslaba"
Para unir todos los casos de dos sub-bases en una única base usamos el comando rbind. Es el pegado por filas.
?rbind
Habíamos separado hombres y mujeres en dos sub-bases (eder12_H y eder12_M). Juntémolas de nuevo.
dim(eder12_M)
## [1] 41179 172
dim(eder12_H)
## [1] 39597 172
eder12_HM <- rbind(eder12_M, eder12_H)
dim(eder12_HM)
## [1] 80776 172
dim(eder12)
## [1] 80776 172
¡Cuidado! Para poder usar rbind las dos sub-bases tienen que tener las mismas variables. Si no, dará error. Por ejemplo, si eliminamos algunas variables de la sub-base eder12_H e intentamos pegarla con la sub-base eder12_M completa, dará error.
eder12_H_red <- eder12_H[,-c(20:22)]
eder_err <- rbind(eder12_M, eder12_H_red)
## Error in rbind(deparse.level, ...): numbers of columns of arguments do not match
La función cbind es el equivalente a rbind para pegar bases por columnas. Es decir, para pegar variables a una base. Ambas bases en el cbind deben tener los mismos casos (filas).
Sin embargo, para pegar sub-bases por columnas (añadir variable), generalmente usamos el comando merge. Es más seguro que cbind, ya que permite tener más controles de que estamos haciendo bien el pegado.
Para usar merge necesitamos que los casos de las dos bases estén ordenados de la misma manera. Para eso usamos el comando sort.
?sort
is.unsorted(eder12$folio)
## [1] FALSE
Este comando nos permite saber si la base está ordenada (en sentido creciente) de acuerdo a una variable concreta. Al indicar FALSE, sabemos que la base no está desordenada por la variable folio; es decir, está ordenada.
Veamos si está ordenada la base eder12_HM (resultado de pegar con rbind la base de hombres y la base de mujeres).
is.unsorted(eder12_HM$folio)
## [1] TRUE
Indica TRUE; es decir, la base eder12_HM no está ordenada según la variable folio.
Para ordenar por una variable, usamos el comando sort. El objetivo es tener ordenada la base por folio y después por edad_retro.
head(eder12_HM[,c("folio","edad_retro","p1_anio","anio_naci")],58)
## folio edad_retro p1_anio anio_naci
## 29 2 6 1958 1952
## 30 2 7 1959 1952
## 31 2 8 1960 1952
## 32 2 9 1961 1952
## 33 2 10 1962 1952
## 34 2 11 1963 1952
## 35 2 12 1964 1952
## 36 2 13 1965 1952
## 37 2 14 1966 1952
## 38 2 15 1967 1952
## 39 2 16 1968 1952
## 40 2 17 1969 1952
## 41 2 18 1970 1952
## 42 2 19 1971 1952
## 43 2 20 1972 1952
## 44 2 21 1973 1952
## 45 2 22 1974 1952
## 46 2 23 1975 1952
## 47 2 24 1976 1952
## 48 2 25 1977 1952
## 49 2 26 1978 1952
## 50 2 27 1979 1952
## 51 2 28 1980 1952
## 52 2 29 1981 1952
## 53 2 30 1982 1952
## 54 2 31 1983 1952
## 55 2 32 1984 1952
## 56 2 33 1985 1952
## 57 2 34 1986 1952
## 58 2 35 1987 1952
## 59 2 36 1988 1952
## 60 2 37 1989 1952
## 61 2 38 1990 1952
## 62 2 39 1991 1952
## 63 2 40 1992 1952
## 64 2 41 1993 1952
## 65 2 42 1994 1952
## 66 2 43 1995 1952
## 67 2 44 1996 1952
## 68 2 45 1997 1952
## 69 2 46 1998 1952
## 70 2 47 1999 1952
## 71 2 48 2000 1952
## 72 2 49 2001 1952
## 73 2 50 2002 1952
## 74 2 51 2003 1952
## 75 2 52 2004 1952
## 76 2 53 2005 1952
## 77 2 54 2006 1952
## 78 2 55 2007 1952
## 79 2 56 2008 1952
## 80 2 57 2009 1952
## 81 2 58 2010 1952
## 82 2 59 2011 1952
## 138 4 6 1974 1968
## 139 4 7 1975 1968
## 140 4 8 1976 1968
## 141 4 9 1977 1968
Vamos a ordenar primero por la variable edad_retro. Si ordenamos la base por edad, mezcla los casos por folio.
eder12_HMs <- eder12_HM[order(eder12_HM$edad_retro), ]
head(eder12_HMs[,c("folio","edad_retro","p1_anio","anio_naci")],58)
## folio edad_retro p1_anio anio_naci
## 29 2 6 1958 1952
## 138 4 6 1974 1968
## 342 13 6 1973 1967
## 462 16 6 1959 1953
## 581 19 6 1957 1951
## 661 21 6 1973 1967
## 740 23 6 1972 1966
## 862 26 6 1959 1953
## 995 29 6 1956 1950
## 1078 31 6 1956 1950
## 1428 40 6 1972 1966
## 1532 43 6 1956 1950
## 1588 44 6 1960 1954
## 1693 46 6 1972 1966
## 1815 50 6 1958 1952
## 1897 53 6 1972 1966
## 2044 56 6 1972 1966
## 2084 57 6 1957 1951
## 2258 61 6 1958 1952
## 2312 62 6 1958 1952
## 2421 65 6 1973 1967
## 2661 71 6 1973 1967
## 2700 72 6 1958 1952
## 2754 73 6 1971 1965
## 2939 78 6 1973 1967
## 3138 84 6 1957 1951
## 3258 88 6 1974 1968
## 3334 90 6 1972 1966
## 3374 92 6 1957 1951
## 3494 95 6 1975 1969
## 3561 97 6 1959 1953
## 3716 102 6 1973 1967
## 3938 110 6 1972 1966
## 4033 114 6 1973 1967
## 4153 117 6 1959 1953
## 4234 119 6 1959 1953
## 4325 122 6 1974 1968
## 4416 124 6 1972 1966
## 4562 128 6 1972 1966
## 4711 132 6 1960 1954
## 4922 139 6 1957 1951
## 5124 144 6 1973 1967
## 5217 146 6 1959 1953
## 5360 150 6 1973 1967
## 5428 152 6 1957 1951
## 5521 155 6 1973 1967
## 5615 161 6 1972 1966
## 5840 171 6 1972 1966
## 5880 172 6 1957 1951
## 6040 176 6 1960 1954
## 6118 178 6 1973 1967
## 6369 185 6 1973 1967
## 6435 187 6 1958 1952
## 6489 189 6 1974 1968
## 6744 195 6 1973 1967
## 6783 196 6 1958 1952
## 6956 201 6 1973 1967
## 7050 203 6 1972 1966
También podemos ordenar la base por una variable en sentido decreciente:
eder12_HMs <- eder12_HM[order(eder12_HM$edad_retro, decreasing=T), ]
head(eder12_HMs[,c("folio","edad_retro","p1_anio","anio_naci")],58)
## folio edad_retro p1_anio anio_naci
## 20159 564 62 2011 1949
## 60787 1783 62 2011 1949
## 68485 2007 62 2011 1949
## 71722 2105 62 2011 1949
## 86685 2547 62 2011 1949
## 57719 1691 62 2011 1949
## 105404 3095 62 2011 1949
## 1050 29 61 2011 1950
## 1133 31 61 2011 1950
## 1587 43 61 2011 1950
## 12271 350 61 2011 1950
## 14275 403 61 2011 1950
## 20158 564 61 2010 1949
## 60786 1783 61 2010 1949
## 63033 1843 61 2011 1950
## 68484 2007 61 2010 1949
## 69608 2043 61 2011 1950
## 69890 2053 61 2011 1950
## 71721 2105 61 2010 1949
## 83154 2441 61 2011 1950
## 84803 2489 61 2011 1950
## 86684 2547 61 2010 1949
## 93880 2758 61 2011 1950
## 6636 191 61 2011 1950
## 11592 331 61 2011 1950
## 57718 1691 61 2010 1949
## 59052 1730 61 2011 1950
## 66187 1937 61 2011 1950
## 84747 2488 61 2011 1950
## 105403 3095 61 2010 1949
## 635 19 60 2011 1951
## 1049 29 60 2010 1950
## 1132 31 60 2010 1950
## 1586 43 60 2010 1950
## 2138 57 60 2011 1951
## 3192 84 60 2011 1951
## 3428 92 60 2011 1951
## 4976 139 60 2011 1951
## 5482 152 60 2011 1951
## 5934 172 60 2011 1951
## 7438 214 60 2011 1951
## 8868 252 60 2011 1951
## 10793 309 60 2011 1951
## 11865 337 60 2011 1951
## 12270 350 60 2010 1950
## 12811 366 60 2011 1951
## 13145 374 60 2011 1951
## 14274 403 60 2010 1950
## 14789 416 60 2011 1951
## 15272 430 60 2011 1951
## 15858 444 60 2011 1951
## 16205 453 60 2011 1951
## 16299 456 60 2011 1951
## 16765 470 60 2011 1951
## 18988 531 60 2011 1951
## 19271 540 60 2011 1951
## 19731 553 60 2011 1951
## 20157 564 60 2009 1949
Para ordenar la base primero por folio y luego por edad, indicamos ambas variables en el sort.
eder12_HMs <- eder12_HM[order(eder12_HM$folio, eder12_HM$edad_retro), ]
head(eder12_HMs[,c("folio","edad_retro","p1_anio","anio_naci")],58)
## folio edad_retro p1_anio anio_naci
## 29 2 6 1958 1952
## 30 2 7 1959 1952
## 31 2 8 1960 1952
## 32 2 9 1961 1952
## 33 2 10 1962 1952
## 34 2 11 1963 1952
## 35 2 12 1964 1952
## 36 2 13 1965 1952
## 37 2 14 1966 1952
## 38 2 15 1967 1952
## 39 2 16 1968 1952
## 40 2 17 1969 1952
## 41 2 18 1970 1952
## 42 2 19 1971 1952
## 43 2 20 1972 1952
## 44 2 21 1973 1952
## 45 2 22 1974 1952
## 46 2 23 1975 1952
## 47 2 24 1976 1952
## 48 2 25 1977 1952
## 49 2 26 1978 1952
## 50 2 27 1979 1952
## 51 2 28 1980 1952
## 52 2 29 1981 1952
## 53 2 30 1982 1952
## 54 2 31 1983 1952
## 55 2 32 1984 1952
## 56 2 33 1985 1952
## 57 2 34 1986 1952
## 58 2 35 1987 1952
## 59 2 36 1988 1952
## 60 2 37 1989 1952
## 61 2 38 1990 1952
## 62 2 39 1991 1952
## 63 2 40 1992 1952
## 64 2 41 1993 1952
## 65 2 42 1994 1952
## 66 2 43 1995 1952
## 67 2 44 1996 1952
## 68 2 45 1997 1952
## 69 2 46 1998 1952
## 70 2 47 1999 1952
## 71 2 48 2000 1952
## 72 2 49 2001 1952
## 73 2 50 2002 1952
## 74 2 51 2003 1952
## 75 2 52 2004 1952
## 76 2 53 2005 1952
## 77 2 54 2006 1952
## 78 2 55 2007 1952
## 79 2 56 2008 1952
## 80 2 57 2009 1952
## 81 2 58 2010 1952
## 82 2 59 2011 1952
## 83 3 6 1957 1951
## 84 3 7 1958 1951
## 85 3 8 1959 1951
## 86 3 9 1960 1951
is.unsorted(eder12_HMs$folio)
## [1] FALSE
Ahora la base sí está ordenada por la variable folio.
Para ordenar las variables dentro de una base (en lugar de los casos), usaríamos el comando order.
?order
Veamos ahora cómo funciona el comando merge para pegar variables de dos bases con casos comunes. Hay que especificar una llave que permita identificar los mismos casos en ambas bases.
El formato general de cómo se especifica la función merge es: nuevabase <- merge(base1, base2, by = “var_llave”)
En la opción by se indica la variable que funciona como llave, que es común en ambas bases. Puede ser un conjunto de variables.
?merge
Hay varias opciones para el merge. a) Inner join: sólo mantiene los casos que existen en ambas bases de datos. Es lo que hace si no indicamos nada adicional.
Outer join: mantiene todos los casos de ambas bases, con NA en las variables nuevas para los casos que sólo existan en una de la bases. Para ello hay que indicar: nuevabase <- merge(base1, base2, by = “var_llave”, all=TRUE)
Left join: mantiene todos los casos de la base1, con NA en las variables de la base2 para los casos que no existan en la base2. Para ello hay que indicar: nuevabase <- merge(base1, base2, by = “var_llave”, all.x=TRUE)
Right join: mantiene todos los casos de la base2, con NA en las variables de la base1 para los casos que no existan en la base1. Para ello hay que indicar: nuevabase <- merge(base1, base2, by = “var_llave”, all.y=TRUE)
Ejemplos de merge:
eder12_ind_cov <- eder12_ind_cov %>%
dplyr::select(-edad_retro, -sex)
dim(eder12_ind_cov)
## [1] 1739 3
names(eder12_ind_cov)
## [1] "folio" "cohorte" "estrato"
Seleccionamos un subconjunto de variables en la base eder12_red
sub3 <- eder12_red %>%
dplyr::select(folio, sex, edad_retro, conmig:sinmig, conlab:deslaba)
dim(sub3)
## [1] 50431 16
names(sub3)
## [1] "folio" "sex" "edad_retro" "conmig" "acumig"
## [6] "conmign" "acumign" "conmigi" "acumigi" "sinmig"
## [11] "conlab" "aculab" "camlaba" "aculaba" "deslabc"
## [16] "deslaba"
La base principal (base1) será sub3 y a esa base le añadiremos la base secundaria (base2), que será eder12_ind_cov.
base_m1 <- merge(sub3, eder12_ind_cov, by="folio")
dim(base_m1)
## [1] 50431 18
names(base_m1)
## [1] "folio" "sex" "edad_retro" "conmig" "acumig"
## [6] "conmign" "acumign" "conmigi" "acumigi" "sinmig"
## [11] "conlab" "aculab" "camlaba" "aculaba" "deslabc"
## [16] "deslaba" "cohorte" "estrato"
La base resultante tiene el mismo número de casos que sub3, porque todos los casos identificados mediante “folio” están también en la base eder12_ind_cov. En este caso el resultado sería el mismo usando all.x=T o all=T.
table(eder12_ind_cov$estrato)
##
## 1 2 3
## 608 551 580
table(base_m1$estrato)
##
## 1 2 3
## 17632 15979 16820
table(eder12_ind_cov$cohorte)
##
## 1 2
## 863 876
table(base_m1$cohorte)
##
## 1 2
## 25027 25404
Los valores de las nuevas variables (estrato y cohorte), provenientes de la base eder12_ind_cov, han quedado asignados en base_m1 a cada fila con el mismo número de folio. En la base sub3 hay varias filas para cada número de folio; por ello la frecuencia de cada valor de estrato y cohorte aumenta en la base pegada.
sub_eder12 <- eder12 %>%
dplyr::select(folio, sex, edad_retro, conmig:sinmig, conlab:deslaba)
dim(sub_eder12)
## [1] 80776 16
names(sub_eder12)
## [1] "folio" "sex" "edad_retro" "conmig" "acumig"
## [6] "conmign" "acumign" "conmigi" "acumigi" "sinmig"
## [11] "conlab" "aculab" "camlaba" "aculaba" "deslabc"
## [16] "deslaba"
sub_eder <- eder %>%
dplyr::select(folio, sex, edad_retro, anio_naci:estrato)
dim(sub_eder)
## [1] 109034 7
names(sub_eder)
## [1] "folio" "sex" "edad_retro" "anio_naci" "cohorte"
## [6] "tercilesios" "estrato"
En este caso tenemos tres variables coincidentes: “folio” y “edad_retro” sirven para identificar cada año-persona. Además, “sex” es común en ambas variables. Tenemos que indicar las tres variables como variables comunes en el merge.
Primera opción: inner-join (mantiene los casos de la base sub_eder12)
base_m2i <- merge(sub_eder12,sub_eder,by=c("folio","edad_retro","sex"))
dim(base_m2i)
## [1] 80776 20
names(base_m2i)
## [1] "folio" "edad_retro" "sex" "conmig" "acumig"
## [6] "conmign" "acumign" "conmigi" "acumigi" "sinmig"
## [11] "conlab" "aculab" "camlaba" "aculaba" "deslabc"
## [16] "deslaba" "anio_naci" "cohorte" "tercilesios" "estrato"
table(base_m2i$cohorte)
##
## 1 2
## 46535 34241
La base resultante tiene el mismo número de casos que sub_eder12: 80,776 (únicamente los de las cohortes 1 y 2). El resultado habría sido el mismo si hubiésemos indicado all.x=T (left join).
Segunda opción: outer-join (mantiene todos los casos, también los que están sólo en la base sub_eder).
base_m2o <- merge(sub_eder12,sub_eder,by=c("folio","edad_retro","sex"), all=TRUE)
dim(base_m2o)
## [1] 109034 20
names(base_m2o)
## [1] "folio" "edad_retro" "sex" "conmig" "acumig"
## [6] "conmign" "acumign" "conmigi" "acumigi" "sinmig"
## [11] "conlab" "aculab" "camlaba" "aculaba" "deslabc"
## [16] "deslaba" "anio_naci" "cohorte" "tercilesios" "estrato"
table(base_m2o$cohorte)
##
## 1 2 3
## 46535 34241 28258
Ahora la base resultante tiene el mismo número de casos que sub_eder: 109,034 (los de las cohortes 1, 2 y 3). El resultado habría sido el mismo si hubiésemos indicado all.y=T (right join). Esto es así en este caso, porque sub_eder12 está contenida en sub_eder. Cuando en ambas bases hay casos que no están en la otra, los distintos tipos de join arrojan resultados diferentes.
Tenemos varias formas de crear nuevas variables a partir de otras.
table(eder$p3_4_nivel)
##
## 0 1 2 3 4 5 6 7 8 9
## 3664 31089 22019 1327 10986 2750 12794 2142 18731 3532
Vamos a crear 4 categorías: 1 “hasta primaria”, 2 “secundaria”, 3 “media superior” y 4 “universidad”. Primero creamos una variable nueva “niv_ed”, inicialmente vacía, y a partir de ahí empezamos a asignarle los valores.
eder$niv_ed <- NA
eder$niv_ed[eder$p3_4_nivel==0 | eder$p3_4_nivel==1] <- 1
eder$niv_ed[eder$p3_4_nivel==2 | eder$p3_4_nivel==3] <- 2
eder$niv_ed[eder$p3_4_nivel>=4 & eder$p3_4_nivel<=7] <- 3
eder$niv_ed[eder$p3_4_nivel==8 | eder$p3_4_nivel==9] <- 4
table(eder$p3_4_nivel,eder$niv_ed, useNA="ifany")
##
## 1 2 3 4
## 0 3664 0 0 0
## 1 31089 0 0 0
## 2 0 22019 0 0
## 3 0 1327 0 0
## 4 0 0 10986 0
## 5 0 0 2750 0
## 6 0 0 12794 0
## 7 0 0 2142 0
## 8 0 0 0 18731
## 9 0 0 0 3532
table(eder$p4_6)
##
## 0 1 2 3 4 5 6
## 49798 2536 9636 41823 2451 2738 52
Vamos a crear una variable nueva “cl”, inicialmente vacía, y le indicamos los valores de p4_6 que quedarán asignado a cada valor de la nueva variable. La variable “cl” tendrá tres categorías: 0 “no trabaja”, 1 “trabaja asalariado/a” y 2 “trabaja de otro modo”
eder$cl <- NA
eder$cl <- recode(eder$p4_6,"c(1,2,4,5,6)='2'; 0='0'; 3='1'")
table(eder$p4_6, eder$cl, useNA="ifany")
##
## 0 1 2
## 0 49798 0 0
## 1 0 0 2536
## 2 0 0 9636
## 3 0 41823 0
## 4 0 0 2451
## 5 0 0 2738
## 6 0 0 52
Lo mismo habríamos obtenido usando “else”, en lugar de la cadena de valores:
eder$cl2 <- NA
eder$cl2 <- recode(eder$p4_6,"0='0'; 3='1'; else='2'")
table(eder$p4_6, eder$cl2, useNA="ifany")
##
## 0 1 2
## 0 49798 0 0
## 1 0 0 2536
## 2 0 0 9636
## 3 0 41823 0
## 4 0 0 2451
## 5 0 0 2738
## 6 0 0 52
table(eder$p3_2)
##
## 0 1 2 3 4 5 6 7 8 9 10 90 91
## 4981 15477 5012 573 2317 512 933 320 2626 251 82 980 28127
## 92 93 94 95 96 97 98 99
## 15066 1401 6912 2003 8997 1471 9875 1118
Vamos a crear una nueva variable “est” con valores 1 si la persona estudia (cualquier nivel) y 0 si no estudia en ese año.
eder$est <- NA
eder$est <- ifelse(eder$p3_2>=1 & eder$p3_2<=10,1,0)
table(eder$p3_2,eder$est, useNA="ifany")
##
## 0 1
## 0 4981 0
## 1 0 15477
## 2 0 5012
## 3 0 573
## 4 0 2317
## 5 0 512
## 6 0 933
## 7 0 320
## 8 0 2626
## 9 0 251
## 10 0 82
## 90 980 0
## 91 28127 0
## 92 15066 0
## 93 1401 0
## 94 6912 0
## 95 2003 0
## 96 8997 0
## 97 1471 0
## 98 9875 0
## 99 1118 0
La función ifelse tiene tres partes: ifelse(condición,a,b). a es el valor que reciben los casos que cumplen la condición; b es el valor que reciben los casos restantes. Se pueden encadenar varios ifelse para asignar múltiples valores. Por ejemplo, si quisiéramos que la variable distinguiera si la persona no estudia (0), estudia nivel básico (primaria o secundaria) (1) o nivel medio superior (2), lo haríamos así:
eder$est2 <- NA
eder$est2 <- ifelse(eder$p3_2>=1 & eder$p3_2<=3,1,
ifelse(eder$p3_2>=4 & eder$p3_2<=10,2,0))
table(eder$p3_2,eder$est2, useNA="ifany")
##
## 0 1 2
## 0 4981 0 0
## 1 0 15477 0
## 2 0 5012 0
## 3 0 573 0
## 4 0 0 2317
## 5 0 0 512
## 6 0 0 933
## 7 0 0 320
## 8 0 0 2626
## 9 0 0 251
## 10 0 0 82
## 90 980 0 0
## 91 28127 0 0
## 92 15066 0 0
## 93 1401 0 0
## 94 6912 0 0
## 95 2003 0 0
## 96 8997 0 0
## 97 1471 0 0
## 98 9875 0 0
## 99 1118 0 0
table(eder$acuhijo)
##
## 0 1 2 3 4 5 6 7 8 9 10 11 12
## 55999 11015 14337 13642 7346 3057 1643 980 305 421 131 130 2
## 13 14
## 3 23
Vamos a crear una variable n_hijos con tres categorías: 0 “sin hijos”, 1 “1-2 hijos”, 2 “3 o más hijos”.
eder <- eder %>%
mutate(n_hijos = case_when(
acuhijo == 0 ~ 0,
acuhijo ==1 | acuhijo==2 ~ 1,
TRUE ~ 2
))
table(eder$acuhijo, eder$n_hijos, useNA="ifany")
##
## 0 1 2
## 0 55999 0 0
## 1 0 11015 0
## 2 0 14337 0
## 3 0 0 13642
## 4 0 0 7346
## 5 0 0 3057
## 6 0 0 1643
## 7 0 0 980
## 8 0 0 305
## 9 0 0 421
## 10 0 0 131
## 11 0 0 130
## 12 0 0 2
## 13 0 0 3
## 14 0 0 23
En el caso de mutate no hace falta crear la variable previamente. Se indica el nombre al inicio del mutate y la crea en el proceso. “TRUE” en mutate equivale al “else” de la función ifelse.
Salvo en la función recode, en todas las demás formas de recodificación podemos combinar condiciones de varias variables para la asignación de valores en la nueva variable.