---
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script>
`r opts_chunk$set(message=FALSE,comment="",size='small')`
```{r, echo = FALSE}
#install.packages(devtools)
#library(devtools)
#install_github('slidify', 'ramnathv')
#install_github('slidifyLibraries', 'ramnathv')
#install_version("stringr", version="0.6.2", type = "source")
#library(slidify)
#Cambiar el directorio: setwd("/Users/josezea/jfzeac")
# library(slidify)
# library(slidifyLibraries)
options(rpubs.upload.method = "internal")
publish(title = 'clas10-12', 'index.html', host = 'rpubs')
#publish(user = "jfzeac", repo = "prueba")
```
<div align="center">
<img src = "candane.png" width = "900", height = "480" />
</div>
<br>
## Curso de Análisis de datos con R
</br>
<h3>Instructor:</h3>
<h2> José Fernando Zea</h2>
<li><h4>Msc en EstadÃ?stica</h4></li>
<li><h4>Docente Universidad Nacional</h4></li>
<li><h4>Estudiante Phd en Estadistica (UNAL)</h4></li>
--- .cover #Cover
## Análisis de datos con R

setwd("C:/Users/josezea/Desktop")
load("EMB2011.RData")
#table(a$estrato, useNA="always")
attach(a)
a$estrator[estrato %in% 1:2] <- "Bajo"
a$estrator[estrato %in% 3:4] <- "Medio"
a$estrator[estrato %in% 5:6] <- "Alto"
a$estrator[estrato == 9] <- NA
#table(a$estrator, useNA="always")
detach(a)
Carge la Encuesta Multipropósito de Bogotá: https://www.dropbox.com/s/h47ig09optv46rm/EMB2011.RData?dl=0
setwd("C:/Users/josezea/Desktop")
load("EMB2011.RData")
#table(a$estrato, useNA="always")
a$estrator <- ifelse(a$estrato %in% 1:2, "Bajo",
ifelse(a$estrato %in% 3:4, "Medio",
ifelse(a$estrato %in% 5:6, "Alto", NA)))
table(a$estrator, useNA="always")
Alto Bajo Medio <NA>
783 6846 7998 205
---
## Recodificar variables
```{r, echo=FALSE}
setwd("C:/Users/josezea/Desktop")
```
```{r, echo=TRUE}
setwd("C:/Users/josezea/Desktop")
load("EMB2011.RData")
#table(a$estrato, useNA="always")
attach(a)
a$estrator[estrato %in% 1:2] <- "Bajo"
a$estrator[estrato %in% 3:4] <- "Medio"
a$estrator[estrato %in% 5:6] <- "Alto"
a$estrator[estrato == 9] <- NA
#table(a$estrator, useNA="always")
detach(a)
```
Carge la Encuesta Multipropósito de Bogotá: <a href="https://www.dropbox.com/s/h47ig09optv46rm/EMB2011.RData?dl=0">https://www.dropbox.com/s/h47ig09optv46rm/EMB2011.RData?dl=0</a>
```{r, echo=TRUE}
setwd("C:/Users/josezea/Desktop")
load("EMB2011.RData")
#table(a$estrato, useNA="always")
a$estrator <- ifelse(a$estrato %in% 1:2, "Bajo",
ifelse(a$estrato %in% 3:4, "Medio",
ifelse(a$estrato %in% 5:6, "Alto", NA)))
table(a$estrator, useNA="always")
```
a$estrator = NULL
library(dplyr)
a <- mutate(a, estrator = ifelse(estrato %in% 1:2, "Bajo",
ifelse(estrato %in% 3:4, "Medio",
ifelse(estrato %in% 5:6, "Alto", NA))) )
table(a$estrator, useNA="always")
Alto Bajo Medio <NA>
783 6846 7998 205
library(car)
estR <- recode(a$estrato, '1="Bajo"; 2="Bajo"; 3="Medio"; 4="Medio";
5="Alto"; 6="Alto"; 9=NA')
#table(estR)
---
## Recodificación con dplyr y con el paquete recode
* Alternativamente con la función mutate:
```{r, echo=TRUE}
a$estrator = NULL
library(dplyr)
a <- mutate(a, estrator = ifelse(estrato %in% 1:2, "Bajo",
ifelse(estrato %in% 3:4, "Medio",
ifelse(estrato %in% 5:6, "Alto", NA))) )
table(a$estrator, useNA="always")
```
* Recodificación con recode: muy útil cuando son varias niveles en que se quiere recodificar
```{r, echo=TRUE}
library(car)
estR <- recode(a$estrato, '1="Bajo"; 2="Bajo"; 3="Medio"; 4="Medio";
5="Alto"; 6="Alto"; 9=NA')
#table(estR)
```
- Recodifique el ingreso por salario m�nimo del 2011: 0-1 SM, 1-2 SM, 2-3 SM, Más de 3 SM (use ing_gastos)
_ Recodifique en quintiles el gasto.
Para añadir casos a una tabla de datos, las variables deben tener el mismo nombre y por ejemplo si una variable que se llame var1 en ambas tablas deben tener las columnas en el mismo formato
Si dos columnas que se llamen igual no tienen el mismo tipo la función bind_rows la vuelve caracter para poderlas combinar
---
## Añadir casos (Append): pegado de bases por debajo
- Para añadir casos a una tabla de datos, las variables deben tener el mismo nombre y por ejemplo si una variable que se llame var1 en ambas tablas deben tener las columnas en el mismo formato
- Si dos columnas que se llamen igual no tienen el mismo tipo la función bind_rows la vuelve caracter para poderlas combinar
<div align="right">
<img src = "append.png" width = "1200", height = "1200"
alt = "Append" />
</div>
X <- data.frame(A=1:10, B=LETTERS[1:10], C=rnorm(10) )
Y <- data.frame(A=11:15, D=rnorm(5), E=letters[1:5] )
#rbind(X, Y): no funciona puesto que no hay coincidencia exacta columna a columna
library(gtools)
smartbind(X, Y) #smartbind(df1, df2, fill=99)
A B C D E
1:1 1 A -1.06755727 NA <NA>
1:2 2 B 0.09229334 NA <NA>
1:3 3 C 0.68273441 NA <NA>
1:4 4 D -1.55232542 NA <NA>
1:5 5 E 0.88157874 NA <NA>
1:6 6 F -0.16842192 NA <NA>
1:7 7 G 0.09034243 NA <NA>
1:8 8 H 0.36309594 NA <NA>
1:9 9 I 1.09609962 NA <NA>
1:10 10 J 0.14595696 NA <NA>
2:1 11 <NA> NA 0.3953788 a
2:2 12 <NA> NA -2.5099615 b
2:3 13 <NA> NA 0.3334682 c
2:4 14 <NA> NA 0.5192524 d
2:5 15 <NA> NA 0.8193869 e
library(dplyr) #bind_rows(X, Y)
---
## Ejemplo Append
```{r, echo=TRUE}
X <- data.frame(A=1:10, B=LETTERS[1:10], C=rnorm(10) )
Y <- data.frame(A=11:15, D=rnorm(5), E=letters[1:5] )
#rbind(X, Y): no funciona puesto que no hay coincidencia exacta columna a columna
library(gtools)
smartbind(X, Y) #smartbind(df1, df2, fill=99)
library(dplyr) #bind_rows(X, Y)
```
Muchas encuestas vienen en diferentes módulos por lo cual se hace necesario integrarlas a través de variables comunes a ambas tablas.
La tabla que se combina contendrá además de las variables comunes cada una de las variables de las dos tablas.
Existen Al menos 5 formas de realizar este procedimiento: producto cartesiano (no es muy usado en el contexto de manejo de bases de datos), inner_join, outer_join, left_join, right_join, entre otros. Se explican los principales.
---
## Añadir variables (merge/join): pegado de bases por el lado
- Muchas encuestas vienen en diferentes módulos por lo cual se hace necesario integrarlas a través de variables comunes a ambas tablas.
- La tabla que se combina contendrá además de las variables comunes cada una de las variables de las dos tablas.
- Existen Al menos 5 formas de realizar este procedimiento: producto cartesiano (no es muy usado en el contexto de manejo de bases de datos), inner_join, outer_join, left_join, right_join, entre otros. Se explican los principales.
<div align="right">
<img src = "joins.png" width = "600", height = "600"
alt = "Append" />
</div>
df1 <- data.frame(CustomerId = paste0("ID", c(1:6)), Product = c(rep("TV", 3), rep("Radio", 3)))
df2 <- data.frame(CustomerId = paste0("ID", c(2, 4, 6)), State = c(rep("Alabama", 2), rep("Ohio", 1)))
#Observar cada uno de los tipos de pegados
#Inner Join: conserva los individuos que estén en ambas variable
df_inner <- merge(df1, df2)
#Outer Join: Conserva los individuos que esté en al menos de una de las dos variables
df_outer <- merge(x = df1, y = df2, by = "CustomerId", all = TRUE)
#Left Join: Conserva los individuos que esté en la tabla de la izquierda
df_left <- merge(x = df1, y = df2, by = "CustomerId", all.x = TRUE)
#Right Join: Conserva los individuos que esté en la tabla de la derecha
df_right <- merge(x = df1, y = df2, by = "CustomerId", all.y = TRUE)
#Producto cartesiano: poco utilizado en el contexto de manejo de bases de datos
df_cross <- merge(x = df1, y = df2, by = NULL)
#Más eficiente computacionalmente con dplyr
library(dplyr)
#inner_join(df1, df2)
#left_join(df1, df2)
#right_join(df1, df2)
#Outer Join
#full_join(df1, df2)
---
## Algunos ejercicios de pegados de bases de datos con el paquete base
```{r, echo=TRUE}
df1 <- data.frame(CustomerId = paste0("ID", c(1:6)), Product = c(rep("TV", 3), rep("Radio", 3)))
df2 <- data.frame(CustomerId = paste0("ID", c(2, 4, 6)), State = c(rep("Alabama", 2), rep("Ohio", 1)))
#Observar cada uno de los tipos de pegados
#Inner Join: conserva los individuos que estén en ambas variable
df_inner <- merge(df1, df2)
#Outer Join: Conserva los individuos que esté en al menos de una de las dos variables
df_outer <- merge(x = df1, y = df2, by = "CustomerId", all = TRUE)
#Left Join: Conserva los individuos que esté en la tabla de la izquierda
df_left <- merge(x = df1, y = df2, by = "CustomerId", all.x = TRUE)
#Right Join: Conserva los individuos que esté en la tabla de la derecha
df_right <- merge(x = df1, y = df2, by = "CustomerId", all.y = TRUE)
#Producto cartesiano: poco utilizado en el contexto de manejo de bases de datos
df_cross <- merge(x = df1, y = df2, by = NULL)
#Más eficiente computacionalmente con dplyr
library(dplyr)
#inner_join(df1, df2)
#left_join(df1, df2)
#right_join(df1, df2)
#Outer Join
#full_join(df1, df2)
```
http://www.rstudio.com/wp-content/uploads/2015/02/data-wrangling-cheatsheet.pdf/.
---
## Soplete de Hadley Wickham con dplyr
<a href="http://www.rstudio.com/wp-content/uploads/2015/02/data-wrangling-cheatsheet.pdf//">http://www.rstudio.com/wp-content/uploads/2015/02/data-wrangling-cheatsheet.pdf/</a>.
<p>
<div align="right">
<img src = "soplete.png" width = "900", height = "900"
alt = "Append" />
</div>
</p>
#Si las variables tienen nombres diferentes
df1 <- data.frame(CustomerId = paste0("ID", c(1:6)), Product = c(rep("TV", 3), rep("Radio", 3)))
df2 <- data.frame(Id = paste0("ID", c(2, 4, 6)), State = c(rep("Alabama", 2), rep("Ohio", 1)))
merge(df1, df2, by.x = "CustomerId", by.y = "Id")
CustomerId Product State
1 ID2 TV Alabama
2 ID4 Radio Alabama
3 ID6 Radio Ohio
#Se puede unir también por nombres diferentes en las bases y múltiples variables
d1 <- data_frame( x = letters[1:3], y = LETTERS[1:3], a = rnorm(3) )
d2 <- data_frame(x2 = letters[3:1], y2 = LETTERS[3:1], b = rnorm(3) )
left_join(d1, d2, by = c("x" = "x2", "y" = "y2"))
Source: local data frame [3 x 4]
x y a b
1 a A 0.3924069 1.3073880
2 b B 0.3397483 -0.3811417
3 c C -0.2541935 0.4381216
#merge(d1, d2, by.x = c("x", "y"), by.y = c("x2", "y2"), all.x = T)
---
## Algunos detalles adicionales del merge/join
```{r, echo=TRUE}
#Si las variables tienen nombres diferentes
df1 <- data.frame(CustomerId = paste0("ID", c(1:6)), Product = c(rep("TV", 3), rep("Radio", 3)))
df2 <- data.frame(Id = paste0("ID", c(2, 4, 6)), State = c(rep("Alabama", 2), rep("Ohio", 1)))
merge(df1, df2, by.x = "CustomerId", by.y = "Id")
#Se puede unir también por nombres diferentes en las bases y múltiples variables
d1 <- data_frame( x = letters[1:3], y = LETTERS[1:3], a = rnorm(3) )
d2 <- data_frame(x2 = letters[3:1], y2 = LETTERS[3:1], b = rnorm(3) )
left_join(d1, d2, by = c("x" = "x2", "y" = "y2"))
#merge(d1, d2, by.x = c("x", "y"), by.y = c("x2", "y2"), all.x = T)
```
Ver el formulario de la encuesta multiproposito:
http://formularios.dane.gov.co/Anda_4_1/index.php/catalog/189/download/2877 y cargue la siguiente encuesta (Encuesta multiproposito de Bogotá): https://www.dropbox.com/s/h47ig09optv46rm/EMB2011.RData?dl=0
directorio_hog: identificador de la vivienda
Ojo: a es una tabla de viviendas, ing_gastos es una tabla de hogares, PROBLEMA: no se pueden conectar directamente.
Paso 1: primero peguemos la tabla de los nombres de la localidad a la tabla a
Paso 2: Usemos una tabla que contenga el identificador de la vivienda y del hogar: pegamos la tabla a con la c(aunque las variables de c no nos importa)
Paso3: Pegamos la tabla ac con la tabla ing_gastos
---
## Ejercicio con la multiproposito
Ver el formulario de la encuesta multiproposito:
<a href="http://formularios.dane.gov.co/Anda_4_1/index.php/catalog/189/download/2877">http://formularios.dane.gov.co/Anda_4_1/index.php/catalog/189/download/2877</a> y cargue la siguiente encuesta (Encuesta multiproposito de Bogotá):
<a href="https://www.dropbox.com/s/h47ig09optv46rm/EMB2011.RData?dl=0">https://www.dropbox.com/s/h47ig09optv46rm/EMB2011.RData?dl=0</a>
- Objetivo: conformar una base con estrato, localidad, gasto e ingreso
- directorio: identificador vivienda
- directorio_hog: identificador de la vivienda
- Ojo: a es una tabla de viviendas, ing_gastos es una tabla de hogares, PROBLEMA: no se pueden conectar directamente.
- Paso 1: primero peguemos la tabla de los nombres de la localidad a la tabla a
- Paso 2: Usemos una tabla que contenga el identificador de la vivienda y del hogar: pegamos la tabla a con la c(aunque las variables de c no nos importa)
- Paso3: Pegamos la tabla ac con la tabla ing_gastos
# Preparación de la base de datos
setwd("C:/Users/josezea/Desktop")
load("EMB2011.RData")
a <- merge(a, localidad)
#localidad$nom_loc <- as.character(localidad$nom_loc)
#Encoding(localidad$nom_loc) <- "latin1"
ac <- merge(a, c)
tabla <- merge(ac, ing_gastos)
library(dplyr)
tabla <- tabla_inggastos_bogota %>% select(directorio_hog,nom_loc,
estrato, ingreso, gasto)
Error in eval(expr, envir, enclos): object 'tabla_inggastos_bogota' not found
---
## Ejercicio con la multiproposito (2)
```{r, echo=TRUE}
# Preparación de la base de datos
setwd("C:/Users/josezea/Desktop")
load("EMB2011.RData")
a <- merge(a, localidad)
#localidad$nom_loc <- as.character(localidad$nom_loc)
#Encoding(localidad$nom_loc) <- "latin1"
ac <- merge(a, c)
tabla <- merge(ac, ing_gastos)
library(dplyr)
tabla <- tabla_inggastos_bogota %>% select(directorio_hog,nom_loc,
estrato, ingreso, gasto)
```
- Calclue el ingreso promedio por tipo de apartamento
_ Supongamos que la GEIH fuera un censo (ignoraremos en este ejercicio los factores de expansión)
Ejercicio 1: ¿En bogotá, los ingresos de los hogares que son propietarios de vivienda son mayores en los propietarios de vivienda, en los arrendatatarios?
Para responder a esta pregunta realizaremos una serie de pasos sucesivos para obtener la información necesaria.
Paso 1 (Preparación de las bases de datos): identificar módulos: Pregunta C9 de Area - Vivienda y Hogares.sav (variable P5090) y variable Inglabo de "Area - Ocupados.sav"
Paso 2: identificar por que variables se va a realizar el meerge/join: DIRECTORIO: identificador de la vivienda, IDENTIFICAR DE HOGAR: conformado por el DIRECTORIO y SECUENCIA_P, IDENTIFICADOR DE LA PERSONA: conformado por DIRECTORIO, SECUENCIA_P y ORDEN
Paso 3: Unión de la tabla de ocupados y hogares, reconstrucción del ingreso de los hogares y cálculo del promedio del ingreso del hogar por tipo de vivienda
---
## Ejercicio con la gran encuesta integrada de hogares
_ Supongamos que la GEIH fuera un censo (ignoraremos en este ejercicio los factores de expansión)
- Ejercicio 1: ¿En bogotá, los ingresos de los hogares que son propietarios de vivienda son mayores en los propietarios de vivienda, en los arrendatatarios?
- Para responder a esta pregunta realizaremos una serie de pasos sucesivos para obtener la información necesaria.
- Paso 1 (Preparación de las bases de datos): identificar módulos: Pregunta C9 de Area - Vivienda y Hogares.sav (variable P5090) y variable Inglabo de "Area - Ocupados.sav"
- Paso 2: identificar por que variables se va a realizar el meerge/join:
DIRECTORIO: identificador de la vivienda, IDENTIFICAR DE HOGAR: conformado por el DIRECTORIO y SECUENCIA_P, IDENTIFICADOR DE LA PERSONA: conformado por DIRECTORIO, SECUENCIA_P y ORDEN
- Paso 3: Unión de la tabla de ocupados y hogares, reconstrucción del ingreso de los hogares y cálculo del promedio del ingreso del hogar por tipo de vivienda
Descargar GEIH Marzo de 2015, principales áreas metropolitanas: https://www.dropbox.com/sh/ndradnkiq6uoaor/AADOOLGaJoOQNi7tCfNzv8KVa?dl=0
setwd("C:/Users/josezea/Documents/Laboral 2015/curso DANE 2015/Bases de datos/Marzo_GEIH/AREA")
#dir()
library(haven)
vivhogares_Areas <- read_spss("Area - Vivienda y Hogares.sav")
for(i in 1:ncol(vivhogares_Areas)){
Encoding(attributes(vivhogares_Areas[[i]])$label) <- "latin1"
}
for(i in 1:ncol(vivhogares_Areas)){
if( class(vivhogares_Areas[[i]] ) == "labelled" ) {
Encoding(names(attributes(vivhogares_Areas[[i]])$labels)) <- "latin1"
}
}
ocupados_Areas <- read_spss("Area - Ocupados.sav")
for(i in 1:ncol(ocupados_Areas)){
Encoding(attributes(ocupados_Areas[[i]])$label) <- "latin1"
}
for(i in 1:ncol(ocupados_Areas)){
if( class(ocupados_Areas[[i]] ) == "labelled" ) {
Encoding(names(attributes(ocupados_Areas[[i]])$labels)) <- "latin1"
}
}
---
## Paso 1: Preparacion de la base de datos
Descargar GEIH Marzo de 2015, principales áreas metropolitanas: <a href="https://www.dropbox.com/sh/ndradnkiq6uoaor/AADOOLGaJoOQNi7tCfNzv8KVa?dl=0
">https://www.dropbox.com/sh/ndradnkiq6uoaor/AADOOLGaJoOQNi7tCfNzv8KVa?dl=0
</a>
```{r, echo=TRUE}
setwd("C:/Users/josezea/Documents/Laboral 2015/curso DANE 2015/Bases de datos/Marzo_GEIH/AREA")
#dir()
library(haven)
vivhogares_Areas <- read_spss("Area - Vivienda y Hogares.sav")
for(i in 1:ncol(vivhogares_Areas)){
Encoding(attributes(vivhogares_Areas[[i]])$label) <- "latin1"
}
for(i in 1:ncol(vivhogares_Areas)){
if( class(vivhogares_Areas[[i]] ) == "labelled" ) {
Encoding(names(attributes(vivhogares_Areas[[i]])$labels)) <- "latin1"
}
}
ocupados_Areas <- read_spss("Area - Ocupados.sav")
for(i in 1:ncol(ocupados_Areas)){
Encoding(attributes(ocupados_Areas[[i]])$label) <- "latin1"
}
for(i in 1:ncol(ocupados_Areas)){
if( class(ocupados_Areas[[i]] ) == "labelled" ) {
Encoding(names(attributes(ocupados_Areas[[i]])$labels)) <- "latin1"
}
}
```
#intersect(names(vivhogares_Areas), names(ocupados_Areas))
#Puede pegar directamente con merge
prueba <- merge(vivhogares_Areas, ocupados_Areas, by = c("Directorio", "Secuencia_p") )
#En dplyr las variables a pegar deben ser de tipo caracter
#typeof(vivhogares_Areas$Secuencia_p)
vivhogares_Areas$Directorio <- as.character(vivhogares_Areas$Directorio)
ocupados_Areas$Directorio <- as.character(ocupados_Areas$Directorio)
vivhogares_Areas$Secuencia_p <- as.character(vivhogares_Areas$Secuencia_p)
ocupados_Areas$Secuencia_p <- as.character(ocupados_Areas$Secuencia_p)
datos <- vivhogares_Areas %>% right_join(ocupados_Areas, by = c("Directorio", "Secuencia_p")) %>%
select(Directorio, Secuencia_p, Orden, Area.x, Inglabo)
names(datos)[4] <- "Area"
# attributes(datos$Area)
# table(datos$Area)
datos <- datos %>% filter(Area == "11") #Se filtra Bogotá
datos$Area = as_factor(datos$Area)
#table(datos$Area)
---
## Paso 2 y 3
```{r, echo=TRUE}
#intersect(names(vivhogares_Areas), names(ocupados_Areas))
#Puede pegar directamente con merge
prueba <- merge(vivhogares_Areas, ocupados_Areas, by = c("Directorio", "Secuencia_p") )
#En dplyr las variables a pegar deben ser de tipo caracter
#typeof(vivhogares_Areas$Secuencia_p)
vivhogares_Areas$Directorio <- as.character(vivhogares_Areas$Directorio)
ocupados_Areas$Directorio <- as.character(ocupados_Areas$Directorio)
vivhogares_Areas$Secuencia_p <- as.character(vivhogares_Areas$Secuencia_p)
ocupados_Areas$Secuencia_p <- as.character(ocupados_Areas$Secuencia_p)
datos <- vivhogares_Areas %>% right_join(ocupados_Areas, by = c("Directorio", "Secuencia_p")) %>%
select(Directorio, Secuencia_p, Orden, Area.x, Inglabo)
names(datos)[4] <- "Area"
# attributes(datos$Area)
# table(datos$Area)
datos <- datos %>% filter(Area == "11") #Se filtra Bogotá
datos$Area = as_factor(datos$Area)
#table(datos$Area)
```
#Sumar el ingreso por hogar y luego calcular el promedio del ingreso del hogar por tipo de vivienda
consulta <- datos %>% group_by(Directorio,Secuencia_p) %>% summarize(ingresoXhog = sum(Inglabo, na.rm = T)) %>%
left_join(vivhogares_Areas, by = c("Directorio","Secuencia_p")) %>% select( ingresoXhog,P5090) %>%
group_by(P5090) %>% summarise(prom_inghog = mean(ingresoXhog, na.rm = T))
consulta$P5090 = as_factor(consulta$P5090)
consulta
Source: local data frame [6 x 2]
P5090 prom_inghog
1 Propia, totalmente pagada 2273458
2 Propia, la están pagando 2688959
3 En arriendo o subarriendo 1803342
4 En usufructo 1492023
5 Posesión sin titulo (ocupante de hecho) ó propiedad colectiv 463000
6 Otra, ¿cuál?___________________ 1630175
Ejercicio: calcule el ingreso promedio por estrato socieconómico.
---
## Paso 2 y 3 (cont)
```{r, echo=TRUE}
#Sumar el ingreso por hogar y luego calcular el promedio del ingreso del hogar por tipo de vivienda
consulta <- datos %>% group_by(Directorio,Secuencia_p) %>% summarize(ingresoXhog = sum(Inglabo, na.rm = T)) %>%
left_join(vivhogares_Areas, by = c("Directorio","Secuencia_p")) %>% select( ingresoXhog,P5090) %>%
group_by(P5090) %>% summarise(prom_inghog = mean(ingresoXhog, na.rm = T))
consulta$P5090 = as_factor(consulta$P5090)
consulta
```
Ejercicio: calcule el ingreso promedio por estrato socieconómico.
---
## Reestructuración de datos: formato ancho a largo: gather
- Pasar de una base ancha (wide format) a una larga (long format)
<div align="right">
<img src = "reshape_widelong.png" width = "700", height = "700"
alt = "Append" />
</div>
- data: conjunto de datos (supermercado)
- key: llave, será una variable categórica (Trimestre)
- value: valores, los valores que deseo "reunir" en una columna (Utilidades)
- ... : las variables en donde están "dispersos los valores" (Trimestre1, Tirmestre2,..)
---
## Reestructuración de bases de datos: formato largo a ancho: spread
* Pasar de una base larga (long format) a una ancha (wide format)
<div align="right">
<img src = "reshape_longwide.png" width = "700", height = "700"
alt = "Append" />
</div>
- data: conjunto de datos (supermercado)
- key: llave, variable categórica (Trimestre)
- value: valores, los valores que deseo colocar en diferentes columnas (cuyos nombres son cada uno de los niveles de la llave) (Utilidades)
setwd("C:/Users/josezea/Documents/Laboral 2015/curso DANE 2015/Bases de datos/FicherosR")
load("supermercado.Rdata")
library(tidyr)
supermercado2 <- gather(supermercado, key = Trimestre, value = Utilidades, Trimestre_1:Trimestre_4 )
#Mejor asi y ordenamos al final por Almacen, Año y trimestre para mejor comprensión
supermercado2 <- supermercado %>% gather(key = Trimestre, value = Utilidades,
Trimestre_1:Trimestre_4) %>% arrange(Almacen, Year, Trimestre)
setwd("C:/Users/josezea/Documents/Laboral 2015/curso DANE 2015/Bases de datos")
ejemplo1 <- read.table("Ejemplo1.csv", sep = ",", header = T)
ejemplo1$Id_personas <- paste0("ID",1:nrow(ejemplo1))
ejemplo1 <- select(ejemplo1, Id_personas, V_1: V_7)
ejemplo1_long <- ejemplo1 %>% gather(key = Posicion, value = Marcas,
V_1:V_7) %>% arrange(Id_personas, Posicion)
ejemplo1_long <- ejemplo1_long[ejemplo1_long$Marcas !=99, ]
ejemplo1_long$Marcas<- factor(ejemplo1_long$Marcas, labels = c("Coca-Cola", "Pepsi",
"Colombiana Postobon","Sprite", "Quatro", "Manzana", "Naranja Postobon", paste0("Marca",8:16)))
#table(ejemplo1_long$Marcas)
#round(100 * prop.table(table(ejemplo1_long$Marcas)), 1)
---
## Ejemplos de reestructuración de base ancha a larga
* Descargar: <a href="https://www.dropbox.com/s/44jdkn7pyypz8lm/supermercado.Rdata?dl=0">https://www.dropbox.com/s/44jdkn7pyypz8lm/supermercado.Rdata?dl=0 </a> y tambien descargar: <a href="https://www.dropbox.com/s/xycpg2r6xxuo6cz/Ejemplo1.csv?dl=0">https://www.dropbox.com/s/xycpg2r6xxuo6cz/Ejemplo1.csv?dl=0 </a>
```{r, echo=TRUE}
setwd("C:/Users/josezea/Documents/Laboral 2015/curso DANE 2015/Bases de datos/FicherosR")
load("supermercado.Rdata")
library(tidyr)
supermercado2 <- gather(supermercado, key = Trimestre, value = Utilidades, Trimestre_1:Trimestre_4 )
#Mejor asi y ordenamos al final por Almacen, Año y trimestre para mejor comprensión
supermercado2 <- supermercado %>% gather(key = Trimestre, value = Utilidades,
Trimestre_1:Trimestre_4) %>% arrange(Almacen, Year, Trimestre)
setwd("C:/Users/josezea/Documents/Laboral 2015/curso DANE 2015/Bases de datos")
ejemplo1 <- read.table("Ejemplo1.csv", sep = ",", header = T)
ejemplo1$Id_personas <- paste0("ID",1:nrow(ejemplo1))
ejemplo1 <- select(ejemplo1, Id_personas, V_1: V_7)
ejemplo1_long <- ejemplo1 %>% gather(key = Posicion, value = Marcas,
V_1:V_7) %>% arrange(Id_personas, Posicion)
ejemplo1_long <- ejemplo1_long[ejemplo1_long$Marcas !=99, ]
ejemplo1_long$Marcas<- factor(ejemplo1_long$Marcas, labels = c("Coca-Cola", "Pepsi",
"Colombiana Postobon","Sprite", "Quatro", "Manzana", "Naranja Postobon", paste0("Marca",8:16)))
#table(ejemplo1_long$Marcas)
#round(100 * prop.table(table(ejemplo1_long$Marcas)), 1)
```
supermercadoA <- supermercado2 %>% spread(key = Trimestre, value = Utilidades)
cor(supermercadoA[,3:6])
Trimestre_1 Trimestre_2 Trimestre_3 Trimestre_4
Trimestre_1 1.0000000 0.9969518 0.9966907 0.9971432
Trimestre_2 0.9969518 1.0000000 0.9987305 0.9972775
Trimestre_3 0.9966907 0.9987305 1.0000000 0.9967585
Trimestre_4 0.9971432 0.9972775 0.9967585 1.0000000
Ver: http://www.dane.gov.co/files/investigaciones/poblacion/proyepobla06_20/Hogares_viviendas_1985-2020.xls
Descargar: https://www.dropbox.com/s/52np816t4wcb1xn/proyeccionesDane.xlsx?dl=0
setwd("C:/Users/josezea/Documents/Laboral 2015/curso DANE 2015/Bases de datos")
library(readxl)
proy <- read_excel("proyeccionesDane.xlsx")
names(proy)[3:38] <- paste0("A", names(proy)[3:38])
proy_long <- proy %>% gather(key = Periodo, value = Poblacion,
A1985:A2020) %>% arrange(DP, Periodo)
#Suponga que tiene proy_long y la desea volver base ancha
proyA <- proy_long %>% spread(key = Periodo, value = Poblacion)
---
## Ejemplos de reestructuración de base larga a ancha
* Suponga que se dispone de la base larga y se quiere saber si desea calcular la correlación entre las ventas trimestrales
```{r, echo=TRUE}
supermercadoA <- supermercado2 %>% spread(key = Trimestre, value = Utilidades)
cor(supermercadoA[,3:6])
```
Ver: <a href="http://www.dane.gov.co/files/investigaciones/poblacion/proyepobla06_20/Hogares_viviendas_1985-2020.xls">http://www.dane.gov.co/files/investigaciones/poblacion/proyepobla06_20/Hogares_viviendas_1985-2020.xls </a>
Descargar:
<a href="https://www.dropbox.com/s/52np816t4wcb1xn/proyeccionesDane.xlsx?dl=0">https://www.dropbox.com/s/52np816t4wcb1xn/proyeccionesDane.xlsx?dl=0</a>
```{r, echo=TRUE}
setwd("C:/Users/josezea/Documents/Laboral 2015/curso DANE 2015/Bases de datos")
library(readxl)
proy <- read_excel("proyeccionesDane.xlsx")
names(proy)[3:38] <- paste0("A", names(proy)[3:38])
proy_long <- proy %>% gather(key = Periodo, value = Poblacion,
A1985:A2020) %>% arrange(DP, Periodo)
#Suponga que tiene proy_long y la desea volver base ancha
proyA <- proy_long %>% spread(key = Periodo, value = Poblacion)
```
supermercado3 <- supermercado2 %>% separate( col = Trimestre,
into = c("Intervalo_tiempo", "Trim"),
sep = "\\_")
#En sep se coloca el signo con el cual se desea separar las columnas precedido de \\
#Para Unir en una variale en col se coloca el nombre de la columna que se queire construir
supermercado4 <- supermercado3 %>% unite(col = Trimestre, Intervalo_tiempo, Trim, sep = "_")
head(supermercado4)
Almacen Year Trimestre Utilidades
1 1 2009 Trimestre_1 1034
2 1 2009 Trimestre_2 1050
3 1 2009 Trimestre_3 1019
4 1 2009 Trimestre_4 1002
5 1 2010 Trimestre_1 1202
6 1 2010 Trimestre_2 1225
---
### Separate y Unite
* Para separar variables en diferentes columnas o combinar variables a una misma columna:
```{r, echo=TRUE}
supermercado3 <- supermercado2 %>% separate( col = Trimestre,
into = c("Intervalo_tiempo", "Trim"),
sep = "\\_")
#En sep se coloca el signo con el cual se desea separar las columnas precedido de \\
#Para Unir en una variale en col se coloca el nombre de la columna que se queire construir
supermercado4 <- supermercado3 %>% unite(col = Trimestre, Intervalo_tiempo, Trim, sep = "_")
head(supermercado4)
```
Para los puntos 1 a use la tabla taller3.Rdata: https://www.dropbox.com/s/pahlo97tibelvs6/taller3.Rdata?dl=0
¿Cuál fue el promedio y la mediana del puntaje en matemáticas para cada una de las tipologias de municipios que usted recodificó?
Lleve a cabo una reestructuración de base ancha a base larga (gather) para la base de datos resumen_jornada. Responda a las siguientes preguntas:
---
### Taller3
Para los puntos 1 a use la tabla taller3.Rdata: <a
href="https://www.dropbox.com/s/pahlo97tibelvs6/taller3.Rdata?dl=0
">https://www.dropbox.com/s/pahlo97tibelvs6/taller3.Rdata?dl=0
</a>
1. Utilice la base de datos saber2013 y calcule el puntaje promedio global
que sacaron los colegios en las pruebas saber. Recodifique las variables
como "Aprobó" si el puntaje global del colegio estuvo por encima de 60,
"Reprobó si el puntaje globar estuve por debajo de sesenta.
- ¿Qué porcentajes de colegios se "rajaron" en la prueba. 0
- De los colegios públicos de Bogotá con más de 10 estudiantes
evaluados que portcentaje se "rajaron" en las prueba saber
2. Utilice las tablas de proy de población y las de las
pruebas saber. Recodifique la variable P_2015 (población en el año 2015)
de acuerdo a los siguiente: Municipios de menos de 100 000 habitantes, Municipios de 100 000 a 500000 habitantes y
Municipios de más de 500000 mil de habitantes.
- ¿Cuál fue el promedio y la mediana del puntaje en matemáticas para cada una de las tipologias de municipios que usted
recodificó?
3. Lleve a cabo una reestructuración de base ancha a base larga (gather)
para la base de datos resumen_jornada. Responda a las siguientes
preguntas:
- ¿Cuál es el total de evaluados por departamento?
- ¿Cuantos evaluados tienen Bogotá, Cali y Medellin, cuales son los dos
municipios con menos evaluados?
4) ¿Qu é porcentaje de los mayores de 18 trabaja en Bogotá?, Qu é porcentaje trabaja en cada uno de los estratos socioeconómicos en Bogotá? Descargue la información de: https://www.dropbox.com/s/uxdslp4sr7jkp07/AREA.zip?dl=0
5) Utilice las proyecciones completas y pase de un formato ancho a un formato largo la información de tal forma que quede la población total, la problación cabecera y la población de resto de cada municipio por aparte. (Utilice gather y cuando sea necesario select e inner_join(pegue por el indentificador del municipio). Descargue la información de: https://www.dropbox.com/s/3s6t2fgic1mb3tu/Proypoblaccompletas.xlsx?dl=0
---
### Taller 3 (cont)
4) ¿Qu é porcentaje de los mayores de 18 trabaja en Bogotá?, Qu é porcentaje trabaja en cada uno de los estratos socioeconómicos en Bogotá? Descargue la información de: <a href="https://www.dropbox.com/s/uxdslp4sr7jkp07/AREA.zip?dl=0">https://www.dropbox.com/s/uxdslp4sr7jkp07/AREA.zip?dl=0
</a>
5) Utilice las proyecciones completas y pase de un formato ancho a un formato largo la información de tal forma que
quede la población total, la problación cabecera y la población de resto de cada municipio por aparte.
(Utilice gather y cuando sea necesario select e inner_join(pegue por el indentificador del municipio). Descargue la información de: <a href="https://www.dropbox.com/s/3s6t2fgic1mb3tu/Proypoblaccompletas.xlsx?dl=0">https://www.dropbox.com/s/3s6t2fgic1mb3tu/Proypoblaccompletas.xlsx?dl=0
</a>
Table of Contents | t |
---|---|
Exposé | ESC |
Full screen slides | e |
Presenter View | p |
Source Files | s |
Slide Numbers | n |
Toggle screen blanking | b |
Show/hide slide context | c |
Notes | 2 |
Help | h |