-
Notifications
You must be signed in to change notification settings - Fork 0
/
tema3.qmd
219 lines (137 loc) · 4.83 KB
/
tema3.qmd
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
---
title: "Filtros y selección de columnas"
format:
html:
page-layout: full
---
```{r}
#| echo: false
#| warning: false
library(tidyverse)
library(data.table)
```
# Operaciones sobre las filas
## Seleccionar por índices
Similar a como se seleccionan filas en un data.frame, en un objeto data.table se pueden seleccionar filas utilizando rangos de índices. En los siguientes dos ejemplos se muestra como seleccionar las primeras dos filas de la tabla de registros.
```{r}
#| echo: false
#| warning: false
data = fread("data/head_registros.csv")
```
```{.r}
library(data.table)
data = fread("data/plantae_mexico_conCoords_specimen.csv")
```
```{r}
data[1:2]
```
<br>
**Nota:** Cuando solo estamos seleccionando filas no es necesario incluir la coma al final.
```{r}
data[1:2,]
```
<br>
## Filtrar filas
De acuerdo con la sintaxis del paquete, el espacio i es el lugar en el que se pueden realizar operaciones sobre las filas como los filtros. Por ejemplo, utilizando la tabla de registros de especies de plantas podríamos estar interesados en solo seleccionar aquellos registros que pertenezcan al género Quercus.
```{.r}
data_quercus <- data[genus == "Quercus",]
dim(data_quercus)
```
```{r}
#| echo: false
data_quercus <- fread("data/data_quercus.csv")
dim(data_quercus)
```
O podríamos estar interesadas en seleccionar solo los registros más viejos, los que fueron colectados antes de 1950.
```{.r}
data_quercus_viejos <- data[genus == "Quercus" & year <= 1950,]
dim(data_quercus_viejos)
```
```{r}
#| echo: false
data_quercus_viejos <- data_quercus[year <= 1950, ]
dim(data_quercus_viejos)
```
<br>
## Ordenar filas
Otra función que se puede realizar en el espacio de las filas es ordenarlas. Por ejemplo, podríamos ordenar la tabla de registros del género Quercus por estado en orden alfabético.
```{r}
# Ordenar los datos de la tabla de registros de Quercus por estado en orden alfabetico
ordered_data = data_quercus[order(stateProvince)]
# seleccionar la columna de estado como vector y seleccionar los valores únicos
# mostrar solo los primeros valores
unique(ordered_data$stateProvince) |> head()
```
::: {.callout-note collapse="true"}
## Reto
1. Carga el archivo de registros de plantas utilizando la función fread que revisamos en el tema anterior
2. Utiliza un filtro para quedarte con las filas que pertenezcan a un género o especie que te guste
3. Ordena de manera descendente por año
Pregunta:
¿De qué año son los registros más nuevos y más viejos de la especie que escogiste? (selecciona utilizando rangos la primera y la última fila de la tabla)
:::
::: {.callout-note collapse="true"}
## Respuesta
```{.r}
library(data.table)
data = fread("data/plantae_mexico_conCoords_specimen.csv", quote="")
data_quercus <- data[genus == "Quercus" & !is.na(year),]
data_quercus_ordenado <- data_quercus[order(-year)]
# Una función útil en el paquete es la función .N que te permite guardar el número de observaciones en el grupo actual. En este caso solo tenemos un solo grupo y por lo tanto guarda el número de filas en la tabla.
data_quercus_ordenado[c(1, nrow(data_quercus_ordenado)),]$year
```
```{r}
#| echo: false
data_quercus[!is.na(year),][order(-year)][c(1,.N)]$year
```
:::
<br>
<br>
# Operaciones sobre las columnas
```{r}
#| echo: false
data = fread("data/sub_100000_plantae_mexico_conCoords_specimen.csv")
```
## Seleccionar columnas por índice
De acuerdo con la sintaxis del paquete, el espacio j nos permite realizar operaciones sobre las columnas. Una de esas operaciones es la selección de columnas.
Se pueden seleccionar por medio de índices:
```{r}
data[,7:8,]
```
## Seleccionar columnas por nombre
```{r}
```
Se pueden seleccionar las columas por nombre y regresar como vector:
```{r}
data[,species] |> head()
```
Se pueden seleccionar las columnas usando una lista y regresar como tabla:
```{r}
data[,list(family,genus,species)]
```
Un atajo para no escribir `list()` es `.()`:
```{r}
data[,.(family,genus,species)]
```
Para seleccionar columnas guardadas en una variable se puede utilizar el prefijo `..`:
```{r}
variables <- c("family","genus","species")
data[ , ..variables]
```
::: {.callout-note collapse="true"}
## Reto
1. Selecciona las columnas que contengan información acerca de la ubicación geográfica de los registros.
:::
::: {.callout-note collapse="true"}
## Respuesta
info_geografica <- c("countryCode", "stateProvince", "decimalLatitude", "decimalLongitude", "coordinateUncertaintyInMeters", "elevation")
```{r}
vars_info_geografica <- c("countryCode", "stateProvince", "decimalLatitude", "decimalLongitude", "coordinateUncertaintyInMeters", "elevation")
data[,..vars_info_geografica,]
```
:::
## Renombrar columnas
En el espacio de operaciones sobre las columnas también se pueden renombrar las columnas.
```{r}
data[, .(especie = species, genero = genus)]
```