if (!require("pacman")) install.packages("pacman") # instala pacman si se requiere
## Loading required package: pacman
pacman::p_load(tidyverse,
readxl,writexl,googlesheets4, # importar hojas de cálculo
haven, foreign, # importación de dta y sav
sjlabelled, # etiquetas
janitor, skimr) #limpieza y verificación
En caso que no tengas un proyecto,establecer el diretorio puede ayudar
¡Recuerda establecer tu directorio!
setwd("/Users/anaescoto/Dropbox/2020/2021-1 R para Demográfos/repo/R_Demo")
Base de competitividad estatal - IMCO
ICE_2018 <- read_excel("./datos/ICE_2018.xlsx", sheet = "para_importar")
## New names:
## * `` -> ...102
## * `` -> ...105
#View(ICI_2018)
Y limpiamos los nombres:
ICE_2018<-clean_names(ICE_2018)
Base de ECOVID - ML
ecovid0420 <- read_dta("./datos/ecovid0420.dta")
Existen operaciones que cambian las propiedades de nuestras bases de datos.
class(ICE_2018$region)
## [1] "character"
Existen varios “as”
class(as.numeric(ICE_2018$region))
## [1] "numeric"
Con esto podemos verificar el tipo de variable, es de especial utilidad para los gráficos que veremos más adelante.
Veamos un caso contrario
class(ICE_2018$matrimonio_igualitario)
## [1] "numeric"
En realidad, de acuerdo a la documentación:
0=No se considera el matrimonio igualitario
1=Sí se considera el matrimonio igualitario
as_factor(ICE_2018$matrimonio_igualitario) # checa también as.factor
## [1] 0 0 0 1 1 1 0 0 1 0 0 0 0 0 0 1 1 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0
## Levels: 0 1
También existen otra serie de comandos que se llaman “is.na”, arrojan resultados de falso y verdadero
is.na(ICE_2018$region)
## [1] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## [13] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## [25] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
table(is.na(ICE_2018$region))
##
## FALSE
## 32
Todos dicen Falso, ninguno es missing
mean(is.na(ICE_2018$region))
## [1] 0
Proporcion de 0 de valores missing.
Botando missing de un dataframe
prueba<-na.omit(ICE_2018)
Más vale ver las variables
prueba2<-ICE_2018 %>%
select(region:pobreza) %>%
na.omit()
Vimos en la clase pasada cómo usar las etiquetas, pero… queremos hacer nuestras propias etiquetas.
Como siempre es útil tener a la mano nuestro “codebook” o descriptor de archivos. Usaremos la variable clase2 de la ECOVID - ML
ecovid0420$clase2 <- set_labels(ecovid0420$clase2, labels = c("Ocupado(a)",
"Desocupado(a)", "Disponible", "No disponible"))
OJO: las etiquetas sólo se pueden aplicar a una variable numérica. Si la variable está declarada como factor o caracter no se puede etiquear.
Veamos cómo se ve nuestra etiqueta:
table(as_label(ecovid0420$clase2))
##
## Ocupado(a) Desocupado(a) Disponible No disponible
## 2893 202 1080 1418
Con “tabyl”
ecovid0420 %>%
mutate(clase2=as_label(clase2)) %>% # mutate para cambiar los valores
tabyl(clase2)
## clase2 n percent
## Ocupado(a) 2893 0.51725371
## Desocupado(a) 202 0.03611657
## Disponible 1080 0.19309852
## No disponible 1418 0.25353120
Para establecer la etiqueta de la variable tenemos:
ecovid0420$clase2 <- set_label(ecovid0420$clase2, label = "Condición de Actividad")
Cuando hemos etiquetado también las variables puede automatizar algunos títulos, porque podemos “pegar” este atributo
titulo<-paste(get_label(ecovid0420$clase2))
titulo
## [1] "Condición de Actividad"
Verificar el id, es una actividad esencial para el manejo de las bases de datos. Identificar qué significa nuestro renglón nos da mucha tranquilidad
ICE_2018 %>%
get_dupes(region)
## No duplicate combinations found of: region
## # A tibble: 0 x 110
## # … with 110 variables: region <chr>, dupe_count <int>, edo <chr>, edo2 <chr>,
## # region2 <chr>, homicidios <dbl>, secuestros <dbl>, robo_de_vehiculos <dbl>,
## # costos_del_delito <dbl>, incidencia_delictiva <dbl>,
## # delitos_denunciados <dbl>, percepcion_de_seguridad <dbl>,
## # competencia_en_servicios_notariales <dbl>, cumplimiento_de_contratos <dbl>,
## # caudal_tratado_de_aguas_residuales <dbl>,
## # eficiencia_economica_del_agua_en_la_agricultura <dbl>,
## # morbilidad_por_enfermedades_respiratorias <dbl>,
## # perdida_de_superficie_cubierta_por_arboles <dbl>,
## # areas_naturales_protegidas <dbl>,
## # volumen_de_residuos_solidos_generados <dbl>,
## # disposicion_adecuada_de_residuos_solidos <dbl>,
## # intensidad_energetica_de_la_economia <dbl>,
## # certificados_industria_limpia_emitidos <dbl>,
## # gastos_autorizados_al_fonden <dbl>, pobreza <dbl>, acceso_a_drenaje <dbl>,
## # acceso_a_instituciones_de_salud <dbl>,
## # mujeres_economicamente_activas <dbl>, equidad_salarial <dbl>,
## # indice_de_informalidad_laboral_entre_mujeres_y_hombres <dbl>,
## # analfabetismo <dbl>, escolaridad <dbl>, escuelas_de_calidad <dbl>,
## # rendimiento_academico <dbl>, esperanza_de_vida <dbl>,
## # mortalidad_infantil <dbl>,
## # mortalidad_por_diabetes_y_enfermedades_hipertensivas <dbl>,
## # suicidios <dbl>, embarazos_adolescentes <dbl>, camas_de_hospital <dbl>,
## # medicos_y_enfermeras <dbl>, medicos_con_especialidad <dbl>,
## # unidades_medicas_certificadas <dbl>, migracion_neta <dbl>,
## # incidencia_de_corrupcion <dbl>, percepcion_de_corrupcion_estatal <dbl>,
## # percepcion_de_corrupcion_en_partidos_politicos <dbl>,
## # consulta_de_informacion_de_finanzas_publicas <dbl>,
## # participacion_ciudadana <dbl>, competencia_electoral <dbl>,
## # barreras_a_candidatos_independientes <dbl>, equidad_en_el_congreso <dbl>,
## # matrimonio_igualitario <dbl>, agresiones_a_periodistas <dbl>,
## # interaccion_con_el_gobierno_por_medios_electronicos <dbl>,
## # indice_de_informacion_presupuestal_estatal <dbl>, ingresos_propios <dbl>,
## # registro_de_la_propiedad <dbl>, apertura_de_una_empresa <dbl>,
## # indicador_subnacional_de_mejora_regulatoria <dbl>,
## # hogares_que_se_surten_de_agua_por_pipa <dbl>,
## # accesibilidad_para_silla_de_ruedas <dbl>, informalidad_laboral <dbl>,
## # ingreso_promedio_de_trabajadores_de_tiempo_completo <dbl>,
## # desigualdad_salarial <dbl>,
## # personas_con_ingresos_por_debajo_de_la_linea_de_bienestar <dbl>,
## # eficiencia_terminal_en_secundaria <dbl>,
## # eficiencia_terminal_en_preparatoria <dbl>,
## # absorcion_en_educacion_superior <dbl>,
## # poblacion_foranea_con_educacion_superior <dbl>, capacitacion_laboral <dbl>,
## # pib_per_capita <dbl>, pib_en_sectores_de_alto_crecimiento <dbl>,
## # crecimiento_del_pib <dbl>,
## # deuda_estatal_y_de_organismos_estatales_pib <dbl>,
## # deuda_estatal_y_de_organismos_estatales_participaciones_federales <dbl>,
## # plazo_promedio_de_vencimiento_de_la_deuda <dbl>,
## # costo_promedio_de_la_deuda <dbl>,
## # personas_con_ingresos_mayores_al_promedio_estatal <dbl>,
## # participacion_laboral <dbl>, dependencia_economica <dbl>,
## # diversificacion_economica <dbl>, telefonia_movil <dbl>,
## # acceso_a_internet <dbl>, terminales_punto_de_venta <dbl>,
## # cajeros_automaticos <dbl>, uso_de_banca_movil <dbl>,
## # captacion_de_ahorro <dbl>, penetracion_del_seguro_en_la_economia <dbl>,
## # heridos_en_accidentes_de_transito_terrestre <dbl>,
## # accidentes_por_malas_condiciones_del_camino <dbl>,
## # flujo_de_pasajeros_aereos <dbl>, carga_aerea <dbl>,
## # flujo_de_pasajeros_aereos_internacionales <dbl>, pib_turistico <dbl>,
## # inversion_extranjera_directa <dbl>, exportacion_de_mercancias <dbl>,
## # complejidad_economica_en_sectores_de_innovacion <dbl>,
## # productividad_total_de_los_factores <dbl>, investigadores <dbl>, …
Esto es lo que queremos, que no hayan duplicados. Eso significa que es un identificador único.
ecovid0420 %>%
get_dupes(per, ent, con)
## No duplicate combinations found of: per, ent, con
## # A tibble: 0 x 164
## # … with 164 variables: per <dbl+lbl>, ent <dbl+lbl>, con <chr>,
## # dupe_count <int>, r_pre <dbl+lbl>, r_pre_dia <dbl>, r_pre_mes <dbl>,
## # r_def <dbl+lbl>, r_def_dia <dbl>, r_def_mes <dbl>, r_def_anio <dbl>,
## # pa1 <dbl>, pa2_1 <dbl>, pa2_1_1 <dbl>, pa2_h_1 <dbl>, pa2_h_2 <dbl>,
## # pa2_h_3 <dbl>, pa2_h_4 <dbl>, pa2_h_5 <dbl>, pa2_h_6 <dbl>, pa2_h_7 <dbl>,
## # pa2_h_8 <dbl>, pa2_h_9 <dbl>, pa2_2 <dbl>, pa2_2_1 <dbl>, pa2_m_1 <dbl>,
## # pa2_m_2 <dbl>, pa2_m_3 <dbl>, pa2_m_4 <dbl>, pa2_m_5 <dbl>, pa2_m_6 <dbl>,
## # pa2_m_7 <dbl>, pa2_m_8 <dbl>, pa2_m_9 <dbl>, pa3_1 <dbl>, pa3_1_1 <dbl>,
## # pa3_2 <dbl>, pa3_2_1 <dbl>, pa3_3 <dbl>, pa3_3_1 <dbl>, pa4_1 <dbl>,
## # pa4_2 <dbl>, pa4_3 <dbl>, pa4_4 <dbl>, pb1 <dbl+lbl>, pb2 <dbl>,
## # pb3 <dbl+lbl>, pc1_1 <dbl>, pc1_2 <dbl>, pc1_3 <dbl>, pc1_4 <dbl>,
## # pc2 <dbl>, pc3 <dbl+lbl>, pc4 <dbl+lbl>, pc5_1 <dbl>, pc5_2 <dbl>,
## # pc5_3 <dbl>, pc6 <dbl>, pc7 <dbl>, pd1 <dbl>, pd2 <dbl>, pd3 <dbl>,
## # pe1 <dbl>, pe2 <dbl>, pe3 <dbl>, pe4 <dbl>, pe5 <dbl>, pe5_1 <dbl>,
## # pe6 <dbl>, pe7 <dbl>, pe8 <dbl>, pe9 <dbl>, pe10 <dbl>, pe10_1 <dbl>,
## # pe11 <dbl>, pe12 <dbl>, pe12_1 <dbl>, pe13 <dbl>, pe14_1 <dbl>,
## # pe14_2 <dbl>, pe14_3 <dbl>, pe14_4 <dbl>, pe15 <dbl>, pe16 <dbl>,
## # pe17 <dbl>, pe18 <dbl>, pe19_1 <dbl>, pe19_2 <dbl>, pf1 <dbl>, pf2 <dbl>,
## # pf3_1 <dbl>, pf3_2 <dbl>, pf3_3 <dbl>, pf3_4 <dbl>, pf3_5 <dbl>,
## # pf3_6 <dbl>, pf4_1 <dbl>, pf4_1_1 <dbl>, pf5 <dbl>, pf6_1 <dbl>, …
La llave puede ser una variable o varias variables. Ojo, se separan por comas. En el diagrama de relación o en el descriptor puede estar esta información
Con la base que entregó:
Verifique los valores missings o perdidos de una variable de interés
Etiquete una variable (si aplica). Revise primero qué tipo de variable es.
Identifique las variables llave y verifique que no tenga duplicados
Revisa qué hacen los siguientes comandos:
Subir la información
https://forms.gle/nsqHGosCTM9TthiQA En caso que no terminemos en la sesión
Revisaremos las pantallas en clase. De los errores aprendemos.