From a1f41a9d3a7b7ce659bdf4d966b02e070f44bd2b Mon Sep 17 00:00:00 2001 From: Alex Spina Date: Sat, 7 Sep 2024 18:04:07 +0100 Subject: [PATCH] explaining data naming --- README.md | 124 ++++++++++++++++++++++++++++++- data/1tableoftables.xlsx | Bin 9088 -> 0 bytes inst/extdata/1tableoftables.xlsx | Bin 0 -> 9447 bytes 3 files changed, 122 insertions(+), 2 deletions(-) delete mode 100644 data/1tableoftables.xlsx create mode 100644 inst/extdata/1tableoftables.xlsx diff --git a/README.md b/README.md index 2653cc3..4db7e18 100644 --- a/README.md +++ b/README.md @@ -27,10 +27,11 @@ This package stores all Applied Epi data across books, case studies, courses and - [ ] download/save dataset locally function (based on *tableoftables*) - [ ] data dictionary for a dataset: start with wrapper for [{datadict}](https://github.com/epicentre-msf/datadict) as demo, then either consider pulling parts to {epidict} or offer them help to get on CRAN. - if decide to help w/ {datadict} then {epidict} would just become a fake data generator. + - odk example dictionary from [xlsxform](https://docs.getodk.org/xlsform/) - [x] function which uses a data dict to create the description section in roxygen for a dataset - [ ] in phase 2 could build helper functions that create the description file from *tableoftables* (then the user just needs to edit an excel file) - [ ] unit testing for functions - - could pull some from [{gapminder}](https://github.com/jennybc/gapminder/) + - ?pull snapshots bit from [{gapminder}](https://github.com/jennybc/gapminder/) re changes to datasets ### Documentation - description file for each dataset in pkg @@ -51,4 +52,123 @@ This package stores all Applied Epi data across books, case studies, courses and - read in the file with 'rio' and 'system.file' - make edits as needed - save with usethis::usedata() - - if adding an .rda file: \ No newline at end of file + - if adding an .rda file: + + + +# Data Entry Guide for Dataset Metadata + +Below is a table explaining how to fill in each variable in the dataset +metadata Excel sheet (1tablesoftables.xlsx). This guide helps ensure +consistency and completeness when adding new datasets to your collection. + +| **Variable** | **Description** | +|-----------------------|------------------------------------| +| **name** | The filename of the dataset as it | +| | appears in the `inst/extdata` | +| | directory, **without** the file | +| | extension. This should be unique | +| | within the dataset group. Use | +| | consistent and descriptive names | +| | without spaces | +| | (e.g., `AJS_AmTiman`, | +| | `mortality_survey`). | +| **type** | The category or type of the | +| | dataset (e.g., `linelist`, | +| | `population`, `shape`, `survey`, | +| | `dictionary`). | +| **extension** | The file extension (e.g., `xlsx`, | +| | `zip`). | +| **type_version** | Used to identify the *original* | +| | data set and associated child data | +| | Increment when format or variables | +| | change. As there may be multiple | +| | linelists in one group, this would | +| | increment with the type. | +| **data_version** | Used to identify the *original* | +| | data set and associated child data | +| | Increment when format or variables | +| | change. Ensure you document changes| +| | in the appropriate 'data-raw' file.| +| **language** | Language code using [ISO 639-1 | +| | codes](https://en.wikipedia.org/ | +| | wiki/List_of_ISO_639-1_codes). | +| | (e.g., `en`, `fr`). | +| **country** | Country code using [ISO 3166-1 | +| | alpha-3 codes](https://en. | +| | wikipedia.org/wiki/ISO_3166-1_ | +| | alpha-3). (e.g., `tcd`). | +| **scale** | Geographic scale (e.g. | +| | `subnational`, `national` | +| | or `international`). | +| **subject** | Main subject of the dataset (e.g., | +| | `acute jaundice syndrome`). | +| **context** | Context of the data (e.g., | +| | `outbreak`, `survey`). | +| **fictional** | Is the dataset fictional (`yes`) | +| | or real (`no`)? | +| **year** | Year the data was collected (e.g., | +| | `2016`). The *earliest* year in | +| | the dataset. | +| **description** | Brief description of the dataset. | +| | Ideally copy from roxyen docs | +| **usage** | Intended usage (e.g., `{sitrep} | +| | walkthroughs`, `training`). | +| **license** | License for dataset (e.g., `gpl3`, | +| | `mit`). | +| **group_identifier** | *DO NOT EDIT* +| | High-level identifier combining | +| | subject, context, country, and | +| | year (e.g., | +| | `acute_jaundice_syndrome_outbreak_| +| | tcd_2016`). | +| **unique_identifier** | *DO NOT EDIT* | +| | Combines `group_identifier`, type,| +| | type_version, context, and year to| +| | create a unique identifier (e.g., | +| | `acute_jaundice_syndrome_outbreak_| +| | tcd_2016_linelist_1`). | + + + + + +For example, when adding an Ebola dataset, you would enter the information as +shown below. The original dataset (whether it's from {outbreaks} or another source) +would be considered 'type_version' 1. If it’s the only linelist in its group, it +remains 'type_version' 1. If a completely different linelist is added (not just an +edited version), increment the 'type_version' accordingly. + +For any changes to the data (such as cleaning or changing nums of rows or columns), +increment the 'data_version' (e.g., 'data_version' 2), but the 'type_version' +remains the same to indicate that it’s a derivative (or "child") of the original. +Each child dataset gets its own entry. + +If a dataset is translated into a different language, create a new entry for +the translated version while keeping the 'data_version' and 'type_version' the same, +but editing the 'language' column accordingly. +This ensures you can trace back the parent-child relationship between datasets. + + +| **Variable** | **Example Entry** | +|-----------------------|------------------------------------| +| **name** | `linelist_cleaned` | +| **type** | `linelist` | +| **extension** | `xlsx` | +| **type_version** | `1` | +| **data_version** | `1` | +| **language** | `en` | +| **country** | `lbr` | +| **scale** | `national` | +| **subject** | `ebola` | +| **context** | `outbreak` | +| **fictional** | `yes` | +| **year** | `2014` | +| **description** | Linelist data from the Ebola virus | +| | disease outbreak in Liberia in | +| | 2014. | +| **usage** | `introexercises`, etc. | +| **license** | `gpl3` | +| **group_identifier** | `ebola_outbreak_lbr_2014` | +| **unique_identifier** | `ebola_outbreak_lbr_2014_linelist_1| +| | 1_outbreak_2014` | diff --git a/data/1tableoftables.xlsx b/data/1tableoftables.xlsx deleted file mode 100644 index d2db205e56bab4a10eec98ad6655e73da2ce4e9a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9088 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 diff --git a/inst/extdata/1tableoftables.xlsx b/inst/extdata/1tableoftables.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..2a673625358f2a498cf27dc1e0a0d79e134686e1 GIT binary patch literal 9447 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 O4%Y=^GA`}y)&B$I)g62Q literal 0 HcmV?d00001