Índice

1. Introducción

1. Promedios de promedios

Éste programa corre con la version R-3.6.3

1. Introducción

(volver al índice)



2006

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
No No
No sabe /Sin dato NS/NR
Sí, lee y escribe
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

2009

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

2011

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

2013

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

guardamos los cuatro primeros en rds:

unidos_los_cuatro <- rbind(df_2006,df_2009,df_2011,df_2013)
saveRDS(unidos_los_cuatro,"unidos_los_cuatro.rds")

2015

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

2017

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")

2. Promedios de promedios

(volver al índice)

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

Pregunta: es el promedio del sueldo de los hombres mapuches en Algarrobo la cantidad siguiente?:

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' ")