Read all per-sanctuary per-year CSVs from climate-dashboard-app/data_local/erddap_precip/ and consolidate into a single CSV matching the copernicus.csv format.
Code
nms_dirs <-dir_ls(dir_erddap_precip, type ="directory") |>keep(\(x) !str_detect(basename(x), "-")) # exclude MBNMS-david, MBNMS-maind <-map_dfr(nms_dirs, \(nms_dir) { nms_code <-basename(nms_dir) csvs <-dir_ls(nms_dir, glob ="*.csv")map_dfr(csvs, \(csv_path) {read_csv(csv_path) |>mutate(nms = nms_code,dataset ="IMERG_monthly_global_precip",var =str_replace(lyr, "\\|.*", ""),stat ="mean",value = mean) |>select(nms, dataset, var, time, stat, value) })}) |>arrange(nms, dataset, var, time, stat)write_csv(d, results_csv)
Rows: 4662
Sanctuaries: 14 (CBNMS, CINMS, CPNMS, FGBNMS, FKNMS, GFNMS, GRNMS, HIHWNMS, MBNMS, MNMS, NMSAS, OCNMS, SBNMS, TBNMS)
Time range: 1998-01-01 to 2025-09-01
Variables: precipitation
Stats: mean
Datasets: IMERG_monthly_global_precip
Code
datatable(d)
Source Code
---title: "ERDDAP Precipitation for Sanctuaries"format: html: toc: true embed-resources: true code-fold: true code-tools: trueexecute: echo: true message: true warning: true error: trueeditor_options: chunk_output_type: console---<!--PROMPT to Claude CODE 2026-02-09:I fetched another dataset erddap_precip (see @/climate-dashboard-app/meta/erddap_precip.yml used as the main input parameter for @climate-dashboard-app/process/erddap.qmd, which gets initiated by @climate-dashboard-app/process/update_data.R) that I want to pull into the data for this project to look similar to @eco-indicators/data/copernicus.csv, so @eco-indicators/data/erddap.csv makes sense. Use the same column names to transform the data under @climate-dashboard-app/data_local/erddap_precip.-->```{r}#| label: setup#| warning: falselibrarian::shelf( dplyr, DT, fs, glue, here, purrr, readr, stringr, tidyr,quiet = T)options(readr.show_col_types = F)dir_erddap_precip <-here("../climate-dashboard-app/data_local/erddap_precip")results_csv <-here("data/erddap.csv")```## Read & transformRead all per-sanctuary per-year CSVs from `climate-dashboard-app/data_local/erddap_precip/` and consolidate into a single CSV matching the `copernicus.csv` format.```{r}#| label: read_transformnms_dirs <-dir_ls(dir_erddap_precip, type ="directory") |>keep(\(x) !str_detect(basename(x), "-")) # exclude MBNMS-david, MBNMS-maind <-map_dfr(nms_dirs, \(nms_dir) { nms_code <-basename(nms_dir) csvs <-dir_ls(nms_dir, glob ="*.csv")map_dfr(csvs, \(csv_path) {read_csv(csv_path) |>mutate(nms = nms_code,dataset ="IMERG_monthly_global_precip",var =str_replace(lyr, "\\|.*", ""),stat ="mean",value = mean) |>select(nms, dataset, var, time, stat, value) })}) |>arrange(nms, dataset, var, time, stat)write_csv(d, results_csv)```## Results```{r}#| label: show_resultsn_sanctuaries <-n_distinct(d$nms)time_min <-min(d$time)time_max <-max(d$time)n_rows <-nrow(d)glue("Rows: {n_rows} Sanctuaries: {n_sanctuaries} ({paste(sort(unique(d$nms)), collapse = ', ')}) Time range: {time_min} to {time_max} Variables: {paste(unique(d$var), collapse = ', ')} Stats: {paste(unique(d$stat), collapse = ', ')} Datasets: {paste(unique(d$dataset), collapse = ', ')}")``````{r}#| label: show_tabledatatable(d)```