-
Notifications
You must be signed in to change notification settings - Fork 12
/
10-tibble.Rmd
150 lines (105 loc) · 2.95 KB
/
10-tibble.Rmd
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
# Tibbles
```{r, include = FALSE}
library(tidyverse)
library(datos)
```
## 10.5 Ejercicios{-#ejercicios-105}
1. ¿Cómo puedes saber si un objeto es un tibble? (Sugerencia: imprime `mtautos` en la consola, que es un data frame clásico).
<div class="solucion">
<h3>Solución</h3>
Los objetos que son tibbles lo indican cuando se imprimen en la consola. Por ejemplo, `vuelos` es un tibble:
```{r}
vuelos
```
`mtautos`, en cambio, es un data frame clásico:
```{r}
mtautos
```
También se puede utilizar la función `is_tibble()` para comprobar si un objeto lo es:
```{r}
is_tibble(vuelos)
is_tibble(mtautos)
```
</div>
2. Compara y contrasta las siguientes operaciones aplicadas a un `data.frame` y a un tibble equivalente. ¿Qué es diferente? ¿Por qué podría causarte problemas el comportamiento por defecto del data frame?
```{r, eval = FALSE}
df <- data.frame(abc = 1, xyz = "a")
df$x
df[, "xyz"]
df[, c("abc", "xyz")]
```
<div class="solucion">
<h3>Solución</h3>
```{r}
df <- data.frame(abc = 1, xyz = "a")
df$x
df[, "xyz"]
df[, c("abc", "xyz")]
```
Ahora, convirtamos `df` en un tibble:
```{r}
tbl <- as_tibble(df)
```
Y apliquemos las mismas operaciones:
```{r}
df$x
df[, "xyz"]
df[, c("abc", "xyz")]
```
</div>
3. Si tienes el nombre de una variable guardada en un objeto, p.e., `var <- "horario_salida"`, ¿cómo puedes extraer esta variable de un tibble?
<div class="solucion">
<h3>Solución</h3>
Para exatraerla como tibble:
```{r, eval = FALSE}
vuelos[,var]
```
Para extraer los valores
```{r, eval = FALSE}
vuelos[[var]]
```
</div>
4. Practica referenciar nombres no sintácticos en el siguiente data frame:
```{r}
molesto <- tibble(
`1` = 1:10,
`2` = `1` * 2 + rnorm(length(`1`))
)
```
1. Extrayendo la variable llamada `1`.
```{r}
molesto$`1`
```
o
```{r}
molesto[["1"]]
```
2. Generando un gráfico de dispersión de `1` vs `2`.
```{r}
ggplot(molesto, aes(x = `1`, y = `2`)) + geom_point()
```
3. Creando una nueva columna llamada `3` que sea el resultado de la división de `2` por `1`.
```{r}
molesto <- mutate(molesto, `3` = `2` / `1`)
```
4. Renombrando las columnas como `uno`, `dos` y `tres`.
```{r}
rename(molesto, uno = `1`, dos = `2`, tres = `3`)
```
5. ¿Qué hace `tibble::enframe()`? ¿Cuándo lo usarías?
<div class="solucion">
<h3>Solución</h3>
La función `enframe()` del paquete __tibble__ permite convertir vectores nombrados o listas en _data frames_ de una o dos columnas. Las columnas creadas tienen por nombre `name` (nombres) y `value` (valor).
```{r}
enframe(c(a = 5, b = 7, c = 9, d = 11))
```
</div>
6. ¿Qué opción controla cuántos nombres de columnas adicionales se muestran al pie de un tibble?
<div class="solucion">
<h3>Solución</h3>
A través del argumento `n_extra` se puede controlar cuántas columnas adicionales mostrar.
```{r}
print(vuelos, n_extra = 3)
```
En este [enlace](https://tibble.tidyverse.org/reference/formatting.html) puedes ver más información sobre las opciones para imprimir tibbles.
</div>