Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
robertopucp
GitHub Repository: robertopucp/1eco35_2022_2
Path: blob/main/Trabajo_grupal/WG6/Grupo7_r.R
2714 views
1
##########################################
2
#------------- Workgroup 6 ---------------
3
##########################################
4
5
6
#---------------- 1. Merge Dataset (Python y R) --------------------
7
8
# 1. Ingreso y gasto real per c�pita mensual del hogar para los a�os 2019 y 2020.
9
10
library(haven) # read datasets
11
library(tidyverse)
12
library(srvyr) # para declarar bases de datos como encuestas
13
14
15
16
#---- 2019 ----
17
18
# Cargando bases de datos
19
enaho01 = data.frame( read_dta("C:/Users/Jose Pastor/Documents/datos_documents/enaho/2019/687-Modulo01/687-Modulo01/enaho01-2019-100.dta"))
20
enaho34 = data.frame( read_dta("C:/Users/Jose Pastor/Documents/datos_documents/enaho/2019/687-Modulo34/687-Modulo34/sumaria-2019.dta"))
21
22
# Merge
23
merge_base_2019 <- merge(enaho01, enaho34,
24
by = c("conglome", "vivienda", "hogar"),
25
all.x = T, suffixes = c("",".y"))
26
27
# eliminando columnas con terminacion .y
28
index <- grep(".y$", colnames(merge_base_2019))
29
merge_base_2019 <- merge_base_2019[, - index]
30
31
32
33
#---- 2020 ----
34
35
# Cargando bases de datos
36
enaho01 = data.frame( read_dta("C:/Users/Jose Pastor/Documents/datos_documents/enaho/2020/737-Modulo01/737-Modulo01/enaho01-2020-100.dta") )
37
enaho34 = data.frame( read_dta("C:/Users/Jose Pastor/Documents/datos_documents/enaho/2020/737-Modulo34/737-Modulo34/sumaria-2020.dta") )
38
39
# Merge
40
merge_base_2020 <- merge( enaho01, enaho34,
41
by = c("conglome", "vivienda", "hogar"),
42
all.x = T, suffixes = c("",".y"))
43
44
# eliminando columnas con terminacion .y
45
index <- grep(".y$", colnames(merge_base_2020))
46
merge_base_2020 <- merge_base_2020[, - index]
47
48
49
50
#------- Juntando bases del 2019 y 2020 --------
51
52
base_2019_2020 <- bind_rows(merge_base_2019, merge_base_2020) # une correctamente bases con columnas diferentes
53
54
base_2019_2020$ubigeo_dep <- substr(base_2019_2020$ubigeo, 1, 2) # 1 : a partir del la posicion 1
55
# 2 : substraer 2 digitos
56
base_2019_2020$ubigeo_dep <- strtoi(base_2019_2020$ubigeo_dep) # convirtiendo a int para futuro merge
57
58
### Deflactor espacial
59
#despacial_ldnew <- data.frame( read_dta("C:/Users/Jose Pastor/Documents/datos_documents/enaho/2020/737-Modulo34/737-Modulo34/ConstVarGasto-Metodologia actualizada/Gasto2020/Bases/despacial_ldnew.dta") )
60
61
#base_final <- merge( base_final, despacial_ldnew,
62
# by.x = c("dominio"),
63
# by.y = c("dominioA"),
64
# all = TRUE
65
# )
66
67
68
### Deflactor temporal
69
deflactores_base2020_new <- data.frame( read_dta("C:/Users/Jose Pastor/Documents/datos_documents/enaho/2020/737-Modulo34/737-Modulo34/ConstVarGasto-Metodologia actualizada/Gasto2020/Bases/deflactores_base2020_new.dta") )
70
deflactores_base2020_new <- deflactores_base2020_new[ , c("dpto", "aniorec", "i00") ]
71
72
# inner merge con base deflactores
73
base_2019_2020 <- merge( base_2019_2020, deflactores_base2020_new,
74
by.x = c("ubigeo_dep", "a�o"),
75
by.y = c("dpto", "aniorec"),
76
all.x = T
77
)
78
79
# dividiento variables de ingreso y gasto por mieperho, 12, ld e i00
80
base_2019_2020$ingreso_deflact <- base_2019_2020$inghog1d / (12 * base_2019_2020$mieperho * base_2019_2020$ld * base_2019_2020$i00)
81
base_2019_2020$gasto_deflact <- base_2019_2020$gashog2d / (12 * base_2019_2020$mieperho * base_2019_2020$ld * base_2019_2020$i00)
82
83
base_2019_2020 <- base_2019_2020[order (base_2019_2020$conglome, base_2019_2020$vivienda, base_2019_2020$hogar), ]
84
85
86
87
88
89
90
#---------------- 2. Salario por hora del trabajador dependiente (Python y R) --------------------------------
91
92
# Cargando modulo 05
93
enaho05 = data.frame( read_dta("C:/Users/Jose Pastor/Documents/datos_documents/enaho/2020/737-Modulo05/737-Modulo05/enaho01a-2020-500.dta") )
94
enaho05 <- enaho05[ , c("i524e1", "i538e1", "i513t", "i518") ]
95
96
# reemplazando NA por ceros
97
enaho05[is.na(enaho05)] <- 0
98
99
# generando variables necesarias
100
enaho05$ingreso <- enaho05$i524e1 + enaho05$i538e1
101
enaho05$horas <- enaho05$i513t + enaho05$i518
102
103
# reemplazando NA por 0
104
enaho05$ingreso <- replace_na(enaho05$ingreso, 0)
105
enaho05$horas <- replace_na(enaho05$horas, 0)
106
107
# salario por hora
108
enaho05$sal_hora_depend <- enaho05$ingreso / (enaho05$horas * 52)
109
110
# Si un salario por hora resulta 0, convertir a missing.
111
enaho05$sal_hora_depend <- replace(enaho05$sal_hora_depend, enaho05$sal_hora_depend == 0, NaN)
112
113
114
115
116
117
118
#------------------ 3. Groupby (Python y R) --------------------------------
119
120
enaho02 = data.frame( read_dta("C:/Users/Jose Pastor/Documents/datos_documents/enaho/2020/737-Modulo02/737-Modulo02/enaho01-2020-200.dta") )
121
enaho34 = data.frame( read_dta("C:/Users/Jose Pastor/Documents/datos_documents/enaho/2020/737-Modulo34/737-Modulo34/sumaria-2020.dta") )
122
123
# identificando hogares con algun miembro mayor a 65 a�os
124
enaho02_1 <- enaho02 %>% group_by(conglome, vivienda, hogar ) %>%
125
summarise( edad_max = max(p208a), .groups = "keep" )
126
127
# inner merge
128
base_final_2 <- merge( enaho02_1, enaho34,
129
by = c("conglome", "vivienda", "hogar"),
130
all = FALSE
131
)
132
133
## Creando dummy pobreza y mayor a 65 a�os
134
# La estrategia es generara dummies tanto para pobreza y mayor a 65 a�os
135
# Luego se sumaran las dummies y aquellas que resulten 2 es porque cumple la condicion.
136
# Finalmente, se convertira el 2 en 1 para tener una dummy que cumpla con las condiciones.
137
138
base_final_2 <- base_final_2 %>%
139
mutate(gasto_month_pc = base_final_2$gashog2d / (12*base_final_2$mieperho)) %>%
140
mutate(dummy_pobre = ifelse( gasto_month_pc < base_final_2$linea ,
141
1,
142
ifelse(!is.na(base_final_2$gashog2d), 0, NA) ) )
143
144
base_final_2 <- base_final_2 %>%
145
mutate(dummy_mayor65 = ifelse( edad_max > 65,
146
1,
147
0))
148
# sumando dummies
149
base_final_2$dummy_suma = base_final_2$dummy_pobre + base_final_2$dummy_mayor65
150
151
# reemplazando 2 por 1
152
base_final_2 <- base_final_2 %>%
153
mutate(dummy_pobre_mayor65 = ifelse( dummy_suma == 2,
154
1,
155
0 ))
156
157
158
159
160
161
#------------------ 4. Indicadores (Solo en R) --------------------------------
162
163
# 1.
164
# porcentaje que hogares a nivel departamental (o regi�n) que se beneficia del programa Juntos
165
166
# cargando modulo 37
167
enaho37 = data.frame( read_dta("C:/Users/Jose Pastor/Documents/datos_documents/enaho/2020/737-Modulo37/737-Modulo37/enaho01-2020-700.dta") )
168
169
# generando ubigeo_dep
170
enaho37['ubigeo_dep'] <- substr(enaho37$ubigeo, 1, 2)
171
172
173
# modulo37 y module02
174
mod_37_02 <- merge( enaho02, enaho37,
175
by = c("conglome", "vivienda", "hogar"),
176
all = FALSE, suffixes = c("",".y"))
177
178
# eliminando columnas con terminacion .y
179
index <- grep(".y$", colnames(sumaria_mod02))
180
sumaria_mod02 <- sumaria_mod02[, - index]
181
182
# indicando el dise�o muestral de la encuesta
183
mod_37_02 <- mod_37_02 %>% as_survey_design(ids = conglome,
184
strata = estrato,
185
weight = facpob07
186
)
187
188
# porcentaje de hogares a nivel departamental (o regi�n) que se beneficia del programa
189
df_hogares_juntos <- mod_37_02 %>% group_by(ubigeo_dep) %>%
190
summarise( prom_horaes_juntos = survey_mean(p710_04 , na.rm = T), .groups = "keep" )
191
192
193
194
# 2.
195
196
# De Sumaria (modulo 34) y module02
197
sumaria_mod02 <- merge( enaho02, enaho34,
198
by = c("conglome", "vivienda", "hogar"),
199
all = FALSE, suffixes = c("",".y"))
200
201
# eliminando columnas con terminacion .y
202
index <- grep(".y$", colnames(sumaria_mod02))
203
sumaria_mod02 <- sumaria_mod02[, - index]
204
205
# generando varialbe departamento y porcentaje de gasto en salud anual
206
sumaria_mod02['ubigeo_dep'] <- substr(sumaria_mod02$ubigeo, 1, 2)
207
sumaria_mod02['gasto_salud_anual_porcentaje'] <- sumaria_mod02$gru51hd / sumaria_mod02$gashog2d
208
209
# indicando el dise�o muestral de la encuesta
210
sumaria_mod02_srvy <- sumaria_mod02 %>% as_survey_design(ids = conglome,
211
strata = estrato,
212
weight = facpob07
213
)
214
215
# promedio del gasto anual en salud
216
prom_gast_anual_salud <- sumaria_mod02_srvy %>% group_by(ubigeo_dep) %>%
217
summarise( prom_gast_anual_salud = survey_mean(gasto_salud_anual_porcentaje, na.rm = T), .groups = "keep" )
218
219
220
221
222
223
224
225