Títulos: se pone un #
Subtítulos: se ponen dos #
Negritas: son dos asteriscos**
Cursiva: se puede con un asterisco o con guiones bajos
Hipervínculo: se usan los corchetes seguido de paréntesis, dentro de los [corchetes] se pone el nombre que aparecerá y dentro de los (paréntesis) el hipervínculo a donde quiero que me dirija: Link
Ecuación: son dos signos de pesos y al interior la ecuación: \(y=mx+b\)
Códigos: se ponen diagonales invertidas y al interior “r”: ```{r}. A esto se le denomina chunk, estos se resaltan en gris, se puede correr el código y los resultados se pueden encontrar en la página renderizada:
¿Qué se necesita? Todo lo que se pone en un script.
Además de “r”, dentro de las llaves se pone “{r, eval=TRUE}”, de esta manera se le pide que evalue el contenido pues no son caractéres sino código y que se muestren los resultados: {r, eval=TRUE}
#0. Preparar entorno de trabajo
rm(list=ls()); graphics.off(); options(warn=-1)
#1. Cargar librerias
paquetes=c("scales","survey","ggsurvey","forcats","haven","readxl","readxl","fastDummies","readr", "dplyr", "foreign", "tidyr", "ggplot2", "writexl","openxlsx","gridExtra")
for (i in paquetes) {if (!require(i, character.only = TRUE)) {install.packages(i);library(i, character.only = TRUE)} else {library(i, character.only = TRUE)}}
## Loading required package: scales
## Loading required package: survey
## Loading required package: grid
## Loading required package: Matrix
## Loading required package: survival
##
## Attaching package: 'survey'
## The following object is masked from 'package:graphics':
##
## dotchart
## Loading required package: ggsurvey
## Loading required package: ggplot2
## Loading required package: hexbin
## Loading required package: dplyr
##
## Attaching package: 'dplyr'
## The following objects are masked from 'package:stats':
##
## filter, lag
## The following objects are masked from 'package:base':
##
## intersect, setdiff, setequal, union
## Loading required package: forcats
## Loading required package: haven
## Loading required package: readxl
## Loading required package: fastDummies
## Loading required package: readr
##
## Attaching package: 'readr'
## The following object is masked from 'package:scales':
##
## col_factor
## Loading required package: foreign
## Loading required package: tidyr
##
## Attaching package: 'tidyr'
## The following objects are masked from 'package:Matrix':
##
## expand, pack, unpack
## Loading required package: writexl
## Loading required package: openxlsx
## Loading required package: gridExtra
##
## Attaching package: 'gridExtra'
## The following object is masked from 'package:dplyr':
##
## combine
#2. Directorio de trabajo
setwd("~/CURSOS/Curso_visulizacionR/CursoVisualR")
enoe=read_dta("ENOE_SDEMT423.dta")
# Variable filtro
enoe <- enoe %>%
mutate(f = r_def == 0 & (c_res == 1 | c_res == 3) & eda >= 15 & eda <= 98)
enoe=enoe %>% filter(f==1)
#3. Preparar datos
#3.1 Subconjuntos de datos
# CLASE2=Condicion de ocupacion
# Codigos: 1=Ocupado, 2=Desocupado, 3=Disponible, 4=No disponible
# Convertir la variable a dato numerico
enoe$clase2=as.numeric(enoe$clase2)
# Filtrar la base, necesitamos a los ocupados CLASE2=1
ocupados=enoe%>%filter(clase2==1)
#3.2 Etiquetado de variables
# Codigos: 1=Hombre, 2=Mujer
ocupados <- ocupados %>%
mutate(sex = fct_recode(factor(sex),
Hombre = "1",
Mujer = "2"))
# pos_ocu=Posicion en la ocupacion
# Codigos: 1=Suborninado, 2=Independiente, 3=Disponible, 0=No aplica
ocupados <- ocupados %>%
mutate(pos_ocu = fct_recode(factor(pos_ocu),
"No Aplica" = "0",
"Suborninado" = "1",
"Empleadores" = "2",
"Cuenta propia" = "3",
"Sin pago" = "4"))
#### 4.2 Con 2 variables discretas ####
# Ahora vamos a guardar la definición de la base de datos y la variable en un elemento llamado g1
g1<-ggplot(ocupados) + aes(pos_ocu)
##### Opción 1: Pantalla dividida #####
g1+geom_bar(fill="yellowgreen")+
facet_wrap(~ sex)+
ggtitle("Ocupacion por sexo")+
xlab("Posicion de la ocupacion")+
ylab("Personas")
# agregar más detalles
g1+geom_bar(fill="yellowgreen")+
facet_wrap(~ sex)+
ggtitle("Ocupacion por sexo")+
xlab("Posicion de la ocupacion")+
ylab("Personas")+
geom_text(aes(label=..count..), stat='count',
position=position_dodge(0.5),
vjust=-0.5,
size=3.5)
##### Opción 2: Separa las barras #####
g2<-ggplot(ocupados,aes(x=pos_ocu,fill=sex))
g2+geom_bar(position = "dodge")+
ggtitle("Ocupacion por sexo")+
xlab("Posicion de la ocupacion")+
ylab("Personas")+
scale_fill_brewer(palette = "Blues")+
scale_y_continuous(labels = scales::comma)
# agregar más detalles
g2+geom_bar(position = "dodge", stat = "count") +
geom_text(aes(label = scales::comma(..count..)), stat = "count", position = position_dodge(width = 0.9), vjust = -0.5, size = 2.5) +
ggtitle("Ocupación por Sexo") +
xlab("Posición de la Ocupación") +
ylab("Personas") +
theme_minimal(base_size = 14) +
scale_fill_brewer(palette = "Blues", name = "Sexo") +
scale_y_continuous(labels = scales::comma)+
labs(caption = "Nota: población de 15 años y más\nFuente: ENOE cuarto trimestre 2023") +
theme_minimal(base_size = 14) +
theme(plot.title = element_text(hjust = 0.5),
plot.caption = element_text(hjust = 0, size = 9))
##### Opción 3: Apila los elementos uno encima del otro #####
# Preparación de los datos para calcular los porcentajes correctos
ocupados_r <- ocupados %>%
group_by(pos_ocu, sex) %>%
summarise(count = n(), .groups = 'drop') %>%
group_by(pos_ocu) %>%
mutate(percent = count / sum(count) * 100)
# Creación del gráfico con los datos preparados
g3 <- ggplot(ocupados_r, aes(x = pos_ocu, y = percent, fill = sex))
g3+geom_bar(stat = "identity", position = "dodge") +
geom_text(aes(label = scales::percent(percent / 100)), position = position_dodge(width = 0.9), vjust = -0.5, size = 2.5) +
ggtitle("Ocupación por Sexo") +
xlab("Posición de la Ocupación") +
ylab("Porcentaje") +
scale_fill_brewer(palette = "Blues", name = "Sexo") +
scale_y_continuous(labels = percent_format(scale = 1))
# Creación del gráfico con las cifras divididas entre 100
g3+geom_bar(stat = "identity", position = "fill") +
geom_text(aes(label = scales::percent(percent / 100, accuracy = 0.1)), position = position_fill(vjust = 0.5), size = 3.5) +
ggtitle("Ocupación por Sexo") +
xlab("Posición de la Ocupación") +
ylab("Porcentaje de Personas") +
scale_fill_brewer(palette = "Blues", name = "Sexo") +
scale_y_continuous(labels = scales::percent_format(accuracy = 1)) +
theme_minimal() +
theme(plot.title = element_text(hjust = 0.5))
Por su parte, al poner {r, echo=TRUE} se le pide que muestre el código y resultado en el render. {warning=FALSE} pide que no se muestren las advertencias, {message=FALSE} y {error=FALSE} también desactiva los errores y mensajes que aparecen en la consola
Nota: para que muestre los resultados se le quita la parte del código donde se apagan las gráficas: “rm(list=ls()); graphics.off(); options(warn=-1)”
#1. Cargar librerias
paquetes=c("scales","survey","ggsurvey","forcats","haven","readxl","readxl","fastDummies","readr", "dplyr", "foreign", "tidyr", "ggplot2", "writexl","openxlsx","gridExtra")
for (i in paquetes) {if (!require(i, character.only = TRUE)) {install.packages(i);library(i, character.only = TRUE)} else {library(i, character.only = TRUE)}}
#2. Directorio de trabajo
setwd("~/CURSOS/Curso_visulizacionR/CursoVisualR")
enoe=read_dta("ENOE_SDEMT423.dta")
# Variable filtro
enoe <- enoe %>%
mutate(f = r_def == 0 & (c_res == 1 | c_res == 3) & eda >= 15 & eda <= 98)
enoe=enoe %>% filter(f==1)
#3. Preparar datos
#3.1 Subconjuntos de datos
# CLASE2=Condicion de ocupacion
# Codigos: 1=Ocupado, 2=Desocupado, 3=Disponible, 4=No disponible
# Convertir la variable a dato numerico
enoe$clase2=as.numeric(enoe$clase2)
# Filtrar la base, necesitamos a los ocupados CLASE2=1
ocupados=enoe%>%filter(clase2==1)
#3.2 Etiquetado de variables
# Codigos: 1=Hombre, 2=Mujer
ocupados <- ocupados %>%
mutate(sex = fct_recode(factor(sex),
Hombre = "1",
Mujer = "2"))
# pos_ocu=Posicion en la ocupacion
# Codigos: 1=Suborninado, 2=Independiente, 3=Disponible, 0=No aplica
ocupados <- ocupados %>%
mutate(pos_ocu = fct_recode(factor(pos_ocu),
"No Aplica" = "0",
"Suborninado" = "1",
"Empleadores" = "2",
"Cuenta propia" = "3",
"Sin pago" = "4"))
#### 4.2 Con 2 variables discretas ####
# Ahora vamos a guardar la definición de la base de datos y la variable en un elemento llamado g1
g1<-ggplot(ocupados) + aes(pos_ocu)
##### Opción 1: Pantalla dividida #####
g1+geom_bar(fill="yellowgreen")+
facet_wrap(~ sex)+
ggtitle("Ocupacion por sexo")+
xlab("Posicion de la ocupacion")+
ylab("Personas")
# agregar más detalles
g1+geom_bar(fill="yellowgreen")+
facet_wrap(~ sex)+
ggtitle("Ocupacion por sexo")+
xlab("Posicion de la ocupacion")+
ylab("Personas")+
geom_text(aes(label=..count..), stat='count',
position=position_dodge(0.5),
vjust=-0.5,
size=3.5)
#### 4.2 Con 2 variables discretas ####
g1<-ggplot(ocupados) + aes(pos_ocu)
##### Opción 1: Pantalla dividida #####
g1+geom_bar(fill="yellowgreen")+
facet_wrap(~ sex)+
ggtitle("Ocupacion por sexo")+
xlab("Posicion de la ocupacion")+
ylab("Personas")
La fuente de las gráficas mostradas anteriormente es la Encuesta Nacional de Ocupación y Empleo ENOE del Instituto Nacional de Estadística y Geografía (INEGI).