Antes de hacer cualquier análisis de datos es necesario revisar la data para detectar posibles inconsistencias, transcripciones defectuosas, cálculos mal elaborados, entre otros aspectos. Los resultados de un análisis de data podrían ser cuestionables si ese análisis se elabora con data ‘en mal estado’. Veamos algunos pasos previos que nos permiten detectar qué limpiezas debemos emprender antes de iniciar el análisis.
# subimos la data a la consola de R
reni <- read.csv("D:/reni/data/hogares.csv", sep=";", dec=",", na.strings=" ", encoding="UFT-8")
Revisamos los nombres de las variables.
colnames(reni)
## [1] "fecha.del.censo" "ccom" "ctu"
## [4] "plant" "vele" "terp"
## [7] "vivi" "chog" "hogr"
## [10] "dorm" "cocp" "cocc"
## [13] "tenv" "cocn" "neve"
## [16] "lavd" "juco" "musa"
## [19] "utco" "vent" "comp"
## [22] "telv" "otrs" "toha"
## [25] "banio" "pots.1" "potencial.1"
## [28] "pots.2" "potencial.2" "ptos.3"
## [31] "potencial.3" "debs.1" "debilidades1"
## [34] "debs.2" "debilidades2" "debs.3"
## [37] "debilidades.3" "tipv" "cocp.1"
## [40] "mpar" "mtch" "mpis"
## [43] "srvs" "tlff" "tfmc"
## [46] "serb" "agua" "meda"
## [49] "aseo" "mede" "asrv"
## [52] "nºmh" "apno" "pcjh"
## [55] "tiph" "sexo" "fnrc"
## [58] "edad" "eemb" "eciv"
## [61] "lugn" "edo" "nrcn"
## [64] "pain" "slye" "grani"
## [67] "semt" "unea" "aeed"
## [70] "amie" "doas" "cesl"
## [73] "secl" "otin" "cing"
## [76] "imen" "infa" "pouo"
## [79] "oit" "caso" "clph"
## [82] "amvp" "eass" "ecss"
## [85] "cydh" "cclf" "cpss"
## [88] "cjie" "hiam" "cqhe"
## [91] "hefd" "hefd.especif" "disc"
## [94] "enft" "nrye"
Sería necesario buscar el libro de códigos original que acompaña a la data (no siempre se cuenta con esa herramienta) para cambiar los nombres de las variables por otros que sean más informativos.
Podemos revisar también el contenido de las variables. Usemos la función table(). Para este ejemplo revisaremos solo las diez primeras variables, y de éstas los cinco primeros casos.
sapply(reni[1:5, 1:10], function(x) table(x))
## $fecha.del.censo
## x
## agosto 2011 diciembre 2011 julio 2011 octubre 2011
## 0 5 0 0
##
## $ccom
## x
## ali primera con la union la nueva esperanza
## 0 0
## la esperanza de romulo gallegos la pica
## 0 0
## nuevo horizonte iii
## 5
##
## $ctu
## x
## antonio jose de sucre el futuro
## 0 5 0
## haidee machin jose antonio paez la esperanza
## 0 0 0
## la pica lino rosales nueva esperanza
## 0 0 0
## paso andino romulo gallegos
## 0 0
##
## $plant
## x
## 1 2 3 nr
## 0 3 2 0 0
##
## $vele
## x
## 1
## 5
##
## $terp
## x
## no nr si
## 0 0 0 5
##
## $vivi
## x
## 1 2 3 4 5 6 7 8 nr
## 0 5 0 0 0 0 0 0 0 0
##
## $chog
## x
## 1
## 5
##
## $hogr
## x
## 1
## 5
##
## $dorm
## x
## 0 1 2 3 4 5 nr
## 0 0 0 4 1 0 0 0
DE forma sistemática, faltan 6 casos en la data. Pudiera tratarse de celdas vacías. Exploremos el final de la matriz de datos usando la función tail()
tail(reni, 10)
## fecha.del.censo ccom ctu plant vele terp vivi chog hogr dorm
## 1161 agosto 2011 ali primera 1 2 no 1 1 1 3
## 1162 agosto 2011 ali primera 1 2 si 2 1 1 2
## 1163 agosto 2011 ali primera 1 2 si 1 1 1 3
## 1164 agosto 2011 ali primera 1 2 si 2 1 1 1
## 1165 agosto 2011 ali primera 1 2 no 1 1 1 1
## 1166 agosto 2011 ali primera 1 2 no 2 1 1 1
## 1167 agosto 2011 ali primera 1 1 si 1 1 1 2
## 1168 octubre 2011 ali primera 1 1 nr 1 1 1 1
## 1169 octubre 2011 ali primera 1 1 si 1 1 1 1
## 1170 agosto 2011 ali primera 1 1 si 1 1 1 4
## cocp cocc tenv cocn neve lavd juco musa
## 1161 si si propia pagada propia propia propia propio propio
## 1162 si no traspasada propia propia propia propio propio
## 1163 si no propia pagada propia propia propia propio no tiene
## 1164 si no propia pagada propia propia propia no tiene propio
## 1165 si no prestada propia propia propia propio no tiene
## 1166 si no alquilada propia propia propia no tiene no tiene
## 1167 si no propia pagada propia no tiene no tiene no tiene no tiene
## 1168 si no alquilada propia propia no tiene no tiene propio
## 1169 si no propia pagada propia no tiene no tiene no tiene no tiene
## 1170 si no propia pagada propia propia propia propio no tiene
## utco vent comp telv otrs toha banio
## 1161 propio propio no tiene propio propio 3 1
## 1162 propio propio no tiene propio propio 2 1
## 1163 propio no tiene no tiene propio no tiene 3 1
## 1164 propio propio no tiene propio propio 1 1
## 1165 propio propio no tiene propio propio 1 0
## 1166 no tiene propio no tiene propio propio 1 0
## 1167 propio propio no tiene propio propio 2 1
## 1168 propio no tiene no tiene propio propio 2 0
## 1169 propio no tiene no tiene propio no tiene 1 0
## 1170 propio propio no tiene propio no tiene 4 1
## pots.1 potencial.1 pots.2
## 1161 nada ninguna nr
## 1162 nr nr nr
## 1163 tranquilidad saneamiento y ambiente nr
## 1164 tranquilidad saneamiento y ambiente nr
## 1165 relacion vecinal vecindad nr
## 1166 agua servicios basicos servicios basicos
## 1167 nada ninguna nr
## 1168 nada ninguna nr
## 1169 cancha otras potencialidades escuelas
## 1170 vialidad e infraestructura servicios basicos transporte
## potencial.2 ptos.3 potencial.3
## 1161 nr nr nr
## 1162 nr nr nr
## 1163 nr nr nr
## 1164 nr nr nr
## 1165 nr nr nr
## 1166 servicios basicos basura saneamiento y ambiente
## 1167 nr nr nr
## 1168 nr nr nr
## 1169 proteccion nr nr
## 1170 servicios basicos agua servicios basicos
## debs.1 debilidades1
## 1161 transporte vialidad e infraestructura
## 1162 mala administracion consejo comunal desunion
## 1163 basura problemas ambientales
## 1164 basura problemas ambientales
## 1165 falta de escaleras vialidad e infraestructura
## 1166 escaleras vialidad e infraestructura
## 1167 escaleras vialidad e infraestructura
## 1168 escaleras vialidad e infraestructura
## 1169 todo todo
## 1170 inseguridad inseguridad
## debs.2 debilidades2 debs.3
## 1161 inseguridad inseguridad basura
## 1162 inseguridad inseguridad desorganizacion
## 1163 nr nr nr
## 1164 nr nr nr
## 1165 basurero problemas ambientales nr
## 1166 transporte vialidad e infraestructura inseguridad
## 1167 transporte vialidad e infraestructura nr
## 1168 transporte vialidad e infraestructura delincuencia
## 1169 nr nr nr
## 1170 alumbrado servicios basicos basura
## debilidades.3 tipv cocp.1 mpar
## 1161 problemas ambientales casa ocupada bloque o ladrillo frisado
## 1162 desunion rancho ocupada zinc
## 1163 nr rancho ocupada tablas
## 1164 nr casa ocupada bloque o ladrillo frisado
## 1165 nr rancho ocupada zinc
## 1166 inseguridad rancho ocupada tablas
## 1167 nr rancho ocupada tablas
## 1168 inseguridad rancho ocupada zinc
## 1169 nr rancho ocupada zinc
## 1170 problemas ambientales casa ocupada bloque o ladrillo sin frisar
## mtch mpis srvs tlff tfmc serb
## 1161 laminas de metal (zinc y similares) cemento si si no no
## 1162 laminas de metal (zinc y similares) cemento si si no no
## 1163 laminas de metal (zinc y similares) cemento si si no no
## 1164 laminas de metal (zinc y similares) cemento si no si no
## 1165 laminas de metal (zinc y similares) cemento si no si no
## 1166 laminas de metal (zinc y similares) tierra si no si si
## 1167 laminas de metal (zinc y similares) cemento si si no no
## 1168 laminas de metal (zinc y similares) cemento si no no si
## 1169 laminas de metal (zinc y similares) tierra si no si no
## 1170 laminas de metal (zinc y similares) cemento si no si si
## agua meda aseo mede
## 1161 acueducto o tuberia no aseo urbano o camion si
## 1162 acueducto o tuberia no container o bajante si
## 1163 acueducto o tuberia no al aire libre o quemada si
## 1164 acueducto o tuberia no al aire libre o quemada no
## 1165 acueducto o tuberia no al aire libre o quemada no
## 1166 acueducto o tuberia no container o bajante no
## 1167 otro no al aire libre o quemada si
## 1168 otro no al aire libre o quemada no
## 1169 otro no al aire libre o quemada no
## 1170 acueducto o tuberia no aseo urbano o camion si
## asrv nºmh apno
## 1161 poceta conectada a cloaca 1 torres mendoza luis hernando
## 1162 poceta conectada a cloaca 1 mijares luis leonardo
## 1163 poceta conectada a cloaca 1 torres bersa rosa
## 1164 poceta conectada a cloaca 1 torres luis
## 1165 no tiene poceta ni excusado 1 vega campo adalys del carmen
## 1166 no tiene poceta ni excusado 1 calvo mariote berhta cecilia
## 1167 no tiene poceta ni excusado 1 yepez marimon yirian
## 1168 no tiene poceta ni excusado 1 calvo juan carlos
## 1169 no tiene poceta ni excusado 1 cassiani guerra amparo
## 1170 poceta conectada a cloaca 1 valdes hernandez manuel francisco
## pcjh tiph sexo fnrc edad eemb eciv
## 1161 1 nf biparental hombre 12542 77 na casado/a
## 1162 1 nf biparental hombre 27799 35 na concubino/a
## 1163 1 nf monoparental materno mujer 17057 64 na soltero/a
## 1164 1 nf biparental hombre 30269 28 na concubino/a
## 1165 1 nf biparental mujer 31409 25 no soltero/a
## 1166 1 nf monoparental materno mujer 31092 26 no soltero/a
## 1167 1 hogar extendido mujer 26155 40 no soltero/a
## 1168 1 nf biparental hombre 32419 23 na concubino/a
## 1169 1 nf monoparental materno mujer 28382 34 no soltero/a
## 1170 1 nf biparental hombre 28792 32 na concubino/a
## lugn edo nrcn pain slye
## 1161 venezuela distrito capital venezolano/a si
## 1162 venezuela miranda venezolano/a si
## 1163 en el exterior colombia venezolano/a colombia no
## 1164 venezuela distrito capital venezolano/a si
## 1165 venezuela distrito capital venezolano/a si
## 1166 venezuela miranda venezolano/a si
## 1167 en el exterior colombia venezolano/a colombia no
## 1168 venezuela distrito capital venezolano/a no
## 1169 venezuela distrito capital venezolano/a si
## 1170 venezuela distrito capital venezolano/a si
## grani semt unea aeed amie doas
## 1161 sexto grado na basica no a ninguna na
## 1162 sexto grado na basica si a ninguna fuera de la comunidad
## 1163 na na sin nivel no a ninguna na
## 1164 sexto grado na basica no a ninguna na
## 1165 primer anio na basica si a ninguna fuera de la comunidad
## 1166 sexto grado na basica no a ninguna na
## 1167 segundo grado na basica no a ninguna na
## 1168 na na sin nivel no a ninguna na
## 1169 primer anio na basica no nr nr
## 1170 tercer anio na basica no a ninguna na
## cesl secl otin
## 1161 pensiona o jubila sin trabajar na pension
## 1162 trabajando privado no recibe
## 1163 trabajando por cuenta propia no recibe
## 1164 trabajando privado no recibe
## 1165 trabajando por cuenta propia no recibe
## 1166 trabajando por cuenta propia no recibe
## 1167 trabajando por cuenta propia no recibe
## 1168 desempleado na no recibe
## 1169 trabajando privado no recibe
## 1170 trabajando por cuenta propia no recibe
## cing imen infa pouo
## 1161 mensual 301 - 799 301 - 799 policia retirado
## 1162 quincenal 800 - 2000 800 - 2000 vigilante
## 1163 diario 301 - 799 800 - 2000 comerciante
## 1164 semanal 800 - 2000 800 - 2000 ayudante de albaniil
## 1165 diario 301 - 799 301 - 799 vendedora
## 1166 por trabajo realizado 800 - 2000 800 - 2000 peluquero/a
## 1167 por trabajo realizado menos de 300 301 - 799 cuidado de ninios
## 1168 na na ninguno jardinero
## 1169 semanal 800 - 2000 800 - 2000 cocinero/a
## 1170 semanal 800 - 2000 800 - 2000 vendedora
## oit caso clph amvp eass ecss
## 1161 tecnicos formacion academica na na na na
## 1162 trabajadores no calificados por cuenta propia no na no na
## 1163 trabajadores no calificados por cuenta propia no na no na
## 1164 trabajadores no calificados por cuenta propia no na no na
## 1165 servicios y vendedores por cuenta propia no na no na
## 1166 servicios y vendedores por cuenta propia no na no na
## 1167 trabajadores no calificados por cuenta propia no na no na
## 1168 trabajadores no calificados por cuenta propia no na no na
## 1169 oficiales y operarios por cuenta propia no na no na
## 1170 servicios y vendedores por cuenta propia no na si no
## cydh cclf cpss cjie hiam cqhe hefd hefd.especif disc
## 1161 na 0 si si si si hipertension arterial na no
## 1162 na na na na si no no na no
## 1163 na nr nr nr si si hipertension arterial na no
## 1164 na na na na si no no na no
## 1165 na na na na si no no na no
## 1166 na na na na si no no na no
## 1167 na na na na si no no na no
## 1168 na na na na no no no na no
## 1169 na na na na si no no na no
## 1170 si na na na no no no na no
## enft nrye
## 1161 no si
## 1162 no no
## 1163 no no
## 1164 no no
## 1165 no no
## 1166 no nr
## 1167 no no
## 1168 no no
## 1169 no no
## 1170 no no
Efectivamente, hay seis filas vacías. Eliminemosla:
ren<-reni[1:1159,]
# verificamos
dim(reni)
## [1] 1170 95
#repitamos tabla con las diez primeras variables
sapply(reni[1:5,1:10], function(x) table(x))
## $fecha.del.censo
## x
## agosto 2011 diciembre 2011 julio 2011 octubre 2011
## 0 5 0 0
##
## $ccom
## x
## ali primera con la union la nueva esperanza
## 0 0
## la esperanza de romulo gallegos la pica
## 0 0
## nuevo horizonte iii
## 5
##
## $ctu
## x
## antonio jose de sucre el futuro
## 0 5 0
## haidee machin jose antonio paez la esperanza
## 0 0 0
## la pica lino rosales nueva esperanza
## 0 0 0
## paso andino romulo gallegos
## 0 0
##
## $plant
## x
## 1 2 3 nr
## 0 3 2 0 0
##
## $vele
## x
## 1
## 5
##
## $terp
## x
## no nr si
## 0 0 0 5
##
## $vivi
## x
## 1 2 3 4 5 6 7 8 nr
## 0 5 0 0 0 0 0 0 0 0
##
## $chog
## x
## 1
## 5
##
## $hogr
## x
## 1
## 5
##
## $dorm
## x
## 0 1 2 3 4 5 nr
## 0 0 0 4 1 0 0 0
Hemos eliminado las filas vacías. Ahora es necesario hacer algunas limpiezas en las categorías de las variables:
reni[,1]<-gsub("Con la Unión la Nueva Esperanza",'nueva esperanza', perl=TRUE,reni[,1])
reni[,1]<-gsub("La esperanza de Rómulo Gallegos",'romulo gallegos', perl=TRUE,reni[,1])
reni[,1]<-gsub("Nuevo Horizonte III",'nvo horizonte', perl=TRUE,reni[,1])
reni[,1]<-tolower(reni[,1])
# comprobemos los cambios en la variable
table(reni[,1])
##
## agosto 2011 diciembre 2011 julio 2011 octubre 2011
## 236 848 72 14
# cambio el tipo de variable
reni[,1]<-as.factor(reni[,1])
El procedimiento anterior se sigue para reunir categorias de variables. Por ejemplo:
Hagamo algunas como demostracion
reni$pots.1 <-gsub('actividad recreativa',
'actividades recreativas',
perl=TRUE, reni$pots.1)
reni$pots.1 <-gsub('actividades de recreacion infantil',
'actividades recreativas',
perl=TRUE, reni$pots.1)
reni$pots.1 <-gsub('actos deportivos',
'actividades deportivas',
perl=TRUE, reni$pots.1)
Para acelerar el proceso, podemos crear una función usando la función gsub como medio:
limpiar<-function(viejo, nuevo, variable){
x <-gsub(viejo, nuevo,
perl=TRUE,variable)
return(x)
}
reni$pots.1 <-limpiar('colegio cercano', 'colegios',
reni$pots.1)
reni$pots.1 <-limpiar('compartir con ellos',
' colaboracion',
reni$pots.1)
reni$pots.1 <-limpiar('buen transporte',
'transporte',
reni$pots.1)
Eliminamos la segunda variable dado que no es vital para el análisis:
reni<- reni[,-2]
#verifiquemos
dim(reni)
## [1] 1170 94
Una vez que TODA la data ESTE DEBIDAMENTE LIMPIA, que no es el caso en este ejemplo, puesto que sólo hemos trabajado algunos caso, podemos hacer los analisis exploratorios