Los ingresos totales de los chilenos desde el 2006 al 2017
Ingresos totales de las personas 2006-2017
Abstract
En nuestro artículo https://rpubs.com/dataintelligence/la_construccion_de_los_ingresos_2, defendimos el análisis de 4 ingresos. En éste trabajo generamos una tabla consolidada cuya variable de estudio es el ingreso total de las personas. Se corrige un error producto de una mala categorización y se revisamos el acto de calcular promedios de promedios.
Éste programa corre con la version R-3.6.3
1 Leemos nuestra base de datos original
dataset_2006 <- readRDS(file = "casen_2006_c.rds")
2 Asignamos el nombre de nuestra variable a ab
ab <- dataset_2006
3 Llamamos a nuestros diccionarios
Los diccionarios contienen dos columnas. Una recoge todas las alternativas posible de respuesta que pueden aparecer en un campo de un dataframe para con un posterior merge reemplazarlas con las correspondencias en la columna de la derecha y así poder homologar para todos los años.
alfabetismo <- read_xlsx("alfabetismo_unicos.xlsx")
categorias <- read_xlsx("categorias_etnia.xlsx")
kbl(alfabetismo) %>%
kable_styling(bootstrap_options = c("striped", "hover")) %>%
kable_paper() %>%
scroll_box(width = "80%", height = "500px")
e1 | cat_alfa |
---|---|
Sí | Sí |
No | No |
No sabe /Sin dato | NS/NR |
Sí, lee y escribe | Sí |
No, sólo lee | No |
No, ninguno | No |
No, sólo escribe | No |
NS/NR | NS/NR |
No sabe/responde | NS/NR |
kbl(categorias) %>%
kable_styling(bootstrap_options = c("striped", "hover")) %>%
kable_paper() %>%
scroll_box(width = "80%", height = "500px")
r3 | categorias_etnicas |
---|---|
Aimara | Aymara |
Atacameño | Atacameño |
Atacameño (Likán Antai) | Atacameño |
Atacameño (Likan-Antai) | Atacameño |
Atacameño (Likán-Antai) | Atacameño |
Aymara | Aymara |
Collas | Coya |
Coya | Coya |
Diaguita | Diaguita |
Kawashkar o Alacalufes | Alacalufes |
Kawaskar | Alacalufes |
Kawésqar | Alacalufes |
Kawésqar (Alacalufes) | Alacalufes |
Mapuche | Mapuche |
No pertenece a ningún pueblo indígena | No pertenece a ningún pueblo indígena |
No sabe/no responde | No pertenece a ningún pueblo indígena |
NS/NR | No pertenece a ningún pueblo indígena |
Quechua | Quechua |
Rapa Nui | Pascuense |
Rapa Nui (Pascuense) | Pascuense |
Rapa-Nui o Pascuenses | Pascuense |
Sin dato | No pertenece a ningún pueblo indígena |
Yagan | Yagán |
Yagán | Yagán |
Yagán (Yámana) | Yagán |
Yámana o Yagán | Yagán |
4 Leemos los nombres de sus cabeceras para verificar que coincidan para hacer el futuro merge:
names(alfabetismo)
## [1] "e1" "cat_alfa"
names(categorias)
## [1] "r3" "categorias_etnicas"
5 Renombramos si es el caso con los nombres adecuados:
names(alfabetismo)[1] <- "E1"
names(categorias)[1] <- "T4"
6 Hacemos el merge para corregir las categorias de alfabetismo:
dataset_2006_a = merge( x = ab, y = alfabetismo, by = "E1", all.x = TRUE)
7 Hacemos el merge para corregir las categorias de etnia:
dataset_2006_b = merge( x = dataset_2006_a, y = categorias, by = "T4", all.x = TRUE)
8 asignamos el valor de nuestro dataframe modificado a nuestra variable de trabajo ab
ab <- dataset_2006_b
9 Eliminamos los outliers:
# Eliminamos del dataframe los registros que no posean valores en la columna del ingreso total:
ab <- ab[!is.na(ab$YTOTAJ),]
# Excluimos los outliers
Q <- quantile(ab$YTOTAJ, probs=c(.25, .75), na.rm = FALSE)
iqr <- IQR(ab$YTOTAJ)
eliminated <- subset(ab, ab$YTOTAJ > (Q[1] - 1.5*iqr) & ab$YTOTAJ < (Q[2]+1.5*iqr))
eliminated <- data.frame(lapply(eliminated, as.character), stringsAsFactors=FALSE)
# despleguemos los primeros 100 registros en pantalla del subset creado:
# eliminated_100 <- eliminated[c(1:100),]
# eliminated_100 %>% kbl() %>%
# kable_material(c("striped", "hover"), font_size = 12)%>%
# scroll_box(width = "100%", height = "500px")
# eliminated_100
10 Calculamos promedios, ds y gini para el dataframe eliminated asegurandonos de tener correctamente asignados los nombres de las nuevas columnas corregidas de etnia y alfabetismo:
b <- as.numeric(eliminated$YTOTAJ)
a <- eliminated$COMUNA
c <- eliminated$categorias_etnicas
d <- eliminated$cat_alfa
e <- eliminated$SEXO
# Calculamos los promedios de ingreso grupales, la desviación estandar del rango y el coeficiente de Gini:
promedios_grupales <-aggregate(b, by=list(a,c,d,e), FUN = mean , na.rm=TRUE )
promedios_grupales_sd <-aggregate(b, by=list(a,c,d,e), FUN = sd , na.rm=TRUE )
promedios_grupales_gini <-aggregate(b, by=list(a,c,d,e), FUN = gini )
# Asignamos nuevas columnas a la tabla base con medias y sd:
promedios_grupales$sd <- promedios_grupales_sd$x
promedios_grupales$gini <- promedios_grupales_gini$x
# Eliminamos los valores que no tengan desviacion standard, pues implican registros unicos.
promedios_grupales <-promedios_grupales[!(is.na(promedios_grupales$sd)),]
# promedios_grupales_100 <- promedios_grupales[c(1:100),]
# promedios_grupales_100 %>% kbl() %>% kable_material(c("striped", "hover"), font_size = 12)%>%
# scroll_box(width = "100%", height = "500px")
# promedios_grupales_100
#Asignamos nombres con sentido a las cabeceras:
names(promedios_grupales)[1] <- "comuna"
names(promedios_grupales)[2] <- "Etnia"
names(promedios_grupales)[3] <- "Alfabetismo"
names(promedios_grupales)[4] <- "sexo"
names(promedios_grupales)[5] <- "promedio"
names(promedios_grupales)[6] <- "sd"
names(promedios_grupales)[7] <- "gini"
promedios_grupales$año <- "2006"
codigos_comunales <- readRDS(file = "codigos_comunales_2006.rds")
names(codigos_comunales)[1] <- "código"
names(codigos_comunales)[2] <- "comuna"
df_2006 = merge( x = promedios_grupales, y = codigos_comunales, by = "comuna", all.x = TRUE)
# head(df_2006,50) %>% kbl() %>% kable_material(c("striped", "hover"), font_size = 12)%>%
# scroll_box(width = "100%", height = "500px")
#head(df_2006,10)
# df_2006
# write_xlsx(df_2006,"df_2006.xlsx")
Verificacion de que no existan categorizaciones repetidas
unicos <- df_2006[,c(1,2,3,4)]
# unicos
dataset_2009 <- readRDS(file = "casen_2009_c.rds")
ab <- dataset_2009
names(alfabetismo)
## [1] "E1" "cat_alfa"
names(categorias)
## [1] "T4" "categorias_etnicas"
names(alfabetismo)[1] <- "E1"
names(categorias)[1] <- "T5"
dataset_2009_a = merge( x = ab, y = alfabetismo, by = "E1", all.x = TRUE)
dataset_2009_b = merge( x = dataset_2009_a, y = categorias, by = "T5", all.x = TRUE)
ab <- dataset_2009_b
# Eliminamos del dataframe los registros que no posean valores en la columna del ingreso total:
ab <- ab[!is.na(ab$YTOTAJ),]
# Excluimos los outliers
Q <- quantile(ab$YTOTAJ, probs=c(.25, .75), na.rm = FALSE)
iqr <- IQR(ab$YTOTAJ)
eliminated <- subset(ab, ab$YTOTAJ > (Q[1] - 1.5*iqr) & ab$YTOTAJ < (Q[2]+1.5*iqr))
eliminated <- data.frame(lapply(eliminated, as.character), stringsAsFactors=FALSE)
# despleguemos los primeros 100 registros en pantalla del subset creado:
eliminated_100 <- eliminated[c(1:100),]
# eliminated_100 %>% kbl() %>%
# kable_material(c("striped", "hover"), font_size = 12)%>%
# scroll_box(width = "100%", height = "500px")
b <- as.numeric(eliminated$YTOTAJ)
a <- eliminated$COMUNA
c <- eliminated$categorias_etnicas
d <- eliminated$cat_alfa
e <- eliminated$SEXO
# Calculamos los promedios de ingreso grupales, la desviación estandar del rango y el coeficiente de Gini:
promedios_grupales <-aggregate(b, by=list(a,c,d,e), FUN = mean , na.rm=TRUE )
promedios_grupales_sd <-aggregate(b, by=list(a,c,d,e), FUN = sd , na.rm=TRUE )
promedios_grupales_gini <-aggregate(b, by=list(a,c,d,e), FUN = gini )
# Asignamos nuevas columnas a la tabla base con medias y sd:
promedios_grupales$sd <- promedios_grupales_sd$x
promedios_grupales$gini <- promedios_grupales_gini$x
# Eliminamos los valores que no tengan desviacion standard, pues implican registros unicos.
promedios_grupales <-promedios_grupales[!(is.na(promedios_grupales$sd)),]
promedios_grupales_100 <- promedios_grupales[c(1:100),]
#
#
# promedios_grupales_100 %>% kbl() %>% kable_material(c("striped", "hover"), font_size = 12)%>%
# scroll_box(width = "100%", height = "500px")
#Asignamos nombres con sentido a las cabeceras:
names(promedios_grupales)[1] <- "comuna"
names(promedios_grupales)[2] <- "Etnia"
names(promedios_grupales)[3] <- "Alfabetismo"
names(promedios_grupales)[4] <- "sexo"
names(promedios_grupales)[5] <- "promedio"
names(promedios_grupales)[6] <- "sd"
names(promedios_grupales)[7] <- "gini"
promedios_grupales$año <- "2009"
codigos_comunales <- readRDS(file = "codigos_comunales_2009.rds")
names(codigos_comunales)[1] <- "código"
names(codigos_comunales)[2] <- "comuna"
df_2009 = merge( x = promedios_grupales, y = codigos_comunales, by = "comuna", all.x = TRUE)
# df_2009
Verificacion de que no existan categorizaciones repetidas
unicos <- df_2009[,c(1,2,3,4)]
# unicos
dataset_2011 <- readRDS(file = "casen_2011_c.rds")
ab <- dataset_2011
names(alfabetismo)
## [1] "E1" "cat_alfa"
names(categorias)
## [1] "T5" "categorias_etnicas"
names(alfabetismo)[1] <- "e1"
names(categorias)[1] <- "r6"
dataset_2011_a = merge( x = ab, y = alfabetismo, by = "e1", all.x = TRUE)
dataset_2011_b = merge( x = dataset_2011_a, y = categorias, by = "r6", all.x = TRUE)
ab <- dataset_2011_b
# Eliminamos del dataframe los registros que no posean valores en la columna del ingreso total:
ab <- ab[!is.na(ab$ytotaj),]
# Excluimos los outliers
Q <- quantile(ab$ytotaj, probs=c(.25, .75), na.rm = FALSE)
iqr <- IQR(ab$ytotaj)
eliminated <- subset(ab, ab$ytotaj > (Q[1] - 1.5*iqr) & ab$ytotaj < (Q[2]+1.5*iqr))
eliminated <- data.frame(lapply(eliminated, as.character), stringsAsFactors=FALSE)
# despleguemos los primeros 100 registros en pantalla del subset creado:
eliminated_100 <- eliminated[c(1:100),]
# eliminated_100 %>% kbl() %>%
# kable_material(c("striped", "hover"), font_size = 12)%>%
# scroll_box(width = "100%", height = "500px")
b <- as.numeric(eliminated$ytotaj)
a <- eliminated$comuna
c <- eliminated$categorias_etnicas
d <- eliminated$cat_alfa
e <- eliminated$sexo
# Calculamos los promedios de ingreso grupales, la desviación estandar del rango y el coeficiente de Gini:
promedios_grupales <-aggregate(b, by=list(a,c,d,e), FUN = mean , na.rm=TRUE )
promedios_grupales_sd <-aggregate(b, by=list(a,c,d,e), FUN = sd , na.rm=TRUE )
promedios_grupales_gini <-aggregate(b, by=list(a,c,d,e), FUN = gini )
# Asignamos nuevas columnas a la tabla base con medias y sd:
promedios_grupales$sd <- promedios_grupales_sd$x
promedios_grupales$gini <- promedios_grupales_gini$x
# Eliminamos los valores que no tengan desviacion standard, pues implican registros unicos.
promedios_grupales <-promedios_grupales[!(is.na(promedios_grupales$sd)),]
promedios_grupales_100 <- promedios_grupales[c(1:100),]
# promedios_grupales_100 %>% kbl() %>% kable_material(c("striped", "hover"), font_size = 12)%>%
# scroll_box(width = "100%", height = "500px")
#Asignamos nombres con sentido a las cabeceras:
names(promedios_grupales)[1] <- "comuna"
names(promedios_grupales)[2] <- "Etnia"
names(promedios_grupales)[3] <- "Alfabetismo"
names(promedios_grupales)[4] <- "sexo"
names(promedios_grupales)[5] <- "promedio"
names(promedios_grupales)[6] <- "sd"
names(promedios_grupales)[7] <- "gini"
promedios_grupales$año <- "2011"
codigos_comunales <- readRDS(file = "codigos_comunales_2011-2017.rds")
names(codigos_comunales)[1] <- "código"
names(codigos_comunales)[2] <- "comuna"
df_2011 = merge( x = promedios_grupales, y = codigos_comunales, by = "comuna", all.x = TRUE)
# df_2011
Verificacion de que no existan categorizaciones repetidas
unicos <- df_2011[,c(1,2,3,4)]
# unicos
dataset_2013 <- readRDS(file = "casen_2013_c.rds")
ab <- dataset_2013
names(alfabetismo)
## [1] "e1" "cat_alfa"
names(categorias)
## [1] "r6" "categorias_etnicas"
names(alfabetismo)[1] <- "e1"
names(categorias)[1] <- "r6"
dataset_2013_a = merge( x = ab, y = alfabetismo, by = "e1", all.x = TRUE)
dataset_2013_b = merge( x = dataset_2013_a, y = categorias, by = "r6", all.x = TRUE)
ab <- dataset_2013_b
# Eliminamos del dataframe los registros que no posean valores en la columna del ingreso total:
ab <- ab[!is.na(ab$ytotcor),]
# Excluimos los outliers
Q <- quantile(ab$ytotcor, probs=c(.25, .75), na.rm = FALSE)
iqr <- IQR(ab$ytotcor)
eliminated <- subset(ab, ab$ytotcor > (Q[1] - 1.5*iqr) & ab$ytotcor < (Q[2]+1.5*iqr))
eliminated <- data.frame(lapply(eliminated, as.character), stringsAsFactors=FALSE)
# despleguemos los primeros 100 registros en pantalla del subset creado:
eliminated_100 <- eliminated[c(1:100),]
# eliminated_100 %>% kbl() %>%
# kable_material(c("striped", "hover"), font_size = 12)%>%
# scroll_box(width = "100%", height = "500px")
b <- as.numeric(eliminated$ytotcor)
a <- eliminated$comuna
c <- eliminated$categorias_etnicas
d <- eliminated$cat_alfa
e <- eliminated$sexo
# Calculamos los promedios de ingreso grupales, la desviación estandar del rango y el coeficiente de Gini:
promedios_grupales <-aggregate(b, by=list(a,c,d,e), FUN = mean , na.rm=TRUE )
promedios_grupales_sd <-aggregate(b, by=list(a,c,d,e), FUN = sd , na.rm=TRUE )
promedios_grupales_gini <-aggregate(b, by=list(a,c,d,e), FUN = gini )
# Asignamos nuevas columnas a la tabla base con medias y sd:
promedios_grupales$sd <- promedios_grupales_sd$x
promedios_grupales$gini <- promedios_grupales_gini$x
# Eliminamos los valores que no tengan desviacion standard, pues implican registros unicos.
promedios_grupales <-promedios_grupales[!(is.na(promedios_grupales$sd)),]
promedios_grupales_100 <- promedios_grupales[c(1:100),]
# promedios_grupales_100 %>% kbl() %>% kable_material(c("striped", "hover"), font_size = 12)%>%
# scroll_box(width = "100%", height = "500px")
#Asignamos nombres con sentido a las cabeceras:
names(promedios_grupales)[1] <- "comuna"
names(promedios_grupales)[2] <- "Etnia"
names(promedios_grupales)[3] <- "Alfabetismo"
names(promedios_grupales)[4] <- "sexo"
names(promedios_grupales)[5] <- "promedio"
names(promedios_grupales)[6] <- "sd"
names(promedios_grupales)[7] <- "gini"
promedios_grupales$año <- "2013"
codigos_comunales <- readRDS(file = "codigos_comunales_2011-2017.rds")
names(codigos_comunales)[1] <- "código"
names(codigos_comunales)[2] <- "comuna"
df_2013 = merge( x = promedios_grupales, y = codigos_comunales, by = "comuna", all.x = TRUE)
# df_2013
Verificacion de que no existan categorizaciones repetidas
unicos <- df_2013[,c(1,2,3,4)]
# unicos
unidos_los_cuatro <- rbind(df_2006,df_2009,df_2011,df_2013)
saveRDS(unidos_los_cuatro,"unidos_los_cuatro.rds")
dataset_2015 <- readRDS(file = "casen_2015_c.rds")
ab <- dataset_2015
names(alfabetismo)
## [1] "e1" "cat_alfa"
names(categorias)
## [1] "r6" "categorias_etnicas"
# names(alfabetismo)[1] <- "e1"
names(categorias)[1] <- "r3"
dataset_2015_a = merge( x = ab, y = alfabetismo, by = "e1", all.x = TRUE)
dataset_2015_b = merge( x = dataset_2015_a, y = categorias, by = "r3", all.x = TRUE)
ab <- dataset_2015_b
# Eliminamos del dataframe los registros que no posean valores en la columna del ingreso total:
ab <- ab[!is.na(ab$ytotcor),]
# Excluimos los outliers
Q <- quantile(ab$ytotcor, probs=c(.25, .75), na.rm = FALSE)
iqr <- IQR(ab$ytotcor)
eliminated <- subset(ab, ab$ytotcor > (Q[1] - 1.5*iqr) & ab$ytotcor < (Q[2]+1.5*iqr))
eliminated <- data.frame(lapply(eliminated, as.character), stringsAsFactors=FALSE)
# despleguemos los primeros 100 registros en pantalla del subset creado:
eliminated_100 <- eliminated[c(1:100),]
# eliminated_100 %>% kbl() %>%
# kable_material(c("striped", "hover"), font_size = 12)%>%
# scroll_box(width = "100%", height = "500px")
b <- as.numeric(eliminated$ytotcor)
a <- eliminated$comuna
c <- eliminated$categorias_etnicas
d <- eliminated$cat_alfa
e <- eliminated$sexo
# Calculamos los promedios de ingreso grupales, la desviación estandar del rango y el coeficiente de Gini:
promedios_grupales <-aggregate(b, by=list(a,c,d,e), FUN = mean , na.rm=TRUE )
promedios_grupales_sd <-aggregate(b, by=list(a,c,d,e), FUN = sd , na.rm=TRUE )
promedios_grupales_gini <-aggregate(b, by=list(a,c,d,e), FUN = gini )
# Asignamos nuevas columnas a la tabla base con medias y sd:
promedios_grupales$sd <- promedios_grupales_sd$x
promedios_grupales$gini <- promedios_grupales_gini$x
# Eliminamos los valores que no tengan desviacion standard, pues implican registros unicos.
promedios_grupales <-promedios_grupales[!(is.na(promedios_grupales$sd)),]
promedios_grupales_100 <- promedios_grupales[c(1:100),]
# promedios_grupales_100 %>% kbl() %>% kable_material(c("striped", "hover"), font_size = 12)%>%
# scroll_box(width = "100%", height = "500px")
#Asignamos nombres con sentido a las cabeceras:
names(promedios_grupales)[1] <- "comuna"
names(promedios_grupales)[2] <- "Etnia"
names(promedios_grupales)[3] <- "Alfabetismo"
names(promedios_grupales)[4] <- "sexo"
names(promedios_grupales)[5] <- "promedio"
names(promedios_grupales)[6] <- "sd"
names(promedios_grupales)[7] <- "gini"
promedios_grupales$año <- "2015"
codigos_comunales <- readRDS(file = "codigos_comunales_2011-2017.rds")
names(codigos_comunales)[1] <- "código"
names(codigos_comunales)[2] <- "comuna"
df_2015 = merge( x = promedios_grupales, y = codigos_comunales, by = "comuna", all.x = TRUE)
# df_2015
Verificacion de que no existan categorizaciones repetidas
unicos <- df_2015[,c(1,2,3,4)]
# unicos
dataset_2017 <- readRDS(file = "casen_2017_c.rds")
ab <- dataset_2017
debemos nombrar correctamente las columnas del dataframe para el merge
names(alfabetismo)
## [1] "e1" "cat_alfa"
names(categorias)
## [1] "r3" "categorias_etnicas"
dataset_2017_a = merge( x = ab, y = alfabetismo, by = "e1", all.x = TRUE)
dataset_2017_b = merge( x = dataset_2017_a, y = categorias, by = "r3", all.x = TRUE)
ab <- dataset_2017_b
# Eliminamos del dataframe los registros que no posean valores en la columna del ingreso total:
ab <- ab[!is.na(ab$ytotcor),]
# Excluimos los outliers
Q <- quantile(ab$ytotcor, probs=c(.25, .75), na.rm = FALSE)
iqr <- IQR(ab$ytotcor)
eliminated <- subset(ab, ab$ytotcor > (Q[1] - 1.5*iqr) & ab$ytotcor < (Q[2]+1.5*iqr))
eliminated <- data.frame(lapply(eliminated, as.character), stringsAsFactors=FALSE)
# despleguemos los primeros 100 registros en pantalla del subset creado:
eliminated_100 <- eliminated[c(1:100),]
# eliminated_100 %>% kbl() %>%
# kable_material(c("striped", "hover"), font_size = 12)%>%
# scroll_box(width = "100%", height = "500px")
b <- as.numeric(eliminated$ytotcor)
a <- eliminated$comuna
c <- eliminated$categorias_etnicas
d <- eliminated$cat_alfa
e <- eliminated$sexo
# Calculamos los promedios de ingreso grupales, la desviación estandar del rango y el coeficiente de Gini:
promedios_grupales <-aggregate(b, by=list(a,c,d,e), FUN = mean , na.rm=TRUE )
promedios_grupales_sd <-aggregate(b, by=list(a,c,d,e), FUN = sd , na.rm=TRUE )
promedios_grupales_gini <-aggregate(b, by=list(a,c,d,e), FUN = gini )
# Asignamos nuevas columnas a la tabla base con medias y sd:
promedios_grupales$sd <- promedios_grupales_sd$x
promedios_grupales$gini <- promedios_grupales_gini$x
# Eliminamos los valores que no tengan desviacion standard, pues implican registros unicos.
promedios_grupales <-promedios_grupales[!(is.na(promedios_grupales$sd)),]
# promedios_grupales %>% kbl() %>% kable_material(c("striped", "hover"), font_size = 12)%>%
# scroll_box(width = "100%", height = "500px")
#Asignamos nombres con sentido a las cabeceras:
names(promedios_grupales)[1] <- "comuna"
names(promedios_grupales)[2] <- "Etnia"
names(promedios_grupales)[3] <- "Alfabetismo"
names(promedios_grupales)[4] <- "sexo"
names(promedios_grupales)[5] <- "promedio"
names(promedios_grupales)[6] <- "sd"
names(promedios_grupales)[7] <- "gini"
promedios_grupales$año <- "2017"
codigos_comunales <- readRDS(file = "codigos_comunales_2011-2017.rds")
names(codigos_comunales)[1] <- "código"
names(codigos_comunales)[2] <- "comuna"
df_2017 = merge( x = promedios_grupales, y = codigos_comunales, by = "comuna", all.x = TRUE)
# df_2017
Verificacion de que no existan categorizaciones repetidas
unicos <- df_2017[,c(1,2,3,4)]
# unicos
ufg <- unique(dataset_2017_b$cat_alfa)
# ufg
ytotcor_ytotaj <- rbind(df_2006,df_2009,df_2011,df_2013,df_2015,df_2017)
head(ytotcor_ytotaj,10)
## comuna Etnia Alfabetismo sexo promedio
## 1 Aisén Mapuche Sí Hombre 206218.88
## 2 Aisén No pertenece a ningún pueblo indígena No Mujer 64652.20
## 3 Aisén No pertenece a ningún pueblo indígena No Hombre 136714.33
## 4 Aisén Mapuche Sí Mujer 113768.46
## 5 Aisén No pertenece a ningún pueblo indígena Sí Mujer 141208.95
## 6 Aisén No pertenece a ningún pueblo indígena Sí Hombre 221528.47
## 7 Aisén Mapuche No Mujer 86106.50
## 8 Algarrobo No pertenece a ningún pueblo indígena No Mujer 77770.43
## 9 Algarrobo No pertenece a ningún pueblo indígena Sí Mujer 154820.61
## 10 Algarrobo No pertenece a ningún pueblo indígena Sí Hombre 203539.41
## sd gini año código
## 1 103383.51 0.2792730 2006 11201
## 2 41793.76 0.2441928 2006 11201
## 3 91484.01 0.3177949 2006 11201
## 4 86927.13 0.4266068 2006 11201
## 5 101011.54 0.4004693 2006 11201
## 6 120760.74 0.3104046 2006 11201
## 7 48936.74 0.2009343 2006 11201
## 8 43715.35 0.2937106 2006 05602
## 9 116538.60 0.4154520 2006 05602
## 10 100712.09 0.2759901 2006 05602
nrow(ytotcor_ytotaj)
## [1] 12488
write_xlsx(ytotcor_ytotaj, "ytotcor_ytotaj.xlsx")
Tenemos un problema. Al parecer hay que ponderar los promedios por categoría para obtener un promedio general digamos, por ejemplo para todos los hombres mapuches de Algarrobo.
data_filtrada <- filter(ytotcor_ytotaj, ytotcor_ytotaj$comuna == "Algarrobo" , ytotcor_ytotaj$sexo == "Hombre", ytotcor_ytotaj$Etnia == "Mapuche" )
data_filtrada
## comuna Etnia Alfabetismo sexo promedio sd gini año
## 1 Algarrobo Mapuche Sí Hombre 242086.3 78542.67 0.134195468 2009
## 2 Algarrobo Mapuche Sí Hombre 414415.0 11009.65 0.009392758 2011
## 3 Algarrobo Mapuche Sí Hombre 334313.8 64066.38 0.081744880 2013
## 4 Algarrobo Mapuche No Hombre 326955.5 307418.21 0.332426737 2017
## 5 Algarrobo Mapuche Sí Hombre 486795.5 672747.76 0.488608153 2017
## código
## 1 05602
## 2 05602
## 3 05602
## 4 05602
## 5 05602
mean(data_filtrada$promedio)
## [1] 360913.2
data001 <- data_filtrada$promedio
data001 <- as.data.frame(data001)
colSums(data001)/5
## data001
## 360913.2
No. Obtengamos las frecuencias de personas existentes por categoría:
funcion1 <- function(n){
comunales<-switch(n, "codigos_comunales_2006.rds","codigos_comunales_2009.rds","codigos_comunales_2011-2017.rds","codigos_comunales_2011-2017.rds","codigos_comunales_2011-2017.rds","codigos_comunales_2011-2017.rds")
xx<-switch(n,"2006","2009","2011","2013","2015","2017")
# dataset_06 <<- NA
if(xx==2006) {
eliminated <- dataset_2006_b
# a <- eliminated$ytotaj
b <- eliminated$COMUNA
d <- eliminated$cat_alfa
e <- eliminated$categorias_etnicas
f <- eliminated$SEXO
anio <- 2006
cross_tab = xtabs(eliminated$EXPC ~ + unlist(b) + unlist(d) + unlist(e)+ unlist(f) ,aggregate(eliminated$EXPC ~ + unlist(b) + unlist(d) + unlist(e)+ unlist(f),eliminated,mean))
}
if(xx==2009) {
eliminated <- dataset_2009_b
# a <- eliminated$ytotaj
b <- eliminated$COMUNA
d <- eliminated$cat_alfa
e <- eliminated$categorias_etnicas
f <- eliminated$SEXO
anio <- 2009
cross_tab = xtabs(eliminated$EXPC ~ + unlist(b) + unlist(d) + unlist(e)+ unlist(f) ,aggregate(eliminated$EXPC ~ + unlist(b) + unlist(d) + unlist(e)+ unlist(f),eliminated,mean))
}
if(xx==2011) {
eliminated <- dataset_2011_b
# a <- eliminated$ytotaj
b <- eliminated$comuna
d <- eliminated$cat_alfa
e <- eliminated$categorias_etnicas
f <- eliminated$sexo
anio <- 2011
cross_tab = xtabs(eliminated$expc_full ~ + unlist(b) + unlist(d) + unlist(e)+ unlist(f) ,aggregate(eliminated$expc_full ~ + unlist(b) + unlist(d) + unlist(e)+ unlist(f),eliminated,mean))
}
if(xx==2013) {
eliminated <- dataset_2013_b
# a <- eliminated$ytotcor
b <- eliminated$comuna
d <- eliminated$cat_alfa
e <- eliminated$categorias_etnicas
f <- eliminated$sexo
anio <- 2013
cross_tab = xtabs(eliminated$expc ~ + unlist(b) + unlist(d) + unlist(e)+ unlist(f) ,aggregate(eliminated$expc ~ + unlist(b) + unlist(d) + unlist(e)+ unlist(f),eliminated,mean))
}
if(xx==2015) {
eliminated <- dataset_2015_b
# a <- eliminated$ytotcor
b <- eliminated$comuna
d <- eliminated$cat_alfa
e <- eliminated$categorias_etnicas
f <- eliminated$sexo
anio <- 2015
cross_tab = xtabs(eliminated$expc_todas ~ + unlist(b) + unlist(d) + unlist(e)+ unlist(f) ,aggregate(eliminated$expc_todas ~ + unlist(b) + unlist(d) + unlist(e)+ unlist(f),eliminated,mean))
}
if(xx==2017) {
eliminated <- dataset_2017_b
# a <- eliminated$ytotcor
b <- eliminated$comuna
d <- eliminated$cat_alfa
e <- eliminated$categorias_etnicas
f <- eliminated$sexo
anio <- 2017
cross_tab = xtabs(eliminated$expc ~ + unlist(b) + unlist(d) + unlist(e)+ unlist(f) ,aggregate(eliminated$expc ~ + unlist(b) + unlist(d) + unlist(e)+ unlist(f),eliminated,mean))
}
tabla <- as.data.frame(cross_tab)
d <-tabla[!(tabla$Freq == 0),]
d$Año <- anio
names(d)[1] <- "Comuna"
names(d)[2] <- "Alfabetismo"
names(d)[3] <- "Etnia"
names(d)[4] <- "sexo"
codigos_comunales <- readRDS(file = comunales)
names(codigos_comunales)[1] <- "Código"
names(codigos_comunales)[2] <- "Comuna"
# codigos_comunales
df = merge( x = d, y = codigos_comunales, by = "Comuna", all.x = TRUE)
ingreso_rds <- paste("tablas_peque/base_madre",anio,".rds", sep="")
saveRDS(df,ingreso_rds)
# print(head(df,10))
}
for (n in 1:6){
funcion1(n)
}
receptaculo <- data.frame()
for (n in 1 : 6){
numero <- switch(n, "2006","2009","2011","2013","2015","2017")
direc_tablas <- paste("tablas_peque/base_madre",numero,".rds", sep="")
tablas <- readRDS(direc_tablas)
receptaculo <<- rbind(receptaculo, tablas)
}
# receptaculo
write_xlsx(receptaculo, "receptaculo.xlsx")
data_filtrada_2 <- filter(receptaculo, receptaculo$Comuna == "Algarrobo" , receptaculo$sexo == "Hombre", receptaculo$Etnia == "Mapuche" )
data_filtrada_2
## Comuna Alfabetismo Etnia sexo Freq Año Código
## 1 Algarrobo Sí Mapuche Hombre 41 2006 05602
## 2 Algarrobo Sí Mapuche Hombre 156 2009 05602
## 3 Algarrobo No Mapuche Hombre 59 2009 05602
## 4 Algarrobo Sí Mapuche Hombre 388 2011 05602
## 5 Algarrobo Sí Mapuche Hombre 113 2013 05602
## 6 Algarrobo No Mapuche Hombre 188 2017 05602
## 7 Algarrobo Sí Mapuche Hombre 185 2017 05602
Ahora si tenemos las frecuencias por categoría que representan los pesos por los que tienen que ser multiplicados los valores de los ingresos promedio.
Así, el ingreso promedio para los hombres mapuches que si saben leer en Algarrobo durante los años, 2009, 2011, 2013 y 2017 es:
\[ promedio = 156* 242086,3 + 388* 414415 + 113 * 334313,8 + 185* 486795,5 = 387640,273 \]
Apéndice: trabajo sobre la base de datos Postgres
# library('RPostgreSQL')
# tn <- 'promedios_grupales_x'
# dbRemoveTable(con,tn)
# library('RPostgreSQL')
# # tn <- 'links'
# dbWriteTable(con,'promedios_grupales_x',promedios_grupales_x, row.names=FALSE)
# dbGetQuery(con, 'SELECT * FROM promedios_grupales_x ')
#
# dbGetQuery(con, "SELECT * FROM promedios_grupales_x WHERE comuna = 'Antofagasta' ")