Skip to content

Commit

Permalink
Modificacion de tema de union de tablas
Browse files Browse the repository at this point in the history
  • Loading branch information
sofiazorrilla committed Sep 13, 2024
1 parent 6a91061 commit 80a941a
Show file tree
Hide file tree
Showing 2 changed files with 1 addition and 82 deletions.
1 change: 1 addition & 0 deletions .Rproj.user/shared/notebooks/paths
Original file line number Diff line number Diff line change
Expand Up @@ -6,3 +6,4 @@
/home/sofia/Documentos/talleres/data.table_long/tema4.qmd="E7D45C99"
/home/sofia/Documentos/talleres/data.table_long/tema5.qmd="6A1D7946"
/home/sofia/Documentos/talleres/data.table_long/tema6.qmd="C5FCB2E4"
/home/sofia/Documentos/talleres/data.table_long/tema7.qmd="ACBF97FD"
82 changes: 0 additions & 82 deletions tema7.qmd
Original file line number Diff line number Diff line change
Expand Up @@ -71,85 +71,3 @@ dt2[dt1, on = "id"]
```


## Ejercicio

Queremos averiguar cuántos registros y de cuántas especies de algún género de plantas hay de cada categoría de conservación (IUCN) para México.

Con lo aprendido en los temas anteriores podemos generar un subconjunto de la tabla de registros que solo tenga los registros de un género (por ejemplo para el género Quercus).

**Paso 1.** Filtra la tabla de registros de plantas para México para quedarte con la información de algún género que te guste.

Además, encontramos que utilizando el paquete `rredlist` podemos buscar el estatus de conservación de la IUCN para algunas especies que nos interesen con la función `rl_search`.

El siguiente código muestra una forma para obtener el estatus de conservación. Lo que hace es buscar los resultados en la base de datos de la lista roja para cada especie en el subconjunto de registros de encinos de la tabla de registros de plantas para México.

```{r}
#| eval: false
library("rredlist")
library("magrittr")
data = fread("data/data_quercus.csv")
token = "9bb4facb6d23f48efbf424bb05c0c1ef1cf6f468393bc745d42179ac4aca5fee"
sp_list = unique(data$species)
sp_list = sp_list[which(sp_list != "")] # quitar elementos vacios
red_list = list()
for (i in sp_list) {
red_list[[i]] <- rl_search(i, key = token)$result
}
# seleccionar columnas útiles
iucn_data = do.call(rbind,red_list) %>% select(scientific_name, category, population_trend)
write.csv(iucn_data, "data/iucn_data.csv", row.names = F)
```

**Paso 2:** Utiliza el código anterior para generar la tabla de estados de conservación para las especies del género que elegiste.

**Paso 3:** Une la tabla de los registros del genero que escogiste con la de estados de conservación

**Paso 4:** Haz un resumen del número de registros y el número de especies que hay para cada estado de conservación. Por ejemplo, para los encinos los resultados son los siguientes:

```{r}
#| echo: false
data = fread("data/data_quercus.csv")
dataIUCN = fread("data/iucn_data.csv")
setnames(dataIUCN, "scientific_name", "species") # renombrar la columna de scientific_name a species porque es la clave que ambas tablas tienen en comun
# Hacer un left join para añadir la información de la iucn a la tabla de datos
join = data[dataIUCN, on = "species"]
# Hacer el resumen, primero contando los registros agrupando por especie y por categoría. Después, utilizando una cadena y solo agrupamos por categoría, la suma de las filas dentro de un grupo sería el número de registros que pertenecen a la categoría y el número de filas de cada grupo corresponde al número de especies en la categoría.
join[,.N,by=.(species,category)][,.(numero_registros = sum(N),numero_sp = .N),by = category] |> knitr::kable()
```

::: {.callout-note collapse="true"}
## Respuesta

```{.r}
#| echo: false
data = fread("data/data_quercus.csv")
dataIUCN = fread("data/iucn_data.csv")
setnames(dataIUCN, "scientific_name", "species") # renombrar la columna de scientific_name a species porque es la clave que ambas tablas tienen en comun
# Hacer un left join para añadir la información de la iucn a la tabla de datos
join = data[dataIUCN, on = "species"]
# Hacer el resumen, primero contando los registros agrupando por especie y por categoría. Después, utilizando una cadena y solo agrupamos por categoría, la suma de las filas dentro de un grupo sería el número de registros que pertenecen a la categoría y el número de filas de cada grupo corresponde al número de especies en la categoría.
join[,.N,by=.(species,category)][,.(numero_registros = sum(N),numero_sp = .N),by = category]
```
:::

0 comments on commit 80a941a

Please sign in to comment.