Le présent document est un guide pour obtenir, à partir de la base Aspe, les résultats de pêche sous différentes formes :
Les analyses faisant appel aux mesures réalisées sur chaque individu (masse, longueur, pathologies …) ne sont pas abordées ici.
Le chargement du package {aspe} est supposées déjà réalisé (voir ce support).
library(aspe)
library(tidyverse)
load(file = "raw_data/tables_sauf_mei_2021_10_21_11_44_01.RData")
Les données dont il y a besoin sont dispersées dans diverses tables. C’est la tableau “passerelle” qui sert à les relier.
passerelle <- mef_creer_passerelle()
lot_poissonsoperationprelevement_elementairestationOn effectue donc une série de jointures “gauches” pour compléter la passerelle de ces données. En général, comme seuls certains champs des tables sont nécessaires, on effectue des sélections de colonnes pour ne pas surcharger les dataframe.
Le message ci-dessous indique les noms des champs sur lesquels les jointures entre tables ont été opérées.
Il peut être utile de filtrer les données en amont des calculs pour éviter de mélanger des choses peu comparables et alléger les traitements.
Outre le filtrage régional, dans l’exemple ci-dessous, on ne va retenir que les pêches complètes, réalisées à pied.
# vecteur avec les numéros de département
depts_bzh <- c(22, 29, 35, 56)
# filtrage de la passerelle sur les identifiants de stations retenus
data <- passerelle %>%
mef_ajouter_dept() %>%
filter(dept %in% depts_bzh)
Récupération des champs nécessaires dans les tables operation_description_peche et ref_moyen_prospection. Cette dernière sert juste à faire correspondre un code avec un intitulé.
| mop_id | mop_libelle |
|---|---|
| 1 | A pied |
| 2 | En bateau |
| 3 | Mixte |
| 4 | Non renseigné |
La fonction mef_ajouter_moyen_prospection() permet de compléter la table passerelle avec le moyen de prospection pour ensuite filtrer les données :
data <- data %>%
mef_ajouter_moyen_prospection() %>%
filter(mop_libelle == 'A pied')
On peut supprimer les colonnes qui ne servent plus.
data <- data %>%
select(-mop_libelle)
Dans la table ref_protocole on peut voir que les pêches complètes correspondent à la variable pro_id égale à 1. Pour filtrer plus rapidement que montré dans les exemple ci-dessus, on peut filtrer sur cette méthode.
data <- data %>%
left_join(y = operation %>%
select(ope_id,
pro_id = ope_pro_id)) %>%
filter(pro_id == 1) %>%
select(-pro_id)
On complète les données par les effectifs, qui sont dans la table lot_poissons et on remplace les codes espèces numériques par les anciens codes à trois lettres qui sont plus interprétables. La correspondance est indiquée dans la table ref_espece.
data <- data %>%
left_join(y = lot_poissons %>%
select(lop_id,
esp_id = lop_esp_id,
lop_effectif)) %>%
left_join(y = ref_espece %>%
select(esp_id,
esp_code_alternatif)) %>%
select(-esp_id)
data <- data %>%
left_join(y = operation %>%
select(ope_id, ope_surface_calculee))
Agrégation par opération et espèce (somme des effectifs par espèce pour chaque opération).
data <- data %>%
group_by(ope_id,
esp_code_alternatif,
ope_surface_calculee) %>%
summarise(effectif = sum(lop_effectif)) %>%
ungroup()
Calcul des densités (en individus pour 1000 m2).
data <- data %>%
mutate(densite_p_1000_m2 = 1000 * effectif / ope_surface_calculee) %>%
select(-ope_surface_calculee) # suppressio de la variable désormais inutile
Affichage du résultat.
data %>%
DT::datatable(rownames = FALSE)
On peut simplement en déduire la richesse spécifique, par opération.
richesse <- data %>%
group_by(ope_id) %>%
summarise(richesse = n_distinct(esp_code_alternatif))
Il peut être utile de présenter les tableaux de données faunistiques avec une colonne par espèce et une ligne par opération.
densites_1col_p_sp <- data %>%
select(-effectif) %>%
pivot_wider(names_from = esp_code_alternatif,
values_from = densite_p_1000_m2)
Pour ordonner les espèces par ordre alphabétique dans le dataframe, on procède en deux temps :
dataframe selon ce vecteurnoms_esp_ordonnes <- densites_1col_p_sp %>%
select(-ope_id) %>% # sélection des colonnes par espèce
names() %>% # récupération de leurs noms
sort() # rangement alphabétique
densites_1col_p_sp <- densites_1col_p_sp %>%
select(ope_id,
all_of(noms_esp_ordonnes)) %>% # mise des colonnes dans l'ordre souhaité
mutate_at(all_of(noms_esp_ordonnes),
~ifelse(is.na(.), 0, .)) # remplacement des données manquantes par 0
Visualisation des premières lignes et colonnes.
densites_1col_p_sp %>%
select(1:7) %>%
head(20) %>%
DT::datatable(rownames = FALSE)
Si l’on veut juste les présence / absence.
pa_1col_p_sp <- densites_1col_p_sp %>%
mutate_at(all_of(noms_esp_ordonnes),
~ifelse(. == 0, 0, 1))
Visualisation des premières lignes et colonnes.
pa_1col_p_sp %>%
select(1:7) %>%
head(20) %>%
DT::datatable(rownames = FALSE)