-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathP2.qmd
More file actions
199 lines (130 loc) · 4.79 KB
/
P2.qmd
File metadata and controls
199 lines (130 loc) · 4.79 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
---
title: "Taller 2"
---
```{r}
if (!require("pacman")) install.packages("pacman") # instala pacman si se requiere
pacman::p_load(tidyverse, readxl, writexl, haven, sjlabelled, pollster,
janitor, magrittr) #carga los paquetes listados
```
## Datos
Recuerda, estos los puedes descargar desde el repo de la clase que hizo la profe <https://github.com/FCPyS/eacsii2023/tree/main/datos>
```{r}
enoet322socdem_tiempo <- haven::read_dta("datos/enoet322socdem_tiempo.dta")
```
## Etiquetas y cómo usarlas
Podemos ver que los objetos "data.frame"(*spoiler*, ya hablaremos de ellos)
```{r}
class(enoet322socdem_tiempo$sex)
```
## Ejemplo de etiquetado
Para que se vea mejor nuestro tabulado, sería bueno que nuestras variables tuvieran etiqueta. Para ello utilizaremos el paquete "sjlabelled"
```{r}
# tabulado simple
enoet322socdem_tiempo %>%
dplyr::mutate(sex=sjlabelled::as_label(sex)) %>%
janitor::tabyl(sex)
# tabulado con factor de expansión
enoet322socdem_tiempo %>%
dplyr::mutate(sex=sjlabelled::as_label(sex)) %>%
pollster::topline(sex, weight = fac_tri)
```
## Descriptivos para variables cuantitativas
Vamos a empezar a revisar los gráficos para variables cuantitativas.
### Medidas numéricas básicas
5 números
```{r}
summary(enoet322socdem_tiempo$eda) ## eda
```
Con pipes se pueden crear "indicadores" de nuestras variables es un tibble
```{r}
enoet322socdem_tiempo %>%
summarise(nombre_indicador=mean(eda, na.rm=T))
```
### Histograma básico
```{r}
hist(enoet322socdem_tiempo$eda)
```
Le podemos modificar el título del eje de las x y de las y
```{r}
hist(enoet322socdem_tiempo$eda,
main="Histograma de las edades de los entrevistados",
xlab="Años cumplidos", ylab="Frecuencia")
```
## Tabulados bivariados
```{r}
# tabla cruzada sin factor
enoet322socdem_tiempo %>%
dplyr::mutate(sex=sjlabelled::as_label(sex)) %>%
dplyr::mutate(niv_ins=sjlabelled::as_label(niv_ins)) %>%
janitor::tabyl(niv_ins, sex)
# tabulado con factor de expansión
enoet322socdem_tiempo %>%
dplyr::mutate(sex=sjlabelled::as_label(sex)) %>%
dplyr::mutate(niv_ins=sjlabelled::as_label(niv_ins)) %>%
pollster::crosstab(niv_ins, sex, weight = fac_tri)
```
## Ojeando
```{r}
dplyr::glimpse(enoet322socdem_tiempo)
dplyr::glimpse(enoet322socdem_tiempo[,20:30]) # en corchete del lado derecho podemos ojear columnas
```
Podemos hacer un tipo "labelbook", usando una función que viene de la librería "sjlabelled", "get_labels". Funciona para toda la base o para columnas, o para variables.
```{r}
#print(get_labels(enoet322socdem_tiempo)) #todas
print(get_labels(enoet322socdem_tiempo[, 20:30])) #de las segundas 10 variables
```
En singular nos da las etiquetas de las variables, no de los valores:
```{r}
#print(get_label(enoet322socdem_tiempo)) #todas
print(get_label(enoet322socdem_tiempo[, 1:10])) #de las primeras 10 variables
print(get_label(enoet322socdem_tiempo$eda)) #
```
### Selección de casos y de variables
Poco a poco vamos comprendiendo más la lógica de R. Hay varias "formas" de programar. Por lo que no te asustes si varios códigos llegan al mismo resultado
Para revisar el contenido de un data frame podemos usar, como lo hicimos anteriormente, el formato basededatos\$var o usar corchete, checa como estas cuatro formas tan el mismo resultado.
```{r}
x<-enoet322socdem_tiempo$eda
x<-enoet322socdem_tiempo[["eda"]] # ¡Ojo con las comillas!
x<-enoet322socdem_tiempo[,13]
x<-enoet322socdem_tiempo[,"eda"]
```
Ahora, con el formato de dplyr podemos llegar a lo mismo
```{r}
x<-enoet322socdem_tiempo %>%
select(eda)
```
## Importación desde Excel
El paquete más compatible con RStudio es readxl. A veces, otros paquetes tienen más problemas de configuración entre R y el Java.
```{r 3}
ICE_2022 <- readxl::read_excel("datos/ICE_2022.xlsx", sheet = "para_importar")
```
Como el nombre de paquete lo indica, sólo lee. Para escribir en este formato, recomiendo el paquete "writexl". Lo instalamos anteriormente.
Si quisiéramos exportar un objeto a Excel
```{r 5}
writexl::write_xlsx(ICE_2022, path = "mi_exportacion.xlsx")
```
## Limpieza de nombres
A este data.frame podemos limpiarle los nombres, como vemos, sus nombres están "raros". Esto pasa cuando usamos espacios, caracteres especiales o nombres muy largos.
Veamos los nombre
```{r}
ICE_2022 %>%
names()
```
los vamos a limpiar:
```{r}
ICE_2022 %>%
janitor::clean_names() %>%
names()
```
Pero! Tenemos que volver a declarar el objeto con los cambios para que se guarden en el objeto
```{r}
ICE_2022<-ICE_2022 %>%
janitor::clean_names()
```
## Otro operador
Esta operación de guardar las acciones del *pipe* `%>%` en el mismo objeto del que inician, se puede hacer con otro operador muy parecido `%<>%`
```{r}
ICE_2022 %<>%
janitor::clean_names()
```
¡Llevemos esta base a esquisse!