-
Notifications
You must be signed in to change notification settings - Fork 2
Expand file tree
/
Copy pathC_soluciones.qmd
More file actions
305 lines (191 loc) · 9.18 KB
/
C_soluciones.qmd
File metadata and controls
305 lines (191 loc) · 9.18 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
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
## Soluciones de ejercicios {.appendix}
Este anexo detalla resultados validos para todos los ejercicios desde el capitulo 1 al 6. Recuerda que pueden existir mas de una manera de resolver los ejercicios de forma correcta.
### Capitulo 3 - Lectura de datos
::: ejercicio
En el portal de datos de Argentina encontramos muchos conjuntos de datos con informacion oficial. Vamos a descargar y leer un archivo de Excel.
1. Dirigirse a esta pagina web con datos abiertos: <https://datos.gob.ar/dataset/produccion-innovacion-productiva-empresas-que-mas-invierten-id-nivel-mundial>
2. Realizar los pasos necesarios para descargar el archivo de Excel del conjunto de datos "Las 50 empresas más innovadoras entre 2013 y 2019" de forma programatica.
3. Cargar el conjunto de datos en r y explorar su estructura con la función `str()`.
4. Contestar:
4.1 ¿Cuántas columnas y filas tiene el data.frame?
4.2 ¿Qué tipo de dato hay en cada columna? ¿el tipo de dato es correcto según el contenido que vez?
4.3 ¿Que funcion usaste para leer el archivo de Excel?
Al final del ejercicio deberías tener un archivo .qmd o .R con el código que lo resuelve. Nombrá el archivo siguiendo los consejos que vimos en clase.
:::
#### Soluciones
```{r, eval = FALSE}
# 1. Descargar el archivo de Excel
url <- "https://datos.produccion.gob.ar/dataset/369e2ef5-f8bc-4b37-a3e7-f7ad8d5fceb7/resource/64aa7c24-2adc-46f1-b60d-1d34e2c7dbee/download/las-50-empresas-mas-innovadoras-entre-2013-y-2019.xlsx"
download.file(url, destfile = "empresas-que-mas-invierten-en-innovacion.xlsx")
# 2. Leer el archivo de Excel
library(readxl)
empresas <- read_excel("empresas-que-mas-invierten-en-innovacion.xlsx")
# 3. Explorar la estructura del data.frame
str(empresas)
# 4. Contestar
# 4.1. Tiene 5 columnas y 50 fila
# 4.2. empresa es caracter, pais_origen es caracter, sector_productivo es caracter, inversion_acumulada_2013_2019_EUR es numerico y varion_porcentual_2013_2019 es numerico. Si el tipo de dato es correcto.
# 4.3 Se uso la funcion read_excel() del paquete readxl
```
## Capitulo 4 - Manipulación de datos ordenados I
::: ejercicio
Es hora de revisar lo que vimos hasta acá.
1. Descargá el archivo que se encuentra [en este link](https://github.com/rse-r/intro-programacion/blob/main/ejercicios/dplyr.qmd) y guardalo en tu proyecto de trabajo en clase.
2. Resolvé los ejercicios propuestos de lectura (yapa!) y de filtros. En algunos casos tendrías que reemplazar los `_____` con el código correspondiente. En otros casos el ejercicio te pedirá escribir el código desde cero.
3. El archivo tiene más ejercicios, pero no te adelantes. Vamos a ver esos temas a continuación.
:::
::: ejercicio
¿Te acordás del ejercicio que arrancaste cuando vimos filtros? Es hora de completarlo!
1. Completá los ejercicios de [este archivo](https://github.com/rse-r/intro-programacion/blob/main/ejercicios/dplyr.qmd) que ya deberías tener en tu proyecto.
2. Te vas a encontrar con ejercicios para practicar `summarise()` y `mutate()`. De nuevo, en algunos casos tendrías que reemplazar los `_____` con el código correspondiente. En otros casos el ejercicio te pedirá escribir el código desde cero.
3. Cuando hayas terminado, *knitea* el archivo para generar un html y ver como queda el resultado.
:::
### Soluciones
Este archivo incluye ejercicios para practicar como manipular datos usando dplyr. Es importante que guardes este archivo en el proyecto de RStudio que usas durante las clases.
Seguiremos trabajando con los datos de pingüinos.
Siempre arrancamos cargando las librerías que vamos a usar. Completá el código y corré el bloque de código para comenzar.
```{r, eval = FALSE}
# Cargá las librerias necesarias en este bloque de código
library(dplyr)
library(readr)
```
Es momento de leer los datos de pingüinos (si, también hay que practicar leer datos).
```{r, eval = FALSE}
# Lectura de datos de pinguinos
pinguinos <- read_csv(here::here("datos/pinguinos.csv"))
```
#### Filtrando datos
Completá el código y correlo para verificar el resultado.
¿Cuántos pingüinos tienen aletas de más de 225 mm?
```{r, eval = FALSE}
pinguinos |>
filter(largo_aleta_mm > 225)
```
¿Algún pingüino tiene un pico de exactamente 40.9 mm?
```{r, eval = FALSE}
pinguinos |>
filter(largo_pico_mm == 40.9)
```
¿Cuántos pingüinos hembra hay en la especie Papúa?
```{r, eval = FALSE}
pinguinos |>
filter(especie == "Papúa", sexo == "hembra")
```
#### Resumiendo los datos
¿Cuántos pingüinos hay en cada isla?
```{r, eval = FALSE}
pinguinos |>
group_by(isla) |>
summarise(n())
```
¿Todas las especies viven en las mismas islas?
```{r, eval = FALSE }
pinguinos |>
group_by(isla, especie) |>
summarise(n())
```
¿Cuánto pesa el pinguino más liviano y el más pesado de cada especie?
```{r, eval = FALSE}
pinguinos |>
group_by(isla, especie) |>
summarise(mas_liviano = min(masa_corporal_g, na.rm = TRUE),
mas_pesado = max(masa_corporal_g, na.rm = TRUE))
```
#### Transformando variables
Calculá la relación entre el alto y el largo del pico (alto_pico_mm/largo_pico_mm)
```{r, eval = FALSE}
pinguinos |>
mutate(pico = alto_pico_mm/largo_pico_mm)
```
Transformá todas las variables de mm a cm.
```{r, eval = FALSE}
pinguinos |>
mutate(largo_pico_cm = largo_pico_mm/10,
alto_pico_cm = alto_pico_mm/10,
largo_aleta_cm = largo_aleta_mm/10)
```
## Capitulo 6 - Graficado datos
::: ejercicio
Modificá el siguiente código para obtener el gráfico que se muestra más abajo.
```{r eval=FALSE}
paises |>
group_by(continente, _____) |>
summarise(esperanza_de_vida_media = mean(esperanza_de_vida)) |>
ggplot(aes(anio, ________________)) +
geom_point(aes(color = continente), size = 3, shape = _____) +
geom_smooth(color = continente)
```
:::
### Solucion grafico Esperanza de Vida
```{r, eval=FALSE}
paises |>
group_by(continente, anio) |>
summarise(esperanza_de_vida_media = mean(esperanza_de_vida)) |>
ggplot(aes(anio, esperanza_de_vida_media)) +
geom_smooth(aes(color = continente)) +
geom_point(aes(color = continente), shape = 8, size = 3)
```
::: ejercicio
Es hora de revisar lo que vimos hasta acá.
1. Descargá el archivo que se encuentra [en este link](https://github.com/rse-r/intro-programacion/blob/main/ejercicios/ggplot.qmd) y guardalo en tu proyecto de trabajo en clase.
2. Resolvé los ejercicios propuestos. En algunos casos tendrías que reemplazar los `_____` con el código correspondiente. En otros casos el ejercicio te pedirá escribir el código desde cero.
:::
### Soluciones - ejercicios ggplot
En este archivo vas a encontrar ejercicios para practicar cómo hacer gráficos con `ggplot2`.
En este caso vamos a usar datos que forman parte de un paquete llamado `datos`.
De hecho este paquete tiene muchas bases de datos en español.
Antes de empezar a trabajar recordá instalar este nuevo paquete y el paquete `lubridate` desde la consola.
```{r, eval = FALSE}
# Cargá ggplot2 y dplyr
library(ggplot2)
library(dplyr)
clima <- datos::clima #esta es otra manera de acceder a las funciones y datos de un paquete
```
Esta base de datos tiene datos de distintas variables meterológicas en 3 aeropuertos (en la columna origen) a lo largo de un año.
Revisa que columnas incluyen y como se llaman en el siguiente bloque de código.
```{r, eval = FALSE}
str(clima)
```
Habrás notado que no hay una única columna con la fecha y la hora, está separada en varias columnas, vamos a crear esta columna con `mutate()` y la función `make_datetime()` de lubridate.
```{r, eval = FALSE}
clima <- clima |>
mutate(fecha_hora = lubridate::make_datetime(anio, mes, dia, hora))
```
¿Cómo es la relación entre el punto de rocio (a que temperatura el vapor de agua se condensa) y la humedad?
```{r, eval = FALSE}
ggplot(clima, aes(punto_rocio, humedad)) +
geom_point()
```
Sumá un suavizado para visuzalizar mejor la relación. Usá el método lm.
```{r, eval = FALSE}
ggplot(clima, aes(punto_rocio, humedad)) +
geom_point() +
geom_smooth(method = "lm")
```
Veamos ahora como cambia la temperatura a lo largo del año parada estación. El gráfico resultante debería tener el tiempo en el eje x y mostrar 3 lineas de distinto color, una para cada estación.
¿En qué parte del mundo están estos aeropuertos?
```{r, eval = FALSE}
ggplot(clima, aes(fecha_hora, temperatura)) +
geom_line(aes(color = origen))
```
::: ejercicio
Generá boxplots para analizar como se comporta el `precio` según la `claridad` para cada tipo de `corte` como se ve acá.
:::
### Solucion Bloxplots
```{r, eval = FALSE}
ggplot(diamantes, aes(claridad, precio, fill = claridad)) +
geom_boxplot() +
facet_wrap(~corte)
```
## Capitulo 7 - Manipulacion de Datos II
::: ejercicio
* Creá una nueva tabla, llamada `paises_superduper_ancho` que tenga una columna para cada variable, anio y país. (Consejo: la tabla final tiene que tener 5 filas).
* ¿Cómo es la tabla más ancha posible que podés generar con estos datos? ¿Cuántas filas y columnas tiene?
:::
### Solucion
```{r, eval = FALSE}
paises_superduper_ancho <- pivot_wider(paises_largo,
names_from = c(variable, anio, pais),
names_sep = "-",
values_from = valor)
```