Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
robertopucp
GitHub Repository: robertopucp/1eco35_2022_2
Path: blob/main/Trabajo_grupal/WG6/Grupo_2_R.R
2714 views
1
####GRUPO 2
2
####CURSO: R Y PYTHON
3
####WG6
4
5
6
#############################EJERCICIO 1#########################
7
##################################################################
8
9
10
#Llamo paquetes necesarios
11
pacman::p_load(haven,dplyr, stringr, srvyr)
12
13
#Fijar directorio
14
15
user <- Sys.getenv("USERNAME")
16
17
setwd( paste0("C:/Users/",user,"/Documents/GitHub/My-scripts/Lab7") )
18
19
#Importar bases de datos
20
21
#2019
22
enaho01_2019 = data.frame(
23
24
read_dta("../data_extra/enaho/2019/687-Modulo01/enaho01-2019-100.dta")
25
26
) #Modulo 1
27
28
enaho34_2019 = data.frame(
29
read_dta("../data_extra/enaho/2019/687-Modulo34/sumaria-2019.dta")
30
) #Modulo 34
31
32
#2020
33
enaho01_2020 = data.frame(
34
35
read_dta("../data_extra/enaho/2020/737-Modulo01/enaho01-2020-100.dta")
36
37
) #Modulo 1
38
39
enaho34_2020 = data.frame(
40
read_dta("../data_extra/enaho/2020/737-Modulo34/sumaria-2020.dta")
41
) #Modulo 34
42
43
#Base de los deflactores
44
45
base_deflactor = data.frame(
46
read_dta("../data_extra/enaho/2020/737-Modulo34/ConstVarGasto-Metodologia actualizada/Gasto2020/Bases/deflactores_base2020_new.dta")
47
)
48
49
#Seleccionar variables que usaremos, principalmente los identificadores, miembros del hogar, ingreso, gasto y deflactores
50
51
52
enaho34_2019 <- enaho34_2019[ , c("aÑo", "conglome", "vivienda", "hogar",
53
"ubigeo", "dominio" ,"estrato", "mieperho", "inghog1d", "gashog2d", "ld")]
54
55
enaho34_2020 <- enaho34_2020[ , c("aÑo", "conglome", "vivienda", "hogar",
56
"ubigeo", "dominio" ,"estrato", "mieperho", "inghog1d", "gashog2d", "ld")]
57
58
base_deflactor <- base_deflactor[ , c("dpto", "i00", "aniorec")]
59
60
#---------- MERGE DE LAS BASES DE CADA AÑO-----------------------------------------
61
62
#2019
63
#Merge entre las bases enaho01_2019 y enaho34_2019, a travès de los identificadores conglome, vivienda y hogar.
64
#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.
65
enaho2019_merge <- merge(enaho01_2019, enaho34_2019,
66
by = c("conglome", "vivienda", "hogar"),
67
all.x = T, all.y = T, suffixes = c("",".y")
68
)
69
70
colnames(enaho2019_merge)
71
72
#Elimino aquellas columnas que tengan el sufijo .y
73
index <- grep(".y$", colnames(enaho2019_merge))
74
75
enaho_2019 <- enaho2019_merge[, - index]
76
colnames(enaho_2019)
77
78
#2020
79
#Realizo el merge con el mismo proceso de las bases del año 2019.
80
enaho2020_merge <- merge(enaho01_2020, enaho34_2020,
81
by = c("conglome", "vivienda", "hogar"),
82
all.x = T, all.y = T, suffixes = c("",".y")
83
)
84
85
colnames(enaho2020_merge)
86
87
#Elimino aquellas variables con el sufijo .y
88
index1 <- grep(".y$", colnames(enaho2020_merge))
89
90
enaho_2020 <- enaho2020_merge[, - index1]
91
colnames(enaho_2020)
92
93
#Append de mis 2 bases, primero que aparesca la del año 2019 y luego la del año 2020
94
95
merge_append <- bind_rows(enaho_2019, enaho_2020)
96
97
unique(merge_append$aÑo)
98
99
100
#Se obtiene variable para dpto ya que nos servirà para hacer el proximo merge
101
#Para ello, se extrae desde la posición 1, los 2 primeros digitos.
102
103
merge_append['departamento'] = substr(merge_append$ubigeo, 1, 2)
104
105
#Corroboramos las clases de cada variable de departamento en nuestras bases para hacer el merge
106
class(merge_append$departamento)
107
class(base_deflactor$dpto)
108
#Sin embargo, se obtiene que la primera es caracter y la segunda es numeric.
109
110
#Entonces, pasamos nuestra variable departamento de caracter a nùmero, así se podrá realizar mejor el merge.
111
merge_append$departamento <- as.numeric(merge_append$departamento)
112
class(merge_append$departamento) #ahora es numeric
113
114
#Merge con la base del deflactor
115
#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).
116
base_enaho <- merge(merge_append, base_deflactor,
117
by.x = c("departamento", "aÑo"),
118
by.y = c("dpto", "aniorec"),
119
all.x = TRUE)
120
121
unique(base_enaho$aÑo)
122
colnames(base_enaho)
123
124
#Selecciono aquellas variables que usaré
125
base_enaho <- base_enaho[ , c( "departamento", "aÑo", "conglome", "vivienda", "hogar",
126
"ubigeo", "dominio" ,"estrato", "mieperho", "inghog1d", "gashog2d", "ld", "i00")]
127
128
#Por último hallo mis ingresos y gastos del ejercicio.
129
#Dividir las variables de ingreso y gasto por mieperho, 12, ld e i00
130
131
#Primero con el Ingreso
132
#ingreso bruto anual del hogar entre numero de miembros del hogar
133
base_enaho['ing_per1'] = base_enaho$inghog1d / base_enaho$mieperho
134
#ingreso bruto anual del hogar entre 12
135
base_enaho['ing_per2'] = base_enaho$inghog1d / base_enaho$ld
136
#ingreso bruto anual del hogar entre el deflactor espacial
137
base_enaho['ing_per3'] = base_enaho$inghog1d / 12
138
#ingreso bruto anual del hogar entre el deflactor temporal
139
base_enaho['ing_per4'] = base_enaho$inghog1d / base_enaho$i00
140
141
#Luego con el gasto
142
#gasto bruto anual del hogar entre miembros del hogar
143
base_enaho['gasto_per1'] = base_enaho$gashog2d / base_enaho$mieperho
144
#gasto bruto anual del hogar entre 12
145
base_enaho['gasto_per2'] = base_enaho$gashog2d / base_enaho$ld
146
#gasto bruto anual del hogar entre el deflactor espacial
147
base_enaho['gasto_per3'] = base_enaho$gashog2d / 12
148
#gasto bruto anual del hogar entre el delfactor temporal
149
base_enaho['gasto_per4'] = base_enaho$gashog2d / base_enaho$i00
150
151
152
#Extraer base de datos nueva
153
write_dta(base_enaho, "../data_extra/enaho/WG6_1_r.dta")
154
155
156
############################RESOLUCIÓN DEL EJERCICIO 2############################
157
#Importamos lo necesario para realizar el ejercicio
158
159
library(haven) # leer archivos spss, stata, dbf, etc
160
library(dplyr) # limpieza de datos
161
library(stringr) # grep for regular expression
162
library(fastDummies) # crear dummy
163
library(srvyr) # libreria para declarar el diseño muestral de una encuesta
164
library(survey)
165
166
167
#Realizamos los siguientes pasos para importar la data de ENAHO 2020, módulo 5 de empleo
168
169
"Set Directorio"
170
171
user <- Sys.getenv("USERNAME") # username
172
173
setwd( paste0("C:/Users/",user,"/Documents/GitHub/Quispe_Angie_Rep") ) # set directorio
174
175
176
"Creamos el dataset de ENAHO"
177
178
enaho01 <- read_dta("C:/Users/MSI/Documents/GitHub/Quispe_Angie_Rep/enaho01a-2020-500.dta")
179
180
181
# tibble dataset
182
183
enaho01$dominio
184
185
enaho01 <- data.frame(
186
187
read_dta("../../../enaho/2020/737-Modulo01/737-Modulo01/enaho01-2020-500.dta")
188
189
)
190
191
#data.frame dataset
192
193
enaho01
194
enaho01$dominio
195
196
#Reviso los nombres de mi data para asegurarme que se encuentran las variable
197
#que necesito
198
199
enaho01$estrato %>% attr('labels') # value labels
200
201
202
enaho01$factor07 %>% attr('label') # var label
203
204
names(enaho01)
205
206
207
# Selecciono las variables que utilizaré
208
209
enaho01 <- enaho01[ , c("conglome", "vivienda", "hogar" , "codperso",
210
"ubigeo", "dominio" ,"estrato" , "i524e1" ,
211
"i538e1") ]
212
213
names(enaho01)
214
215
#Ahora, pasamos a los cálculos para poder hallar los ingresos por horas
216
#Primero, el ingreso anual del principal y segundo empleo del trabajador dependiente son
217
#i524e1 i538e1 respectivamente
218
219
enaho01 <- enaho01 %>%
220
mutate(ingreso_pc = enaho01$i524e1 + enaho01$i538e1) %>%
221
222
#Para los ingresos por hora, el dato anterior hallado "ingresos_ suma" lo dividimos por
223
#la cantidad de horas trabajados en el principal y segundo empleo en la semana, i513t+ i518
224
#respectivamente
225
#Finalmente, se divide por 52, pues el año tiene 52 semanas.
226
227
enaho01 <- enaho01 %>%
228
mutate(ingreso_hora=sum(i524e1+i538e1, na.rm = T)/sum((i513t+i518)/52, na.rm = T) %>%
229
230
231
############# EJERCICIO 4 ########################
232
233
########################### Problema Indicadores (Solo en R) ###########################
234
235
# Primero, especifique el diseño muestral de su encuesta.
236
237
# 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.
238
239
# Se procede a instalar los packages
240
install.packages("srvyr")
241
install.packages("dplyr")
242
install.packages("grid")
243
install.packages("read_dta")
244
245
#Librerias de limpieza de datos
246
install.packages("pacman")
247
pacman::p_load(haven,dplyr, stringr, fastDummies)
248
249
library(haven) # leer archivos spss, stata, dbf, etc
250
library(dplyr) # limpieza de datos
251
library(stringr) # grep for regular expression
252
library(fastDummies) # crear dummy
253
library(srvyr) # libreria para declarar el diseño muestral de una encuesta
254
library(survey)
255
256
257
# Setear directorio
258
"1.0 Set Directorio"
259
260
user <- Sys.getenv("USERNAME") # username
261
262
setwd( paste0("/Users/enriquerios/Desktop/PUCP 2022.2/R y Python/1ECO35_2022_2/data/") ) # set directorio
263
264
# Se procede a usar el modulo 37 (enaho01-2020-700)
265
enaho37 <- 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")
266
print(enaho37)
267
268
269
### Ubigeo de departamento
270
271
# sibstr permite sustraer digitos de un string, texto, caracter
272
273
enaho37['ubigeo_dep'] = substr(enaho37$ubigeo, 1, 2)
274
275
# a aprtir de la posición inicial, extraer los dos primeros digitos
276
277
enaho37['ubigeo_dep_2'] = paste(substr(enaho37$ubigeo,1,2),
278
"0000", sep = "")
279
print(enaho37['ubigeo_dep_2'])
280
281
### filtrado para algunos departamentos
282
283
enaho37 <- enaho37 %>% filter(
284
enaho37$ubigeo_dep %in% c("01","02","03","04","05","06","07","08","09","10","11","12",
285
"13","14","15","16","17","18","19","20","21","22","23","24","25","26") )
286
287
#library(dplyr)
288
289
enaho37 <- enaho37 %>%
290
mutate(region = case_when(ubigeo_dep == "01" ~ "Amazonas",
291
ubigeo_dep == "02" ~ "Ancash",
292
ubigeo_dep == "03" ~ "Apurimac",
293
ubigeo_dep == "04" ~ "Arequipa",
294
ubigeo_dep == "05" ~ "Ayacucho",
295
ubigeo_dep == "06" ~ "Cajamarca",
296
ubigeo_dep == "07" ~ "Callao",
297
ubigeo_dep == "08" ~ "Cusco",
298
ubigeo_dep == "09" ~ "Huancavelica",
299
ubigeo_dep == "10" ~ "Huanuco",
300
ubigeo_dep == "11" ~ "Ica",
301
ubigeo_dep == "12" ~ "Junin",
302
ubigeo_dep == "13" ~ "La Libertad",
303
ubigeo_dep == "14" ~ "Lambayeque",
304
ubigeo_dep == "15" ~ "Lima",
305
ubigeo_dep == "16" ~ "Loreto",
306
ubigeo_dep == "17" ~ "Madre de Dios",
307
ubigeo_dep == "18" ~ "Moquegua",
308
ubigeo_dep == "19" ~ "Pasco",
309
ubigeo_dep == "20" ~ "Piura",
310
ubigeo_dep == "21" ~ "Puno",
311
ubigeo_dep == "22" ~ "San Martín",
312
ubigeo_dep == "23" ~ "Tacna",
313
ubigeo_dep == "24" ~ "Tumbes",
314
ubigeo_dep == "25" ~ "Ucayali") )
315
316
317
# Filtrar variable p710_04
318
# (Algún miembro del hogar es beneficiario del programa juntos en los últimos 3 años), // Solo al jefe del hogar a nivel hogar
319
# Halle el porcentaje que hogares a nivel departamental (o región) que se beneficia del programa.
320
# Extraer primeros dígitos ()
321
enaho37 <- enaho37[enaho37$p710_04] #Considerar a beneficiarios y no beneficiarios
322
323
colnames(enaho37)
324
325
index = grep("(p710_04)|(aÑo)|(ubigeo_dep)",
326
colnames(enaho37))
327
328
# group by a nivel departamental (con el nuevo código)/ la media a esaa variable.
329
330
print(colnames(enaho37)[index])
331
332
table(enaho37$p710_04)
333
334
enaho37 %>% dplyr::filter(!is.na(p710_04)) %>% group_by(p710_04) %>% summarise(Freq.abs = n()) %>%
335
mutate(Freq.relative = (Freq.abs/sum(Freq.abs))*100) %>% arrange(desc(Freq.relative))
336
# Esto nos arroja una tabla de frecuencias absolutas y relativas con los siguientes valores para los
337
# Beneficiarios del programa Juntos son cerca de 4946 beneficiarios.
338
339
# pj1 significa programa juntos
340
pj1 <- enaho37 %>% group_by(ubigeo_dep, aÑo) %>%
341
summarise(
342
pj1_min = min(p710_04),
343
pj1_sum = sum(p710_04), total_miembros = n(),
344
pj1_max = max(p710_04), .groups = "keep"
345
)
346
347
# sin considerar los missing
348
349
pj1_no_missing <- enaho37 %>% group_by(ubigeo_dep, aÑo ) %>%
350
summarise(
351
pj1_min = min(p710_04, na.rm = TRUE),
352
pj1_sum = sum(p710_04, na.rm = T), total_miembros = n(),
353
pj1_max = max(p710_04, na.rm = T),
354
)
355
356
357
# Explícitamente, la advertencia surge por que se están agrupando por varias variables.
358
# Para evitar el mensaje, debemos incluir el argumento .groups = "keep"
359
360
pj2 <- enaho37 %>% group_by(ubigeo_dep, aÑo ) %>%
361
summarise(
362
pj2_min = min(p710_04, na.rm = TRUE),
363
pj2_sum = sum(p710_04, na.rm = T), total_miembros = n(),
364
pj2_max = max(p710_04, na.rm = T), .groups = "keep"
365
)
366
367
368
pj3 <- enaho37 %>% group_by(ubigeo_dep) %>%
369
summarise(index_projuntos = mean(pj2 , na.rm = T), .groups = "keep" )
370
371
class(enaho37$p710_04)
372
373
# Para el 2020 según las tablas de la parte superior para la Región de
374
#Para la región de "01" ~ "Amazonas", el porcentaje es de 33% de beneficiarios
375
#Para la región de "02" ~ "Ancash",el porcentaje es de 18% de beneficiarios
376
#Para la región de "03" ~ "Apurimac",el porcentaje es de 34% de beneficiarios
377
#Para la región de "04" ~ "Arequipa",el porcentaje es de 2% de beneficiarios
378
#Para la región de "05" ~ "Ayacucho",el porcentaje es de 26% de beneficiarios
379
#Para la región de "06" ~ "Cajamarca",el porcentaje es de 31% de beneficiarios
380
#Para la región de "07" ~ "Callao",el porcentaje es de 1% de beneficiarios
381
#Para la región de "08" ~ "Cusco",el porcentaje es de 21% de beneficiarios
382
#Para la región de "09" ~ "Huancavelica",el porcentaje es de 39% de beneficiarios
383
#Para la región de "10" ~ "Huanuco",el porcentaje es de 31% de beneficiarios
384
#Para la región de "11" ~ "Ica",el porcentaje es de 1% de beneficiarios
385
#Para la región de "12" ~ "Junin",el porcentaje es de 11% de beneficiarios
386
#Para la región de "13" ~ "La Libertad",el porcentaje es de 15% de beneficiarios
387
#Para la región de "14" ~ "Lambayeque",el porcentaje es de 2% de beneficiarios
388
#Para la región de "15" ~ "Lima",el porcentaje es de 1% de beneficiarios
389
#Para la región de "16" ~ "Loreto",el porcentaje es de 30% de beneficiarios
390
#Para la región de "17" ~ "Madre de Dios",el porcentaje es de 3% de beneficiarios
391
#Para la región de "18" ~ "Moquegua",el porcentaje es de 1% de beneficiarios
392
#Para la región de "19" ~ "Pasco",el porcentaje es de 37% de beneficiarios
393
#Para la región de "20" ~ "Piura",el porcentaje es de 20% de beneficiarios
394
#Para la región de "21" ~ "Puno",el porcentaje es de 19% de beneficiarios
395
#Para la región de "22" ~ "San Martín",el porcentaje es de 16% de beneficiarios
396
#Para la región de "23" ~ "Tacna",el porcentaje es de 3% de beneficiarios
397
#Para la región de "24" ~ "Tumbes",el porcentaje es de 1% de beneficiarios
398
#Para la región de "25" ~ "Ucayali" , el porcentaje es de 5% de beneficiarios
399
400
enaho37 %>% dplyr::filter(!is.na(p710_04)) %>% group_by(p710_04) %>% summarise(total_miembros = n()) %>%
401
mutate(Porcentaje.projun = (total_miembros/sum(pj2))*100) %>% arrange(desc(Porcentaje.projun))
402
403
survey_enaho37 <- svydesign(id=~ubigeo_dep, weights=~p710_04,strata=~estrato, data=enaho34)
404
405
# Ahora la segunda parte
406
# 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).
407
enaho34 <- read_dta("/Users/enriquerios/Desktop/PUCP 2022.2/R y Python/1ECO35_2022_2/data/enaho/2020/737-Modulo34/737-Modulo34/sumaria-2020.dta")
408
print(enaho34)
409
410
411
### Luego, se procede a plantear la variable Ubigeo de departamento
412
413
# sibstr permite sustraer digitos de un string, texto, caracter
414
415
enaho34['ubigeo_dep'] = substr(enaho34$ubigeo, 1, 2)
416
417
# a aprtir de la posición inicial, extraer los dos primeros digitos
418
419
enaho34['ubigeo_dep_2'] = paste(substr(enaho37$ubigeo,1,2),
420
"0000", sep = "")
421
print(enaho34['ubigeo_dep_2'])
422
423
### filtrado para algunos departamentos
424
425
enaho34 <- enaho34 %>% filter(
426
enaho34$ubigeo_dep %in% c("01","02","03","04","05","06","07","08","09","10","11","12",
427
"13","14","15","16","17","18","19","20","21","22","23","24","25","26") )
428
429
#library(dplyr)
430
431
enaho34 <- enaho34 %>%
432
mutate(region = case_when(ubigeo_dep == "01" ~ "Amazonas",
433
ubigeo_dep == "02" ~ "Ancash",
434
ubigeo_dep == "03" ~ "Apurimac",
435
ubigeo_dep == "04" ~ "Arequipa",
436
ubigeo_dep == "05" ~ "Ayacucho",
437
ubigeo_dep == "06" ~ "Cajamarca",
438
ubigeo_dep == "07" ~ "Callao",
439
ubigeo_dep == "08" ~ "Cusco",
440
ubigeo_dep == "09" ~ "Huancavelica",
441
ubigeo_dep == "10" ~ "Huanuco",
442
ubigeo_dep == "11" ~ "Ica",
443
ubigeo_dep == "12" ~ "Junin",
444
ubigeo_dep == "13" ~ "La Libertad",
445
ubigeo_dep == "14" ~ "Lambayeque",
446
ubigeo_dep == "15" ~ "Lima",
447
ubigeo_dep == "16" ~ "Loreto",
448
ubigeo_dep == "17" ~ "Madre de Dios",
449
ubigeo_dep == "18" ~ "Moquegua",
450
ubigeo_dep == "19" ~ "Pasco",
451
ubigeo_dep == "20" ~ "Piura",
452
ubigeo_dep == "21" ~ "Puno",
453
ubigeo_dep == "22" ~ "San Martín",
454
ubigeo_dep == "23" ~ "Tacna",
455
ubigeo_dep == "24" ~ "Tumbes",
456
ubigeo_dep == "25" ~ "Ucayali") )
457
458
459
# Para hallar el porcentaje del gasto anual del hogar destinado a la salud divida gru51hd por gashog2d.
460
461
462
# Se propone esta referenciaa gru51hd/gashoh2d
463
464
enaho34 <- enaho34 %>%
465
dplyr::mutate(gasto_annual_salud = gru51hd/(100*gashoh2d)
466
467
print(enaho34['gasto_annual_salud'])
468
469
#creando dummies usando la variabe de nivel educativo alcanzado p301a
470
471
enaho34 <- dummy_cols(enaho34, select_columns = 'gru51hd')
472
473
474
View(enaho34[, c("gru51hd","gashoh2d")])
475
476
477
# Nota: debe aplicar las librerias dplyr y srvyr
478
479
# 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.
480
481
# gru11hd: gasto anual en alimentos
482
# gru21hd: gasto anual en vestido y calzado
483
# gru31hd: gasto anual en Alquiler de vivienda, Combustible, Electricidad y Conservación de la Vivienda
484
# gru41hd: gasto anual en Muebles, Enseres y Mantenimiento de la vivienda
485
# gru51hd: gasto anual en Cuidado, Conservación de la Salud y Servicios Médicos
486
# gru61hd: gasto anual en Transporte
487
# gru71hd: gasto anual en Esparcimiento
488
# gru81hd: gasto anual en Otros bienes y servicios
489
490
491
492
493
494
495