Path: blob/main/Trabajo_grupal/WG6/Grupo_2_R.R
2714 views
####GRUPO 21####CURSO: R Y PYTHON2####WG6345#############################EJERCICIO 1#########################6##################################################################789#Llamo paquetes necesarios10pacman::p_load(haven,dplyr, stringr, srvyr)1112#Fijar directorio1314user <- Sys.getenv("USERNAME")1516setwd( paste0("C:/Users/",user,"/Documents/GitHub/My-scripts/Lab7") )1718#Importar bases de datos1920#201921enaho01_2019 = data.frame(2223read_dta("../data_extra/enaho/2019/687-Modulo01/enaho01-2019-100.dta")2425) #Modulo 12627enaho34_2019 = data.frame(28read_dta("../data_extra/enaho/2019/687-Modulo34/sumaria-2019.dta")29) #Modulo 343031#202032enaho01_2020 = data.frame(3334read_dta("../data_extra/enaho/2020/737-Modulo01/enaho01-2020-100.dta")3536) #Modulo 13738enaho34_2020 = data.frame(39read_dta("../data_extra/enaho/2020/737-Modulo34/sumaria-2020.dta")40) #Modulo 344142#Base de los deflactores4344base_deflactor = data.frame(45read_dta("../data_extra/enaho/2020/737-Modulo34/ConstVarGasto-Metodologia actualizada/Gasto2020/Bases/deflactores_base2020_new.dta")46)4748#Seleccionar variables que usaremos, principalmente los identificadores, miembros del hogar, ingreso, gasto y deflactores495051enaho34_2019 <- enaho34_2019[ , c("aÑo", "conglome", "vivienda", "hogar",52"ubigeo", "dominio" ,"estrato", "mieperho", "inghog1d", "gashog2d", "ld")]5354enaho34_2020 <- enaho34_2020[ , c("aÑo", "conglome", "vivienda", "hogar",55"ubigeo", "dominio" ,"estrato", "mieperho", "inghog1d", "gashog2d", "ld")]5657base_deflactor <- base_deflactor[ , c("dpto", "i00", "aniorec")]5859#---------- MERGE DE LAS BASES DE CADA AÑO-----------------------------------------6061#201962#Merge entre las bases enaho01_2019 y enaho34_2019, a travès de los identificadores conglome, vivienda y hogar.63#Asimismo, la nueva base tendra todas las variables y observaciones asi no haya match y aquellas que tengan nombres repetidos y pertenezcan a la segunda base tendran el sufijo .y.64enaho2019_merge <- merge(enaho01_2019, enaho34_2019,65by = c("conglome", "vivienda", "hogar"),66all.x = T, all.y = T, suffixes = c("",".y")67)6869colnames(enaho2019_merge)7071#Elimino aquellas columnas que tengan el sufijo .y72index <- grep(".y$", colnames(enaho2019_merge))7374enaho_2019 <- enaho2019_merge[, - index]75colnames(enaho_2019)7677#202078#Realizo el merge con el mismo proceso de las bases del año 2019.79enaho2020_merge <- merge(enaho01_2020, enaho34_2020,80by = c("conglome", "vivienda", "hogar"),81all.x = T, all.y = T, suffixes = c("",".y")82)8384colnames(enaho2020_merge)8586#Elimino aquellas variables con el sufijo .y87index1 <- grep(".y$", colnames(enaho2020_merge))8889enaho_2020 <- enaho2020_merge[, - index1]90colnames(enaho_2020)9192#Append de mis 2 bases, primero que aparesca la del año 2019 y luego la del año 20209394merge_append <- bind_rows(enaho_2019, enaho_2020)9596unique(merge_append$aÑo)979899#Se obtiene variable para dpto ya que nos servirà para hacer el proximo merge100#Para ello, se extrae desde la posición 1, los 2 primeros digitos.101102merge_append['departamento'] = substr(merge_append$ubigeo, 1, 2)103104#Corroboramos las clases de cada variable de departamento en nuestras bases para hacer el merge105class(merge_append$departamento)106class(base_deflactor$dpto)107#Sin embargo, se obtiene que la primera es caracter y la segunda es numeric.108109#Entonces, pasamos nuestra variable departamento de caracter a nùmero, así se podrá realizar mejor el merge.110merge_append$departamento <- as.numeric(merge_append$departamento)111class(merge_append$departamento) #ahora es numeric112113#Merge con la base del deflactor114#Se indica que se realice el merge a travès de variables con distintos nombres, y que se quede con las observaciones de la primera base(merge_append).115base_enaho <- merge(merge_append, base_deflactor,116by.x = c("departamento", "aÑo"),117by.y = c("dpto", "aniorec"),118all.x = TRUE)119120unique(base_enaho$aÑo)121colnames(base_enaho)122123#Selecciono aquellas variables que usaré124base_enaho <- base_enaho[ , c( "departamento", "aÑo", "conglome", "vivienda", "hogar",125"ubigeo", "dominio" ,"estrato", "mieperho", "inghog1d", "gashog2d", "ld", "i00")]126127#Por último hallo mis ingresos y gastos del ejercicio.128#Dividir las variables de ingreso y gasto por mieperho, 12, ld e i00129130#Primero con el Ingreso131#ingreso bruto anual del hogar entre numero de miembros del hogar132base_enaho['ing_per1'] = base_enaho$inghog1d / base_enaho$mieperho133#ingreso bruto anual del hogar entre 12134base_enaho['ing_per2'] = base_enaho$inghog1d / base_enaho$ld135#ingreso bruto anual del hogar entre el deflactor espacial136base_enaho['ing_per3'] = base_enaho$inghog1d / 12137#ingreso bruto anual del hogar entre el deflactor temporal138base_enaho['ing_per4'] = base_enaho$inghog1d / base_enaho$i00139140#Luego con el gasto141#gasto bruto anual del hogar entre miembros del hogar142base_enaho['gasto_per1'] = base_enaho$gashog2d / base_enaho$mieperho143#gasto bruto anual del hogar entre 12144base_enaho['gasto_per2'] = base_enaho$gashog2d / base_enaho$ld145#gasto bruto anual del hogar entre el deflactor espacial146base_enaho['gasto_per3'] = base_enaho$gashog2d / 12147#gasto bruto anual del hogar entre el delfactor temporal148base_enaho['gasto_per4'] = base_enaho$gashog2d / base_enaho$i00149150151#Extraer base de datos nueva152write_dta(base_enaho, "../data_extra/enaho/WG6_1_r.dta")153154155############################RESOLUCIÓN DEL EJERCICIO 2############################156#Importamos lo necesario para realizar el ejercicio157158library(haven) # leer archivos spss, stata, dbf, etc159library(dplyr) # limpieza de datos160library(stringr) # grep for regular expression161library(fastDummies) # crear dummy162library(srvyr) # libreria para declarar el diseño muestral de una encuesta163library(survey)164165166#Realizamos los siguientes pasos para importar la data de ENAHO 2020, módulo 5 de empleo167168"Set Directorio"169170user <- Sys.getenv("USERNAME") # username171172setwd( paste0("C:/Users/",user,"/Documents/GitHub/Quispe_Angie_Rep") ) # set directorio173174175"Creamos el dataset de ENAHO"176177enaho01 <- read_dta("C:/Users/MSI/Documents/GitHub/Quispe_Angie_Rep/enaho01a-2020-500.dta")178179180# tibble dataset181182enaho01$dominio183184enaho01 <- data.frame(185186read_dta("../../../enaho/2020/737-Modulo01/737-Modulo01/enaho01-2020-500.dta")187188)189190#data.frame dataset191192enaho01193enaho01$dominio194195#Reviso los nombres de mi data para asegurarme que se encuentran las variable196#que necesito197198enaho01$estrato %>% attr('labels') # value labels199200201enaho01$factor07 %>% attr('label') # var label202203names(enaho01)204205206# Selecciono las variables que utilizaré207208enaho01 <- enaho01[ , c("conglome", "vivienda", "hogar" , "codperso",209"ubigeo", "dominio" ,"estrato" , "i524e1" ,210"i538e1") ]211212names(enaho01)213214#Ahora, pasamos a los cálculos para poder hallar los ingresos por horas215#Primero, el ingreso anual del principal y segundo empleo del trabajador dependiente son216#i524e1 i538e1 respectivamente217218enaho01 <- enaho01 %>%219mutate(ingreso_pc = enaho01$i524e1 + enaho01$i538e1) %>%220221#Para los ingresos por hora, el dato anterior hallado "ingresos_ suma" lo dividimos por222#la cantidad de horas trabajados en el principal y segundo empleo en la semana, i513t+ i518223#respectivamente224#Finalmente, se divide por 52, pues el año tiene 52 semanas.225226enaho01 <- enaho01 %>%227mutate(ingreso_hora=sum(i524e1+i538e1, na.rm = T)/sum((i513t+i518)/52, na.rm = T) %>%228229230############# EJERCICIO 4 ########################231232########################### Problema Indicadores (Solo en R) ###########################233234# Primero, especifique el diseño muestral de su encuesta.235236# Use el modulo 37 (enaho01-2020-700) y a partir de la variable p710_04 (algún miembro del hogar es beneficiario del programa juntos en los últimos 3 años), halle el porcentaje que hogares a nivel departamental (o región) que se beneficia del programa.237238# Se procede a instalar los packages239install.packages("srvyr")240install.packages("dplyr")241install.packages("grid")242install.packages("read_dta")243244#Librerias de limpieza de datos245install.packages("pacman")246pacman::p_load(haven,dplyr, stringr, fastDummies)247248library(haven) # leer archivos spss, stata, dbf, etc249library(dplyr) # limpieza de datos250library(stringr) # grep for regular expression251library(fastDummies) # crear dummy252library(srvyr) # libreria para declarar el diseño muestral de una encuesta253library(survey)254255256# Setear directorio257"1.0 Set Directorio"258259user <- Sys.getenv("USERNAME") # username260261setwd( paste0("/Users/enriquerios/Desktop/PUCP 2022.2/R y Python/1ECO35_2022_2/data/") ) # set directorio262263# Se procede a usar el modulo 37 (enaho01-2020-700)264enaho37 <- read_dta("/Users/enriquerios/Desktop/PUCP 2022.2/R y Python/1ECO35_2022_2/data/enaho/2020/737-Modulo37/737-Modulo37/enaho01-2020-700.dta")265print(enaho37)266267268### Ubigeo de departamento269270# sibstr permite sustraer digitos de un string, texto, caracter271272enaho37['ubigeo_dep'] = substr(enaho37$ubigeo, 1, 2)273274# a aprtir de la posición inicial, extraer los dos primeros digitos275276enaho37['ubigeo_dep_2'] = paste(substr(enaho37$ubigeo,1,2),277"0000", sep = "")278print(enaho37['ubigeo_dep_2'])279280### filtrado para algunos departamentos281282enaho37 <- enaho37 %>% filter(283enaho37$ubigeo_dep %in% c("01","02","03","04","05","06","07","08","09","10","11","12",284"13","14","15","16","17","18","19","20","21","22","23","24","25","26") )285286#library(dplyr)287288enaho37 <- enaho37 %>%289mutate(region = case_when(ubigeo_dep == "01" ~ "Amazonas",290ubigeo_dep == "02" ~ "Ancash",291ubigeo_dep == "03" ~ "Apurimac",292ubigeo_dep == "04" ~ "Arequipa",293ubigeo_dep == "05" ~ "Ayacucho",294ubigeo_dep == "06" ~ "Cajamarca",295ubigeo_dep == "07" ~ "Callao",296ubigeo_dep == "08" ~ "Cusco",297ubigeo_dep == "09" ~ "Huancavelica",298ubigeo_dep == "10" ~ "Huanuco",299ubigeo_dep == "11" ~ "Ica",300ubigeo_dep == "12" ~ "Junin",301ubigeo_dep == "13" ~ "La Libertad",302ubigeo_dep == "14" ~ "Lambayeque",303ubigeo_dep == "15" ~ "Lima",304ubigeo_dep == "16" ~ "Loreto",305ubigeo_dep == "17" ~ "Madre de Dios",306ubigeo_dep == "18" ~ "Moquegua",307ubigeo_dep == "19" ~ "Pasco",308ubigeo_dep == "20" ~ "Piura",309ubigeo_dep == "21" ~ "Puno",310ubigeo_dep == "22" ~ "San Martín",311ubigeo_dep == "23" ~ "Tacna",312ubigeo_dep == "24" ~ "Tumbes",313ubigeo_dep == "25" ~ "Ucayali") )314315316# Filtrar variable p710_04317# (Algún miembro del hogar es beneficiario del programa juntos en los últimos 3 años), // Solo al jefe del hogar a nivel hogar318# Halle el porcentaje que hogares a nivel departamental (o región) que se beneficia del programa.319# Extraer primeros dígitos ()320enaho37 <- enaho37[enaho37$p710_04] #Considerar a beneficiarios y no beneficiarios321322colnames(enaho37)323324index = grep("(p710_04)|(aÑo)|(ubigeo_dep)",325colnames(enaho37))326327# group by a nivel departamental (con el nuevo código)/ la media a esaa variable.328329print(colnames(enaho37)[index])330331table(enaho37$p710_04)332333enaho37 %>% dplyr::filter(!is.na(p710_04)) %>% group_by(p710_04) %>% summarise(Freq.abs = n()) %>%334mutate(Freq.relative = (Freq.abs/sum(Freq.abs))*100) %>% arrange(desc(Freq.relative))335# Esto nos arroja una tabla de frecuencias absolutas y relativas con los siguientes valores para los336# Beneficiarios del programa Juntos son cerca de 4946 beneficiarios.337338# pj1 significa programa juntos339pj1 <- enaho37 %>% group_by(ubigeo_dep, aÑo) %>%340summarise(341pj1_min = min(p710_04),342pj1_sum = sum(p710_04), total_miembros = n(),343pj1_max = max(p710_04), .groups = "keep"344)345346# sin considerar los missing347348pj1_no_missing <- enaho37 %>% group_by(ubigeo_dep, aÑo ) %>%349summarise(350pj1_min = min(p710_04, na.rm = TRUE),351pj1_sum = sum(p710_04, na.rm = T), total_miembros = n(),352pj1_max = max(p710_04, na.rm = T),353)354355356# Explícitamente, la advertencia surge por que se están agrupando por varias variables.357# Para evitar el mensaje, debemos incluir el argumento .groups = "keep"358359pj2 <- enaho37 %>% group_by(ubigeo_dep, aÑo ) %>%360summarise(361pj2_min = min(p710_04, na.rm = TRUE),362pj2_sum = sum(p710_04, na.rm = T), total_miembros = n(),363pj2_max = max(p710_04, na.rm = T), .groups = "keep"364)365366367pj3 <- enaho37 %>% group_by(ubigeo_dep) %>%368summarise(index_projuntos = mean(pj2 , na.rm = T), .groups = "keep" )369370class(enaho37$p710_04)371372# Para el 2020 según las tablas de la parte superior para la Región de373#Para la región de "01" ~ "Amazonas", el porcentaje es de 33% de beneficiarios374#Para la región de "02" ~ "Ancash",el porcentaje es de 18% de beneficiarios375#Para la región de "03" ~ "Apurimac",el porcentaje es de 34% de beneficiarios376#Para la región de "04" ~ "Arequipa",el porcentaje es de 2% de beneficiarios377#Para la región de "05" ~ "Ayacucho",el porcentaje es de 26% de beneficiarios378#Para la región de "06" ~ "Cajamarca",el porcentaje es de 31% de beneficiarios379#Para la región de "07" ~ "Callao",el porcentaje es de 1% de beneficiarios380#Para la región de "08" ~ "Cusco",el porcentaje es de 21% de beneficiarios381#Para la región de "09" ~ "Huancavelica",el porcentaje es de 39% de beneficiarios382#Para la región de "10" ~ "Huanuco",el porcentaje es de 31% de beneficiarios383#Para la región de "11" ~ "Ica",el porcentaje es de 1% de beneficiarios384#Para la región de "12" ~ "Junin",el porcentaje es de 11% de beneficiarios385#Para la región de "13" ~ "La Libertad",el porcentaje es de 15% de beneficiarios386#Para la región de "14" ~ "Lambayeque",el porcentaje es de 2% de beneficiarios387#Para la región de "15" ~ "Lima",el porcentaje es de 1% de beneficiarios388#Para la región de "16" ~ "Loreto",el porcentaje es de 30% de beneficiarios389#Para la región de "17" ~ "Madre de Dios",el porcentaje es de 3% de beneficiarios390#Para la región de "18" ~ "Moquegua",el porcentaje es de 1% de beneficiarios391#Para la región de "19" ~ "Pasco",el porcentaje es de 37% de beneficiarios392#Para la región de "20" ~ "Piura",el porcentaje es de 20% de beneficiarios393#Para la región de "21" ~ "Puno",el porcentaje es de 19% de beneficiarios394#Para la región de "22" ~ "San Martín",el porcentaje es de 16% de beneficiarios395#Para la región de "23" ~ "Tacna",el porcentaje es de 3% de beneficiarios396#Para la región de "24" ~ "Tumbes",el porcentaje es de 1% de beneficiarios397#Para la región de "25" ~ "Ucayali" , el porcentaje es de 5% de beneficiarios398399enaho37 %>% dplyr::filter(!is.na(p710_04)) %>% group_by(p710_04) %>% summarise(total_miembros = n()) %>%400mutate(Porcentaje.projun = (total_miembros/sum(pj2))*100) %>% arrange(desc(Porcentaje.projun))401402survey_enaho37 <- svydesign(id=~ubigeo_dep, weights=~p710_04,strata=~estrato, data=enaho34)403404# Ahora la segunda parte405# Del módulo 34 y la base de datos sumaria-2020, muestre el promedio del porcentaje de gasto en salud realizado por los hogares a nivel de región (o departamentos).406enaho34 <- read_dta("/Users/enriquerios/Desktop/PUCP 2022.2/R y Python/1ECO35_2022_2/data/enaho/2020/737-Modulo34/737-Modulo34/sumaria-2020.dta")407print(enaho34)408409410### Luego, se procede a plantear la variable Ubigeo de departamento411412# sibstr permite sustraer digitos de un string, texto, caracter413414enaho34['ubigeo_dep'] = substr(enaho34$ubigeo, 1, 2)415416# a aprtir de la posición inicial, extraer los dos primeros digitos417418enaho34['ubigeo_dep_2'] = paste(substr(enaho37$ubigeo,1,2),419"0000", sep = "")420print(enaho34['ubigeo_dep_2'])421422### filtrado para algunos departamentos423424enaho34 <- enaho34 %>% filter(425enaho34$ubigeo_dep %in% c("01","02","03","04","05","06","07","08","09","10","11","12",426"13","14","15","16","17","18","19","20","21","22","23","24","25","26") )427428#library(dplyr)429430enaho34 <- enaho34 %>%431mutate(region = case_when(ubigeo_dep == "01" ~ "Amazonas",432ubigeo_dep == "02" ~ "Ancash",433ubigeo_dep == "03" ~ "Apurimac",434ubigeo_dep == "04" ~ "Arequipa",435ubigeo_dep == "05" ~ "Ayacucho",436ubigeo_dep == "06" ~ "Cajamarca",437ubigeo_dep == "07" ~ "Callao",438ubigeo_dep == "08" ~ "Cusco",439ubigeo_dep == "09" ~ "Huancavelica",440ubigeo_dep == "10" ~ "Huanuco",441ubigeo_dep == "11" ~ "Ica",442ubigeo_dep == "12" ~ "Junin",443ubigeo_dep == "13" ~ "La Libertad",444ubigeo_dep == "14" ~ "Lambayeque",445ubigeo_dep == "15" ~ "Lima",446ubigeo_dep == "16" ~ "Loreto",447ubigeo_dep == "17" ~ "Madre de Dios",448ubigeo_dep == "18" ~ "Moquegua",449ubigeo_dep == "19" ~ "Pasco",450ubigeo_dep == "20" ~ "Piura",451ubigeo_dep == "21" ~ "Puno",452ubigeo_dep == "22" ~ "San Martín",453ubigeo_dep == "23" ~ "Tacna",454ubigeo_dep == "24" ~ "Tumbes",455ubigeo_dep == "25" ~ "Ucayali") )456457458# Para hallar el porcentaje del gasto anual del hogar destinado a la salud divida gru51hd por gashog2d.459460461# Se propone esta referenciaa gru51hd/gashoh2d462463enaho34 <- enaho34 %>%464dplyr::mutate(gasto_annual_salud = gru51hd/(100*gashoh2d)465466print(enaho34['gasto_annual_salud'])467468#creando dummies usando la variabe de nivel educativo alcanzado p301a469470enaho34 <- dummy_cols(enaho34, select_columns = 'gru51hd')471472473View(enaho34[, c("gru51hd","gashoh2d")])474475476# Nota: debe aplicar las librerias dplyr y srvyr477478# A continuación los 8 grupos de gasto clasificados por INEI. En la base de datos sumaria-2020-12g se muestra la agrupación en 12 grupos.479480# gru11hd: gasto anual en alimentos481# gru21hd: gasto anual en vestido y calzado482# gru31hd: gasto anual en Alquiler de vivienda, Combustible, Electricidad y Conservación de la Vivienda483# gru41hd: gasto anual en Muebles, Enseres y Mantenimiento de la vivienda484# gru51hd: gasto anual en Cuidado, Conservación de la Salud y Servicios Médicos485# gru61hd: gasto anual en Transporte486# gru71hd: gasto anual en Esparcimiento487# gru81hd: gasto anual en Otros bienes y servicios488489490491492493494495