From b275e121524891132251878f8981352ac92d388c Mon Sep 17 00:00:00 2001 From: Robert Baker Date: Mon, 23 Feb 2026 08:50:18 -0700 Subject: [PATCH 1/8] update roxygenNote to 7.3.3 --- DESCRIPTION | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/DESCRIPTION b/DESCRIPTION index bb6a373..ed43a27 100644 --- a/DESCRIPTION +++ b/DESCRIPTION @@ -64,7 +64,7 @@ Imports: lifecycle, httr2, desc -RoxygenNote: 7.3.2 +RoxygenNote: 7.3.3 Suggests: knitr, rmarkdown, From 1e977391a32746556d8971d5908de816abe1699c Mon Sep 17 00:00:00 2001 From: Robert Baker Date: Thu, 26 Feb 2026 10:04:01 -0700 Subject: [PATCH 2/8] update tests to pass with DataStore v8 API --- tests/testthat/test-utils.R | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/tests/testthat/test-utils.R b/tests/testthat/test-utils.R index 4cb49fc..56958ed 100644 --- a/tests/testthat/test-utils.R +++ b/tests/testthat/test-utils.R @@ -1,13 +1,13 @@ test_that(".QC_ds_api returns correct url", { - expect_equal(.QC_ds_api(x), "https://irmaservices.nps.gov/datastore/v6/rest/") + expect_equal(.QC_ds_api(x), "https://irmaservices.nps.gov/datastore/v8/rest/") }) test_that(".QC_ds_secure_api returns correct url", { - expect_equal(.QC_ds_secure_api(x), "https://irmaservices.nps.gov/datastore-secure/v6/rest/") + expect_equal(.QC_ds_secure_api(x), "https://irmaservices.nps.gov/datastore-secure/v8/rest/") }) test_that(".QC_ds_dev_api returns correct url", { - expect_equal(.QC_ds_dev_api(x), "https://irmadevservices.nps.gov/datastore-secure/v6/rest/") + expect_equal(.QC_ds_dev_api(x), "https://irmadevservices.nps.gov/datastore-secure/v8/rest/") }) test_that("get_user_email returns a string approximating an email", { From fb12007350f20074c20fc2594c3c1e299a34515f Mon Sep 17 00:00:00 2001 From: Robert Baker Date: Thu, 26 Feb 2026 11:02:31 -0700 Subject: [PATCH 3/8] update get_elevation to handle unpredictable API responses for invalid lat/long --- R/elevation.R | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/R/elevation.R b/R/elevation.R index 741e0fd..0063e7b 100644 --- a/R/elevation.R +++ b/R/elevation.R @@ -78,14 +78,15 @@ get_elevation <- function(df, if (req$status_code == 200) { gh_req_json <- suppressMessages(httr::content(req, "text")) # if something else went wrong - likely coordinates outside USA. - if (gh_req_json == "Invalid or missing input parameters."){ + if (gh_req_json == "Invalid or missing input parameters." | + grepl("Call failed", gh_req_json)){ if (force == FALSE){ cat("Invalid input. NAs generated. Are your coordinates inside the US?") } elev <- append(elev, NA) } else { # everything checks out, add elevation to df - elevation <- httr::content(req)$value + elevation <- as.numeric(httr::content(req)$value) elev <- append(elev, elevation) } } else { From bf12894c17c67051b3b00a574bd5a4e0ba34235e Mon Sep 17 00:00:00 2001 From: Robert Baker Date: Thu, 26 Feb 2026 11:05:50 -0700 Subject: [PATCH 4/8] update test for get_custom_flags to match updated function behavior --- tests/testthat/test-summarize_qc_flags.R | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/testthat/test-summarize_qc_flags.R b/tests/testthat/test-summarize_qc_flags.R index 08ae22a..a6b2983 100644 --- a/tests/testthat/test-summarize_qc_flags.R +++ b/tests/testthat/test-summarize_qc_flags.R @@ -12,7 +12,7 @@ test_that("get_custom_flags outputs 2 data frames when output = all", { test_that("get_custom_flags outputs correct column names for files", { x <- get_custom_flags(directory = dir, output = "files") - expect_equal(names(x), c("File Name", "A", "AE", "P", "R", "% Accepted")) + expect_equal(names(x), c("File Name", "A", "AE", "R", "P", "% Accepted")) }) test_that("get_custom_flags outputs correct column names for columns", { From 123938a57a5134c457c421cb7d8931e3ed508dcc Mon Sep 17 00:00:00 2001 From: Robert Baker Date: Thu, 26 Feb 2026 11:22:25 -0700 Subject: [PATCH 5/8] add comment to facilitate future code improvements --- R/datastore_interactions.R | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/R/datastore_interactions.R b/R/datastore_interactions.R index c7b3954..449d9a9 100644 --- a/R/datastore_interactions.R +++ b/R/datastore_interactions.R @@ -289,7 +289,11 @@ create_datastore_script <- function(owner, if (force == FALSE) { cat("Your file, ", crayon::blue$bold(file_name), ", has been uploaded to:\n", sep = "") - cat(ds_resource_url, "\n\n", sep = "") + + + #### ds_resource_url is not a good url; needs fixing + + cat(ds_resource_url, "\n\n", sep = "") } #add a web link: #release url: From f317535942646baa184945e19f68861db6401d4b Mon Sep 17 00:00:00 2001 From: Robert Baker Date: Thu, 26 Feb 2026 12:13:28 -0700 Subject: [PATCH 6/8] update news fix get elevation api calls --- NEWS.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/NEWS.md b/NEWS.md index 9b5efb0..14e6c10 100644 --- a/NEWS.md +++ b/NEWS.md @@ -1,4 +1,7 @@ # QCkit v1.2.1 +## 2026-02-26 + * update `get_elevation` to handle unpredictable API responses for invalid lat/long values. + ## 2025-01-09 * `create_datastore_script` now has a new parameter, lib_type. If "R" is specified it will pull as much info as it can from the DESCRIPTION file of an R package and use that info to fill out the Core Bibliography tab on the reference landing page. From f8cc16206ab91580cc3937e8338b4ba04655ea19 Mon Sep 17 00:00:00 2001 From: Robert Baker Date: Thu, 26 Feb 2026 12:14:50 -0700 Subject: [PATCH 7/8] notes about things done to fix unit test failures --- NEWS.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/NEWS.md b/NEWS.md index 14e6c10..5882a1f 100644 --- a/NEWS.md +++ b/NEWS.md @@ -1,6 +1,8 @@ # QCkit v1.2.1 ## 2026-02-26 * update `get_elevation` to handle unpredictable API responses for invalid lat/long values. + * update unit tests to pass using DataStore v8 API + * update unit tests for `summarize_qc_flags` to reflect changes made in the function ## 2025-01-09 * `create_datastore_script` now has a new parameter, lib_type. If "R" is specified it will pull as much info as it can from the DESCRIPTION file of an R package and use that info to fill out the Core Bibliography tab on the reference landing page. From 1bc18adfce5a0bd356f9c09de004e7914e50376d Mon Sep 17 00:00:00 2001 From: Robert Baker Date: Thu, 26 Feb 2026 12:16:15 -0700 Subject: [PATCH 8/8] updated via pkgdown::build_site_github_pages --- docs/404.html | 83 --- docs/CONTRIBUTING.html | 2 +- docs/LICENSE-text.html | 2 +- docs/LICENSE.html | 2 +- docs/articles/DRR_Purpose_and_Scope.html | 410 ----------- docs/articles/RMD_vis_source.png | Bin 60479 -> 0 bytes docs/articles/R_citation_manager.png | Bin 51139 -> 0 bytes docs/articles/Starting-a-DRR.html | 202 ------ docs/articles/Using-the-DRR-Template.html | 640 ------------------ .../kePrint-0.0.1/kePrint.js | 8 - .../lightable-0.0.1/lightable.css | 272 -------- docs/articles/WorkflowModelGeneral.png | Bin 15023 -> 0 bytes docs/articles/WorkflowModelInventories.png | Bin 26785 -> 0 bytes docs/articles/WorkflowModelMonitoring.png | Bin 31752 -> 0 bytes docs/articles/index.html | 69 -- docs/articles/new_rmd.png | Bin 21503 -> 0 bytes docs/articles/new_rmd_template.png | Bin 36569 -> 0 bytes docs/authors.html | 2 +- docs/index.html | 12 +- docs/news/index.html | 201 ------ docs/pkgdown.js | 192 +++--- docs/pkgdown.yml | 4 +- docs/reference/DC_col_check.html | 102 --- docs/reference/QCkit-package.html | 84 --- docs/reference/check_dc_cols.html | 96 --- docs/reference/check_te.html | 119 ---- docs/reference/convert_datetime_format.html | 100 --- docs/reference/convert_long_to_utm.html | 101 --- docs/reference/convert_utm_to_ll.html | 163 ----- docs/reference/create_datastore_script.html | 177 ----- docs/reference/document_missing_values.html | 159 ----- docs/reference/figures/lifecycle-archived.svg | 21 - docs/reference/figures/lifecycle-defunct.svg | 21 - .../figures/lifecycle-deprecated.svg | 21 - .../figures/lifecycle-experimental.svg | 21 - docs/reference/figures/lifecycle-maturing.svg | 21 - .../figures/lifecycle-questioning.svg | 21 - .../figures/lifecycle-soft-deprecated.svg | 21 - docs/reference/figures/lifecycle-stable.svg | 29 - .../figures/lifecycle-superseded.svg | 21 - docs/reference/fix_utc_offset.html | 94 --- docs/reference/fuzz_location.html | 128 ---- docs/reference/generate_ll_from_utm.html | 203 ------ docs/reference/get_custom_flags.html | 170 ----- docs/reference/get_dc_flags.html | 125 ---- docs/reference/get_df_flags.html | 125 ---- docs/reference/get_dp_flags.html | 125 ---- docs/reference/get_elevation.html | 126 ---- docs/reference/get_park_polygon.html | 92 --- docs/reference/get_taxon_rank.html | 102 --- docs/reference/get_utm_zone.html | 95 --- docs/reference/index.html | 202 ------ docs/reference/long2UTM.html | 104 --- docs/reference/order_cols.html | 100 --- docs/reference/remove_empty_tables.html | 94 --- docs/reference/replace_blanks.html | 169 ----- docs/reference/te_check.html | 125 ---- docs/reference/unit_codes_to_names.html | 91 --- docs/reference/utm_to_ll.html | 127 ---- docs/reference/validate_coord.html | 100 --- docs/reference/validate_coord_list.html | 114 ---- docs/sitemap.xml | 45 -- 62 files changed, 108 insertions(+), 5947 deletions(-) delete mode 100644 docs/404.html delete mode 100644 docs/articles/DRR_Purpose_and_Scope.html delete mode 100644 docs/articles/RMD_vis_source.png delete mode 100644 docs/articles/R_citation_manager.png delete mode 100644 docs/articles/Starting-a-DRR.html delete mode 100644 docs/articles/Using-the-DRR-Template.html delete mode 100644 docs/articles/Using-the-DRR-Template_files/kePrint-0.0.1/kePrint.js delete mode 100644 docs/articles/Using-the-DRR-Template_files/lightable-0.0.1/lightable.css delete mode 100644 docs/articles/WorkflowModelGeneral.png delete mode 100644 docs/articles/WorkflowModelInventories.png delete mode 100644 docs/articles/WorkflowModelMonitoring.png delete mode 100644 docs/articles/index.html delete mode 100644 docs/articles/new_rmd.png delete mode 100644 docs/articles/new_rmd_template.png delete mode 100644 docs/news/index.html delete mode 100644 docs/reference/DC_col_check.html delete mode 100644 docs/reference/QCkit-package.html delete mode 100644 docs/reference/check_dc_cols.html delete mode 100644 docs/reference/check_te.html delete mode 100644 docs/reference/convert_datetime_format.html delete mode 100644 docs/reference/convert_long_to_utm.html delete mode 100644 docs/reference/convert_utm_to_ll.html delete mode 100644 docs/reference/create_datastore_script.html delete mode 100644 docs/reference/document_missing_values.html delete mode 100644 docs/reference/figures/lifecycle-archived.svg delete mode 100644 docs/reference/figures/lifecycle-defunct.svg delete mode 100644 docs/reference/figures/lifecycle-deprecated.svg delete mode 100644 docs/reference/figures/lifecycle-experimental.svg delete mode 100644 docs/reference/figures/lifecycle-maturing.svg delete mode 100644 docs/reference/figures/lifecycle-questioning.svg delete mode 100644 docs/reference/figures/lifecycle-soft-deprecated.svg delete mode 100644 docs/reference/figures/lifecycle-stable.svg delete mode 100644 docs/reference/figures/lifecycle-superseded.svg delete mode 100644 docs/reference/fix_utc_offset.html delete mode 100644 docs/reference/fuzz_location.html delete mode 100644 docs/reference/generate_ll_from_utm.html delete mode 100644 docs/reference/get_custom_flags.html delete mode 100644 docs/reference/get_dc_flags.html delete mode 100644 docs/reference/get_df_flags.html delete mode 100644 docs/reference/get_dp_flags.html delete mode 100644 docs/reference/get_elevation.html delete mode 100644 docs/reference/get_park_polygon.html delete mode 100644 docs/reference/get_taxon_rank.html delete mode 100644 docs/reference/get_utm_zone.html delete mode 100644 docs/reference/index.html delete mode 100644 docs/reference/long2UTM.html delete mode 100644 docs/reference/order_cols.html delete mode 100644 docs/reference/remove_empty_tables.html delete mode 100644 docs/reference/replace_blanks.html delete mode 100644 docs/reference/te_check.html delete mode 100644 docs/reference/unit_codes_to_names.html delete mode 100644 docs/reference/utm_to_ll.html delete mode 100644 docs/reference/validate_coord.html delete mode 100644 docs/reference/validate_coord_list.html delete mode 100644 docs/sitemap.xml diff --git a/docs/404.html b/docs/404.html deleted file mode 100644 index 1c7926f..0000000 --- a/docs/404.html +++ /dev/null @@ -1,83 +0,0 @@ - - - - - - - -Page not found (404) • QCkit - - - - - - - - Skip to contents - - -
-
-
- -Content not found. Please use links in the navbar. - -
-
- - -
- - - -
-
- - - - - - - diff --git a/docs/CONTRIBUTING.html b/docs/CONTRIBUTING.html index c128572..f77e2f9 100644 --- a/docs/CONTRIBUTING.html +++ b/docs/CONTRIBUTING.html @@ -159,7 +159,7 @@

Attribution -

Site built with pkgdown 2.1.1.

+

Site built with pkgdown 2.2.0.

diff --git a/docs/LICENSE-text.html b/docs/LICENSE-text.html index 2482b59..8e98b91 100644 --- a/docs/LICENSE-text.html +++ b/docs/LICENSE-text.html @@ -50,7 +50,7 @@

License

diff --git a/docs/LICENSE.html b/docs/LICENSE.html index 554e292..80adc0b 100644 --- a/docs/LICENSE.html +++ b/docs/LICENSE.html @@ -54,7 +54,7 @@

MIT License

diff --git a/docs/articles/DRR_Purpose_and_Scope.html b/docs/articles/DRR_Purpose_and_Scope.html deleted file mode 100644 index 333d0ae..0000000 --- a/docs/articles/DRR_Purpose_and_Scope.html +++ /dev/null @@ -1,410 +0,0 @@ - - - - - - - -DRR Purpose and Scope • QCkit - - - - - - - - Skip to contents - - -
- - - - -
-
- - - - -

Lifecycle: experimental

- -
-

Background -

-

The Data Release Report (DRR) is aimed at fulfilling requirements and -expectations of Open Science at the National Park Service. This -includes:

-
    -
  • Broad adoption of open-data and open-by-default -practices.

  • -
  • A move in the scientific disciplines toward considering and -publishing data sets as independently-citable scientific works.

  • -
  • Routine assignment of digital object identifiers (DOIs) to -datasets to facilitate location, reuse, and citation of specific -data

  • -
  • Increased transparency and reproducibility in the processing and -analysis of data.

  • -
  • Establishment of peer reviewed “data journals” dedicated to -publishing data sets and associated documentation designed to facilitate -their reuse.

  • -
  • Expectation that science-based decisions are based on -peer-reviewed, reproducible, and open science by default.

  • -
-

Data Release Reports are designed to parallel external peer-reviewed -scientific journals dedicated to facilitate reuse of reproducible -scientific data, in recognition that the primary reason IMD data are -collected is to support science-based decisions.

-

Note that publication in a Data Release Report Series (not mandated) -is distinct from requirements to document data collection, processing, -and quality evaluation (mandated; see below). The establishment of a -Data Release Report Series is intended to facilitate and encourage this -type of reporting in a standard format, and in a manner commensurate -with current scientific norms.

-
-
-

Definitions -

-

Reproducibility. The degree to which scientific -information, modeling, and methods of analysis could be evaluated by an -independent third party to arrive at the same, or substantially similar, -conclusion as the original study or information, and that the scientific -assessment can be repeated to obtain similar results (Plesser 2017). A -study is reproducible if you can take the original data and the computer -code used to analyze the data and reproduce all of the numerical -findings from the study. This may initially sound like a trivial task -but experience has shown that it’s not always easy to achieve this -seemingly minimal standard (ASA 2017, Plesser 2017).

-

Transparency. Full disclosure of the methods used to -obtain, process, analyze, and review scientific data and other -information products, the availability of the data that went into and -came out of the analysis, and the computer code used to conduct the -analysis. Documenting this information is crucial to ensure -reproducibility and requires, at minimum, the sharing of analytical data -sets, relevant metadata, analytical code, and related software.

-

Fitness for Use. The utility of scientific -information (in this case a dataset) for its intended users and its -intended purposes. Agencies must review and communicate the fitness of a -dataset for its intended purpose, and should provide the public -sufficient documentation about each dataset to allow data users to -determine the fitness of the data for the purpose for which third -parties may consider using it.

-

Decisions. The type of decisions that must be based -on publicly-available, reproducible, and peer-reviewed science has not -been defined. At a minimum it includes any influential decisions, but it -may also include any decisions subject to public review and comment.

-

Descriptive Reporting. The policies listed above are -consistent in the requirement to provide documentation that describes -the methods used to collect, process, and evaluate science products, -including data. Note that this is distinct from (and in practice may -significantly differ from) prescriptive documents such as protocols, -procedures, and study plans. Descriptive reporting should cite or -describe relevant science planning documents, methods used, deviations, -and mitigations. In total, descriptive reporting provides a clear “line -of sight” on precisely how data were collected, processed, and -evaluated. Although deviations may warrant revisions to prescriptive -documents, changes in prescriptive documents after the fact do not meet -reproducibility and transparency requirements.

-
-
-

Policy Requirements -

-
-

NPS Requirements -

-

DO11B-a, -DO -11B-b, OMB -M-05-03 (Peer review and information quality):

-
    -
  • Scientific information must be appropriately reviewed prior to -use in decision-making, regulatory processes, or dissemination to the -public, regardless of media.

  • -
  • As per OMB M-05-03 “scientific information” includes factual -inputs, data, models, analyses, technical information, or scientific -assessments related to such disciplines as the behavioral and social -sciences, public health and medical sciences, life and earth sciences, -engineering, or physical sciences.

  • -
  • Methods for producing information will be made transparent, to -the maximum extent practicable, through accurate documentation, use of -appropriate review, and verification of information quality.

  • -
-

OMB -M-19-15 (Updates to Implementing the Information -Quality Act):

-
    -
  • Federal agencies must collect, use, and disseminate information -that is fit for its intended purpose.

  • -
  • Agencies must conduct pre-dissemination review of quality [of -scientific information] based on the likely use of that information. -Quality encompasses utility, integrity, and objectivity, defined as -follows: a) Utility – utility for its intended users and its intended -purposes, b) Integrity – refers to security, and c) Objectivity – -accurate, reliable, and unbiased as a matter of presentation and -substance.

  • -
  • Agencies should provide the public with sufficient documentation -about each dataset released to allow data users to determine the fitness -of the data for the purpose for which third parties may consider using -it. Potential users must be provided with sufficient -information to understand… the data’s strengths, weaknesses, analytical -limitations, security requirements, and processing options.

  • -
  • -

    Reproducibility requirements for Influential Information. Note -that because this may not be determined at the time of collection, -processing, or dissemination this should be the default for NPS -scientific activities:

    -
      -
    • Analyses must be disseminated with sufficient descriptions of -data and methods to allow them to be reproduced by qualified third -parties who may want to test the sensitivity of agency analyses. This is -a higher standard than simply documenting the characteristics of the -underlying data, which is required for all information.

    • -
    • Computer code used to process data should be made available to -the public for further analysis. In the context of results generated, -for example, a statistical model or machine augmented learning and -decision support, reproducibility requires, at a minimum transparency -about the specific methods, design parameters, equations or algorithms, -parameters, and assumptions used.

    • -
    -
  • -
  • Reports, data, and computer code used, developed, or cited in the -analysis and reporting of findings must be made publicly available -except where prohibited by law.

  • -
-
-
-

National Park Service Guidelines -

-

Multiple policy and guidance documents require the use of best -available science in decision-making at the Natonal Park Service (NPS). -Additional requirements include:

-

SO -3369 (Promoting Open Science):

-
    -
  • Defines “best available science” as publicly-available, -reproducible, and peer reviewed. Requires that any decisions or -scientific conclusions must prioritize the use of publicly-available, -reproducible, and peer-reviewed science. Decisions or conclusions not -based on such must include an explanation of why the alternative is the -best available information. Effective as of 28 September 2018 with no -transition period.
  • -
-

DO -11B (Ensuring Objectivity, Utility, and Integrity -of Information Used and Disseminated by the National Park -Service):

-
    -
  • The NPS will ensure that information it releases to the public or -utilizes in management decisions will be developed from reliable data -sources that provide the highest quality of information at each stage of -information development.
  • -
-
-
-

NPS Inventory and Monitoring Requirements -

-

NPS-75 -(Inventory and Monitoring Guidelines):

-
    -
  • An annual summary report documenting the condition of park -resources should be developed as part of the annual revision of the -parks Resource Management Plan.

  • -
  • An annual report provides a mechanism for reviewing and making -recommendations for revisions in the [Protocol/SOPs].

  • -
  • [Inventory] data obtained should be archived in park records and, -when appropriate, a report should be written summarizing -findings.

  • -
  • Reporting requirements as per IMD directive

  • -
-

IMD -Reporting and Analysis Guidance

-
    -
  • Annual Analyses Required of all Monitoring Protocols: Conduct an -annual data review to address whether there is any unexpected -variability or outliers, and whether any protocol changes or additional -studies may be needed. Part of the review must assess the data against -standards defined in the protocol narrative, data quality standards -document or quality assurance plan, and document whether those standards -were met. When data are not available for review during the year they -are collected (for example, when data have been submitted to a lab for -analysis), review must be conducted the year the data are available. For -example, if water quality and quantity data are typically reviewed in -October and lab results for water quality are not available until the -following March, these data must be reviewed during the following -October review period, if not before.
  • -
-
-
-
-

Implications -

-

Because all of the data the NPS IMD collects is intended for use in -supporting science-based decisions as per our program’s five goals, and -is intended for use in planning (the decisions of which are subject to -public comment as per NEPA requirements), this means that by -default:

-
    -
  • All analytical work we do should be reproducible to the extent -possible. Analytical work includes both statistical analysis and -reporting of data as well as quality control procedures where data are -tested against quality standards and qualified or corrected as -appropriate.

  • -
  • Full reproducibility may not be possible in all cases, -particularly where analytical methods involve subject matter expertise -to make informed judgments on how to proceed with analyses. In such -cases, decisions should be documented to ensure transparency.

  • -
  • All IMD data should be published with supporting documentation to -allow for reproduction of results.

  • -
  • All IMD data should be evaluated to determine whether they are -suitable for their intended use.

  • -
  • All IMD data should be published with information fully -describing how data were collected, processed, and evaluated.

  • -
  • All data should be published in open formats that support the FAIR principles -(Findable, Accessible, Interoperable, and Resuable).

  • -
-
-
-

Scope -

-

(for the NPS Inventory & Monitoring Program)

-
-

General Studies -

-

Any project that involves the collection of scientific data for use -in supporting decisions to be made by NPS personnel. General study data -may or may not be collected based on documented or peer-reviewed study -plans or defined quality standards, but are in most cases purpose-driven -and resultant information should be evaluated for the suitability -for—and prior to—their use in decision support. These data may be reused -for secondary purposes including similar decisions at other locations or -times and/or portions of general study data may be reused or contribute -to other scientific work (observations from a deer browsing study may be -contribute to an inventory or may be used as ancillary data to explain -monitoring observations).

-
-Workflow for data collection, processing, dissemination, and use for general studies. Teal-colored boxes are subject to reproducibility requirements.

-Workflow for data collection, processing, dissemination, and use for -general studies. Teal-colored boxes are subject to reproducibility -requirements. -

-
-
-
-

Vital Signs Monitoring -

-

Vital signs monitoring data are collected by IMD and park staff to -address specific monitoring objectives following methods designed to -ensure long-term comparability of data. Procedures are established to -ensure that data quality standards are maintained in perpetuity. -However, because monitoring data are collected over long periods of time -in dynamic systems, the methods employed may differ from those -prescribed in monitoring protocols, procedures, or sampling plans, and -any deviations (and resultant mitigations to the data) must be -documented. Data should be evaluated to ensure that they meet prescribed -standards and are suitable for analyses designed to test whether -monitoring objectives have been met. Monitoring data may be reused for -secondary purposes including synthesis reports and condition -assessments, and portions of monitoring data may contribute to -inventories.

-
-Workflow for data collection, processing, dissemination, and use for vital sign monitoring efforts. Teal-colored boxes are subject to reproducibility requirements.

-Workflow for data collection, processing, dissemination, and use for -vital sign monitoring efforts. Teal-colored boxes are subject to -reproducibility requirements. -

-
-
-
-

Inventory Studies -

-

Inventory study data are similar to general study data in that they -are time- and area-specific efforts designed to answer specific -management needs as well as broader inventory objectives outlined in -project-specific study plans and inventory science plans. Inventory -studies typically follow well-documented data collection methods or -procedures, and resultant data should be evaluated for whether they are -suitable for use in supporting study-specific and broader -inventory-level objectives. Inventory study data are expected to be -reused to meet broader inventory level goals, but may also support other -scientific work and decision support.

-
-Workflow for data collection, processing, dissemination, and use for inventory studies. Teal-colored boxes are subject to reproducibility requirements.

-Workflow for data collection, processing, dissemination, and use for -inventory studies. Teal-colored boxes are subject to reproducibility -requirements. -

-
-
-
-
-

References -

-

American Statistical Association (ASA). 2017. Recommendations to -funding agencies for supporting reproducible research. https://www.amstat.org/asa/files/pdfs/POL-ReproducibleResearchRecommendations.pdf.

-

Plesser, H. E. 2017. Reproducibility vs. Replicability: A brief -history of a confused terminology. Front. Neuroinform. 11:76. https://doi.org/10.3389/fninf.2017.00076.

-
-
-
- - - -
- - - -
-
- - - - - - - diff --git a/docs/articles/RMD_vis_source.png b/docs/articles/RMD_vis_source.png deleted file mode 100644 index 816d8bf3ce5a2544401dd78aceaa538170895e97..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 60479 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%0AZhM7y<#&|#h6;FHF!8}T4841cmRKmiWUcxGqI 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 z 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 diff --git a/docs/articles/R_citation_manager.png b/docs/articles/R_citation_manager.png deleted file mode 100644 index 59eccbb3b75d184f2334902752ee2fbc811545ba..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 51139 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 MwcM+Mmj=H72TT17(f|Me diff --git a/docs/articles/Starting-a-DRR.html b/docs/articles/Starting-a-DRR.html deleted file mode 100644 index f2d9fb2..0000000 --- a/docs/articles/Starting-a-DRR.html +++ /dev/null @@ -1,202 +0,0 @@ - - - - - - - -Starting a DRR • QCkit - - - - - - - - Skip to contents - - -
- - - - -
-
- - - - -

Lifecycle: experimental

- -
-

DRRs: Background -

-

Purpose and Scope of Data -Release Reports

-

DRRs are created by the National Park Service and provide detailed -descriptions of valuable research datasets, including the methods used -to collect the data and technical analyses supporting the quality of the -measurements. Data Release Reports focus on helping others reuse data -rather than presenting results, testing hypotheses, or presenting new -interpretations and in-depth analyses.

-
-
-

About the DRR Template -

-

Opening a new NPS DRR Template will write a folder to the current -working directory that contains the an rmarkdown (.rmd) file that is the -DRR Tempate, a references.bib file for bibtex references, a -national-park-service-DRR,csl file for formatting references, and a -sub-folder, BICY_Example with an example data package that can be used -to knit an example DRR to .docx.

-

Upon submission for publication, the .docx file will be ingested by -EXstyles, converted to an .xml file and fully formatted according to NPS -branding and in compliance with 508 accessibility requirements upon -final publication. The goal of this process is to relieve data -producers, managers, and scientists from the burden of formatting and -allow them to focus primarily on content. Consequently, the .docx -generated for the publication process may not be visually appealing. The -content, however, should focus on the production, quality, and utility -of NPS data packages.

-
-
-

How to Start a DRR -

-
    -
  1. To start your DRR you will need all of your data in flat -.csv files. All quality assurance, quality control, and quality -flagging should be completed. Ideally you have already created or are in -the process of creating a data package (see the documentation -associated with the R package EMLeditor -for data package creation). All of the .csv files you want to describe -in the DRR should be in a single folder with no additional .csv -files (other files such as .txt and .xml will be ignored). This -folder can be the same folder you used/are using to create a data -package.

  2. -
  3. Using Rstudio, open an R project (Select: File -> New Project…) in the same folder as your .csv files. If you already -have an R project (.Rproj) initiated from creating a data package, you -can use that same R project.

  4. -
  5. Install, update (if necessary), and load the QCkit R -package. QCkit can be installed either as a component of the NPSdataverse -or on its own. The benefits of installing the entire NPSdataverse is -that upon loading the NPSdataverse, you will automatically be informed -if there are any updates to QCkit (or any of the constituent packages). -The downside to installing and loading the NPSdataverse is that the -first time you install it the process can be lengthy (there are many -dependencies) and you may hit the GitHub.com API rate limit. Either -installation is from GitHub.com and requires the devtools package to -install.

  6. -
-
-# Install the devtools package, if you don't already have it:
-install.packages("devtools")
-
-# Install and load QCkit via NPSdataverse:
-devtools::install_github("nationalparkservice/NPSdataverse")
-library(NPSdataverse)
-
-# Alternatively, install and load just QCkit:
-devtools::install_github("nationalparkservice/QCkit")
-library(QCkit)
-
    -
  1. -Open a new DRR Template. From within Rstudio, -select the “File” drop down menu. Choose “New File >” and then “R -markdown…”. This will open up a pop-up dialog box. Select “From -Template” on in the right-hand list and choose the template labelled -“NPS_DRR {QCkit}”. You can change the file and folder name to something -other than “Untitled”, but if you do so the example DRR will not render -properly. Click OK. A new folder will be generated in your current -working directory titled, “Untitled” (or whatever name you have opted to -call it).
  2. -
-

-
    -
  1. After selecting “OK” two things will happen: First, you the DRR -Template file will open up. It is called “Untitled.Rmd” by default. -Second, a new folder will be created called “Untitled” (Unless you opted -to change the default “Name:” in the “New R Markdown” pop up, then these -will have whatever name you gave them).

  2. -
  3. Edit the DRR Template to reflect the data you -would like to descibe and according to the instructions in the “Using the DRR Template” -guide.

  4. -
  5. “knit” the .rmd file to Word when you are done -editing it. Submit the resulting .docx file for publication (via a -yet-to-be-determined process).

  6. -
-
-
-

Examples -

-

Knit your own example DRR: Assuming you left the -“Name:” as the default “Untitled”, you should be able to knit the DRR -template in to an example .docx that could be submitted for publication. -If you opted to change the Name, you will need to update the the file -paths before knitting.

-
-
-
- - - -
- - - -
-
- - - - - - - diff --git a/docs/articles/Using-the-DRR-Template.html b/docs/articles/Using-the-DRR-Template.html deleted file mode 100644 index 6bb7366..0000000 --- a/docs/articles/Using-the-DRR-Template.html +++ /dev/null @@ -1,640 +0,0 @@ - - - - - - - -Using the DRR Template • QCkit - - - - - - - - Skip to contents - - -
- - - - -
-
- - - -
-

Overview -

-

Data Release Reports (DRRs) are created by the National Park Service -and provide detailed descriptions of valuable research datasets, -including the methods used to collect the data and technical analyses -supporting the quality of the measurements. Data Release Reports focus -on helping others reuse data, rather than presenting results, testing -hypotheses, or presenting new interpretations, methods or in-depth -analyses.

-

DRRs are intended to document the processing of fully-Quality-Assured -data to their final (Quality Controlled) form in a reproducible and -transparent manner. DRRs document the data collection methods and -quality standards used to prepare and review data prior to release. DRRs -present the quality of resultant data in the context of fitness for -their intended use.

-

Each DRR cites source and resultant data packages that are published -concurrently and cross-referenced. Associated data packages are made -publicly available with the exception of data that must be protected -from release as per NPS and park-specific policies.

-

Data packages that are published concurrently with DRRs are intended -to be independently citable scientific works that can serve as the basis -for subsequent analysis and reporting by NPS or third parties.

-
-
-

Project Set-up -

-

To set up a project, follow the instructions in the Article, “Starting a DRR”.

-
-
-

Reproducible Reports -

-
-

Code Chunks -

-

The DRR Template takes advantage of rmarkdown code chunks to help -generate a reproducible report. The template includes all of the -required code chunks. Some of these code chunks need to be edited to -generate the report, others should not be edited. Below is description -of each code chunk in the DRR Template and instructions on how to (and -when not to) edit them.

-

In addition to the report outline and a description of content for -each section, the template includes four standard code chunks.

-

YAML Header:

-

The YAML header helps format the DRR. You should not need to edit any -of the YAML header.

-

R code chunks:

-
    -
  • -

    user_edited_parameters. A series of parameters that -are used in the creation of the DRR and may be re-used in metadata and -associated data package construction. You will need to edit these -parameters for each DRR.

    -
      -
    • -title. The title of the Data Release Report.
    • -
    • -report_number. This is optional, and should -only be included if publishing in the semi-official DRR series. -Set to NULL if there is no reportNumber.
    • -
    • -drr_ds_ref_id. This is the DataStore reference ID for -the report. It should be 7 digits long.
    • -
    • -authorNames. A list of the author’s names. If an author -has multiple institutional affiliations, the author should be listed -once for each affiliation.
    • -
    • -author_affiliations. A list of the author’s -affiliations. The order of author affiliations must match the order of -the authors in the authorNames list. Note that the entirety -of each affiliation is enclosed in a single set of quotations. Do not -worry about indentation or word wrapping. If two authors have the same -affiliation, list the affiliation twice.
    • -
    • -author_orcid. A list of ORCID iDs for each author in -the format “(xxxx-xxxx-xxxx-xxxx)”. If an author does not have an ORCID -iD, specify NA (no quotes). The order of ORCID iDs (and NAs) must -correspond to the order of authors in the authorNames list. -If an author was listed more than once in the authorNames -list, the corresponding ORCID (or NA) should also be listed more than -once. Future iterations of the DRR Template will pull ORCID iDs from -metadata and eventually from Active Directory. See ORCID for more information about ORCID -iDs or to register an ORCID iD.
    • -
    • -drr_abstract. The abstract for the DRR (which may be -distinct from the data package abstract). Pay careful attention to -non-standard characters, line breaks, carriage returns, and -curly-quotes. You may find it useful to write the abstract in NotePad or -some other text editor and NOT a word processor (such as Microsoft -Word). Indicate line breaks with and a space between paragraphs - should -you want them - using . The Abstract should succinctly describe the -study, the assay(s) performed, the resulting data, and their reuse -potential, but should not make any claims regarding new scientific -findings. No references are allowed in this section. A good suggested -length for abstracts is less than 250 words.
    • -
    • -data_package_ref_id. DataStore reference ID for the -data package associated with this report. You must have at least one -data package. Eventually, we will automate importing much of this -information from metadata and include the ability to describe multiple -data packages in a single DRR.
    • -
    • -data_P_package_T_title. The title of the data package. -Must match the title on DataStore (and metadata).
    • -
    • -data_package_description. A short title/subtitle or -short description for the data package. Must match the data package -metadata.
    • -
    • -data_package_DOI_doi. Auto-generated, no need to edit -or update. This is the data package DOI. It is based on the DataStore -reference number.
    • -
    • -data_package_file_names. List the file names in your -data package. Do NOT include metadata files. For example, include -“my_data.csv” but do NOT include “my_metadata.xml”. Note: Because data -packages contain only .csv and .xml files, all data files should be -.csv.
    • -
    • -data_package_file_sizes. List the approximate size of -each data file. Make sure the order of the file sizes corresponds to the -order of file names in dataPackage_fileNames.
    • -
    • -data_package_file_descript. A short description of the -corresponding data file that helps distinguish it from other data files. -A good guideline is 10 words or less. This will be used in a table -summary table so brevity is a priority. If you have already created -metadata for your data package in EML format, this should be the same -text as found in the “entityDescription” element for each data -file.
    • -
    -
  • -
  • setup_do_not_edit. Most users will not need to edit -this code chunk. There is one code snippet for loading packages; the -r_packages section is a suite of packages that are used to -assist with reproducible reporting. You may not need these for your -report, but we have included them as part of the base recommended -packages. If you plan to perform you QC as part of the DRR construction -process, you can add a second code snipped to import necessary packages -for your QC process here.

  • -
  • title_do_not_edit. These parameters are -auto-generated based on either the EML you supplied (when that becomes -an option) or the information you’ve already supplied under -“user-edited-parameters”. You really should not need to edit these -parameters.

  • -
  • authors_do_not_edit. There is no need to edit this -chunk. This writes the author names, ORCID iDs, and affiliations to the -.docx document based on information supplied in -user-edited-parameters.

  • -
  • file_table. Do not edit. Generates a table of file -names, sizes, and descriptions in the data package being described by -the DRR.

  • -
  • data_acceptance_criteria. If you did not use the -standard data quality assurance flags (A = accepted, AE = Accepted -(estimated), R = Rejected, P = Provisional), set this code chunk to -eval = FALSE and generate your own custom code chunk to -summarize your custom data flagging procedures. If you did use the -standard QA flags, indicate which fields in your data files contain -flagged data. Assuming your column names are unique, you do not need to -specify which file the columns are in. If your column names are not -unique, you will need to design your own summary table. Briefly describe -the acceptance criteria for each data quality flagged column in the same -order as the you specified the columns.

  • -
  • data_column_flagging. Uses the input from -data_acceptance_criteria to generate a table summarizing -the data quality flagging in the data package. If you set -data_acceptance_criteria parameter -eval = FALSE, also set data_column_flagging -parameter to eval = FALSE. Update the first line (which in -the example points to BICY_Example) to point to the directory where your -data are.

  • -
  • data_package_flagging. If you used standard QA flags -in your data package, leave the parameter eval = TRUE. If -you did not use standard QA flags, set eval = FALSE and -design your own custom summary table to handle your custom flagging -protocols. If you set eval = TRUE, update the file path to -pointing to your data files (in the example, the path points to the -directory “BICY_Example”).

  • -
  • figure1. This is an example code chunk for inserting -figures. Edit and re-deploy as necessary to include as many or as few -figures as your require.

  • -
  • listing. Appendix A, by default is the code listing. -This will generate all code used in generating the report and data -packages. In most cases, code listing is not required. If all QA/QC -processes and data manipulations were performed elsewhere, you should -cite that code (in the methods and references) and leave the “listing -code chunk with the default settings of eval=FALSE and echo=FALSE. If -you have developed custom scripts, you can add those to DataStore with -the reference”Script” and cite them in the DRR.

  • -
  • session_info is the information about the versions -of R and packages used in generating the report. In most cases, you do -not need to report session info (leave the session-info code chunk -parameters in their default state: eval=FALSE). Session and version -information is only necessary if you have set the “Listing” code chunk -in appendix A to eval=TRUE. In that case, change the “session info” code -chunk parameters to eval=TRUE.

  • -
-
-
-

Editing the Text -

-

The following text in the body of the DRR template will need to be -edited to customize it to each data package.

-
-

Data Records -

-

This is a required section and consists of two subheadings:

-
    -
  • Data inputs - an optional subsection used to -describe datasets that the data package is based on if it is a -re-analysis, reorganization, or re-integration of prevously existing -data sets.

  • -
  • Summary of datasts created - this is a required -section used to explain each data record associated with the work (for -instance, a data package), including the DOI indicating where this -information is stored. It shoudl also provide an overview of the data -files and their formats. Each external data record should be -cited.

  • -
-

Sample text is included that uses r code to incorporate previously -specified parameters such as the data package title, file names, and -DOI.

-

A code for a sample table summarizing the contents of the data -package (except the metadata) is provided.

-
-
-

Data Quality -

-

This is a required section. and the text includes multiple suggested -text elements and code for an example table defining data flagging -codes. Near future development here will incorporate additional optional -tables to summarize the data quality based on the flags in the data -sets.

-
-
-

Usage Notes -

-

This is a required section that should contain brief instructions to -assist other researchers with reuse of the data. This may include -discussion of software packages (with appropriate citations) that are -suitable for analysing the assay data files, suggested downstream -processing steps (e.g. normalization, etc.), or tips for integrating or -comparing the data records with other datasets. Authors are encouraged -to provide code, programs or data-processing workflows if they may help -others understand or use the data.

-
-
-

Methods -

-

This is a required section that cites previous methods used but -should also be detailed enough in describing data production including -the experimental design, data acquisition assays, and any computational -processing (e.g. normalization, QA, QC) such that others can understand -the methods without referring to associated publications.

-

Optional sub-sections within the methods include:

-
    -
  • Data Collection and Sampling
  • -
  • Additional Data Sources
  • -
  • Data Processing
  • -
  • Code availability
  • -
-
-
-
-

References -

-

This required section includes full bibliographic references for each -paper, chapter, book, data package, dataset, protocol, etc cited within -the DRR. Each item in the Reference section should be specifically cited -in-text as well.

-
-
Automating Citations -
-

To automate citations, add the citation in bibtex format to the file -“references.bib”. You can manually copy and paste the bibtex for each -reference in, or you can search for it from within Rstudio. From within -Rstudio, make sure you are editing the DRR rmarkdown template using the -“Visual” view (as opposed to “Source”). From the “Insert” drop-down -menu, select “@ Citation…” (shortcut: Cntrl-Shift-F8). This will open a -Graphical User Interface (GUI) tool where you can view all the citations -in your reference.bib file as well as search multiple databases for -references, automatically insert the bibtex for the reference into your -references.bib file (and customize the unique identifier if you’d like) -and insert the in-text citation into the DRR template.

-
-Adding Citations - Source vs. Visual editing of the Template and how to access the citation manager.

-Adding Citations - Source vs. Visual editing of the Template and how to -access the citation manager. -

-
-
-Adding Citations - Using the citation manager.

-Adding Citations - Using the citation manager. -

-
-

Once a reference is in your references.bib file, using the Visual -view of the template you can simply type the ‘@’ symbol and select which -reference to insert in the text.

-

If you need to edit how the citation is displayed after inserting it -into the text, switch back to the “Source” view. Each bibtex citation -should start with a unique identifier; the example reference in the -supplied references.bib file has the unique identifier “@article{Scott1994,”. Using the “Source” view in -Rstudio, insert the reference in your text, by combining the “at” symbol -with the portion of the unique identifier after the curly bracket: @Scott1994 .

- ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
SyntaxResult
-@Scott1994 concludes that …Scott et al., 1994 concludes that …
-@Scott1994[p.33] concludes that …Scott (1994, p.33) concludes that …
… end of sentence [@Scott1994].… end of sentence (Scott et al., 1994).
… end of sentence [see @Scott1994,p.33].… end of sentence (see Scott et al. 1994,p.33).
delineate multiple authors with colon: -[@Scott1994; @aberdeen1958] -delineate multiple authors with colon: (Scott et al., 1994; -Aberdeen, 1958)
Scott et al. conclude that …. [-@Scott1994] -Scott et al. conclude that . . . (1994)
-

The full citation, properly formatted, will be included in a -“References” section at the end of the rendered MS Word document. . . -though it is also worth visually inspecting the .docx for citation -completeness and formatting.

-
-
-
Manual citations -
-

If you would like to format your citations manually, please feel free -to do so. Make sure to look at the References section of the DRR -Template for how to properly format each citation type.

-

There are numerous examples of proper formatting for each of these. -Future versions of the DRR will enable automatic reference formatting -given a correctly formatted bibtex file with the references (.bib).

-
-
-
-

Figures -

-

Figures should be inserted using code chunks in all cases so that -figure settings can be set in the chunk header. The chunk header should -at a minimum set the fig.align parameter to “center” and the specify the -figure caption (fig.cap parameter). Inserting figures this way will -ensure that the caption is properly formatted and it will apply copy the -caption to the figure’s “alt text” tag, making it 508-compliant.

-

For example:

-
```{r fig2, echo=FALSE, out.width="70%", fig.align="center", fig.cap="Example general workflow to incude in the methods section."} 
-knitr::include_graphics("ProcessingWorkflow.png")
-```
-

Results in:

-
-
-

Tables -

-

Tables should be created using the kable function. Specifying the -caption in the kable function call (as opposed to inline markdown text) -will ensure that the caption is appropriately formatted.

-

For example:

-
```{r Table2, echo=FALSE}
-c1<-c("Protocol1","Protocol2","Protocol3")
-c2<-c("Park Unit 1","Park Unit 2","Park Unit 3")
-c3<-c("Site 1","Site 2","Site 3")
-c4<-c("Date 1","Date 2","Date 3")
-c5<-c("GEOXXXXX","GEOXXXXX","GEOXXXXX")
-Table2<-data.frame(c1,c2,c3,c4,c5)
-
-kable(Table2, 
-      col.names=c("Subjects","Park Units","Locations","Sampling Dates","Data"),
-      caption="**Table 1.** Monitoring study example Data Records table.") %>%
-  kable_styling(bootstrap_options = c("striped", "hover", "condensed", "responsive"),full_width=F)
-```
-

Results in:

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-Table 1. Monitoring study example Data Records table. -
-Subjects - -Park Units - -Locations - -Sampling Dates - -Data -
-Protocol1 - -Park Unit 1 - -Site 1 - -Date 1 - -GEOXXXXX -
-Protocol2 - -Park Unit 2 - -Site 2 - -Date 2 - -GEOXXXXX -
-Protocol3 - -Park Unit 3 - -Site 3 - -Date 3 - -GEOXXXXX -
-
-
-
-

Non-reproducible Reports -

-

You can generate a .docx document manually without ussing the DRR -Template. The .docx, if properly formatted, can be ingested by the -publication software. Assuming the manually created .docx also has all -the required components and information, it can pass the review process -and be published. The final product should be indistinguishable from one -generated using the DRR Template.

-

Manually generating a .docx for DRR publication is not suggested and -not supported.

-
-
-

Publishing DRRs -

-
-

Report Numbers -

-

Because data release reports and associated data packages are -cross-referential, report numbers are typically assigned early in data -processing and quality evaluation.

-
    -
  • DataStore Reference Numbers. When developing a -report and data packages, DataStore references should be created as -early in the process as practicable. While the report and data packages -are in development, these should not be activated.

  • -
  • Report Numbers. If you are planning to publish a -Data Release Report with an official DRR number, please contact the IMD -Deputy Chief with the DataStore reference number associated with the -DRR.

  • -
  • Persistent Identifiers. Digital object -identifiers (DOIs) will be assigned to all DRRs and concurrently -published data packages. DOIs will resolve to a DataStore Reference; -DOIs are reserved when a draft reference is initiated in DataStore. They -are not activated until the publication process, including relevant -review, is complete.

  • -
-

DRR DOIs have the format: https://doi.org/10.36967/xxxxxxx

-

Data package DOIs have the format: https://doi.org/10.57830/xxxxxxx

-

Where the “xxxxxx” is the 7-digit DataStore reference number.

-
-
-

Liability Statements -

-

Under no circumstances should reports and associated data packages or -metadata published in the DRR series contain disclaimers or text that -suggests that the work does not meet scientific integrity or information -quality standards of the National Park Service. The following -disclaimers are suitable for use, depending on whether the data are -provisional or final (or approved or certified).

-
-

For approved & published data sets: “Unless -otherwise stated, all data, metadata and related materials are -considered to satisfy the quality standards relative to the purpose for -which the data were collected. Although these data and associated -metadata have been reviewed for accuracy and completeness and approved -for release by the National Park Service Inventory and Monitoring -Division, no warranty expressed or implied is made regarding the display -or utility of the data for other purposes, nor on all computer systems, -nor shall the act of distribution constitute any such warranty.”

-
-
-

For provisional data: “The data you have secured -from the National Park Service (NPS) database identified as [database -name] have not received approval for release by the NPS Inventory and -Monitoring Division, and as such are provisional and subject to -revision. The data are released on the condition that neither the NPS -nor the U.S. Government shall be held liable for any damages resulting -from its authorized or unauthorized use.”

-
-
-
-
-
- - - -
- - - -
-
- - - - - - - diff --git a/docs/articles/Using-the-DRR-Template_files/kePrint-0.0.1/kePrint.js b/docs/articles/Using-the-DRR-Template_files/kePrint-0.0.1/kePrint.js deleted file mode 100644 index e6fbbfc..0000000 --- a/docs/articles/Using-the-DRR-Template_files/kePrint-0.0.1/kePrint.js +++ /dev/null @@ -1,8 +0,0 @@ -$(document).ready(function(){ - if (typeof $('[data-toggle="tooltip"]').tooltip === 'function') { - $('[data-toggle="tooltip"]').tooltip(); - } - if ($('[data-toggle="popover"]').popover === 'function') { - $('[data-toggle="popover"]').popover(); - } -}); diff --git a/docs/articles/Using-the-DRR-Template_files/lightable-0.0.1/lightable.css b/docs/articles/Using-the-DRR-Template_files/lightable-0.0.1/lightable.css deleted file mode 100644 index 3be3be9..0000000 --- a/docs/articles/Using-the-DRR-Template_files/lightable-0.0.1/lightable.css +++ /dev/null @@ -1,272 +0,0 @@ -/*! - * lightable v0.0.1 - * Copyright 2020 Hao Zhu - * Licensed under MIT (https://github.com/haozhu233/kableExtra/blob/master/LICENSE) - */ - -.lightable-minimal { - border-collapse: separate; - border-spacing: 16px 1px; - width: 100%; - margin-bottom: 10px; -} - -.lightable-minimal td { - margin-left: 5px; - margin-right: 5px; -} - -.lightable-minimal th { - margin-left: 5px; - margin-right: 5px; -} - -.lightable-minimal thead tr:last-child th { - border-bottom: 2px solid #00000050; - empty-cells: hide; - -} - -.lightable-minimal tbody tr:first-child td { - padding-top: 0.5em; -} - -.lightable-minimal.lightable-hover tbody tr:hover { - background-color: #f5f5f5; -} - -.lightable-minimal.lightable-striped tbody tr:nth-child(even) { - background-color: #f5f5f5; -} - -.lightable-classic { - border-top: 0.16em solid #111111; - border-bottom: 0.16em solid #111111; - width: 100%; - margin-bottom: 10px; - margin: 10px 5px; -} - -.lightable-classic tfoot tr td { - border: 0; -} - -.lightable-classic tfoot tr:first-child td { - border-top: 0.14em solid #111111; -} - -.lightable-classic caption { - color: #222222; -} - -.lightable-classic td { - padding-left: 5px; - padding-right: 5px; - color: #222222; -} - -.lightable-classic th { - padding-left: 5px; - padding-right: 5px; - font-weight: normal; - color: #222222; -} - -.lightable-classic thead tr:last-child th { - border-bottom: 0.10em solid #111111; -} - -.lightable-classic.lightable-hover tbody tr:hover { - background-color: #F9EEC1; -} - -.lightable-classic.lightable-striped tbody tr:nth-child(even) { - background-color: #f5f5f5; -} - -.lightable-classic-2 { - border-top: 3px double #111111; - border-bottom: 3px double #111111; - width: 100%; - margin-bottom: 10px; -} - -.lightable-classic-2 tfoot tr td { - border: 0; -} - -.lightable-classic-2 tfoot tr:first-child td { - border-top: 3px double #111111; -} - -.lightable-classic-2 caption { - color: #222222; -} - -.lightable-classic-2 td { - padding-left: 5px; - padding-right: 5px; - color: #222222; -} - -.lightable-classic-2 th { - padding-left: 5px; - padding-right: 5px; - font-weight: normal; - color: #222222; -} - -.lightable-classic-2 tbody tr:last-child td { - border-bottom: 3px double #111111; -} - -.lightable-classic-2 thead tr:last-child th { - border-bottom: 1px solid #111111; -} - -.lightable-classic-2.lightable-hover tbody tr:hover { - background-color: #F9EEC1; -} - -.lightable-classic-2.lightable-striped tbody tr:nth-child(even) { - background-color: #f5f5f5; -} - -.lightable-material { - min-width: 100%; - white-space: nowrap; - table-layout: fixed; - font-family: Roboto, sans-serif; - border: 1px solid #EEE; - border-collapse: collapse; - margin-bottom: 10px; -} - -.lightable-material tfoot tr td { - border: 0; -} - -.lightable-material tfoot tr:first-child td { - border-top: 1px solid #EEE; -} - -.lightable-material th { - height: 56px; - padding-left: 16px; - padding-right: 16px; -} - -.lightable-material td { - height: 52px; - padding-left: 16px; - padding-right: 16px; - border-top: 1px solid #eeeeee; -} - -.lightable-material.lightable-hover tbody tr:hover { - background-color: #f5f5f5; -} - -.lightable-material.lightable-striped tbody tr:nth-child(even) { - background-color: #f5f5f5; -} - -.lightable-material.lightable-striped tbody td { - border: 0; -} - -.lightable-material.lightable-striped thead tr:last-child th { - border-bottom: 1px solid #ddd; -} - -.lightable-material-dark { - min-width: 100%; - white-space: nowrap; - table-layout: fixed; - font-family: Roboto, sans-serif; - border: 1px solid #FFFFFF12; - border-collapse: collapse; - margin-bottom: 10px; - background-color: #363640; -} - -.lightable-material-dark tfoot tr td { - border: 0; -} - -.lightable-material-dark tfoot tr:first-child td { - border-top: 1px solid #FFFFFF12; -} - -.lightable-material-dark th { - height: 56px; - padding-left: 16px; - padding-right: 16px; - color: #FFFFFF60; -} - -.lightable-material-dark td { - height: 52px; - padding-left: 16px; - padding-right: 16px; - color: #FFFFFF; - border-top: 1px solid #FFFFFF12; -} - -.lightable-material-dark.lightable-hover tbody tr:hover { - background-color: #FFFFFF12; -} - -.lightable-material-dark.lightable-striped tbody tr:nth-child(even) { - background-color: #FFFFFF12; -} - -.lightable-material-dark.lightable-striped tbody td { - border: 0; -} - -.lightable-material-dark.lightable-striped thead tr:last-child th { - border-bottom: 1px solid #FFFFFF12; -} - -.lightable-paper { - width: 100%; - margin-bottom: 10px; - color: #444; -} - -.lightable-paper tfoot tr td { - border: 0; -} - -.lightable-paper tfoot tr:first-child td { - border-top: 1px solid #00000020; -} - -.lightable-paper thead tr:last-child th { - color: #666; - vertical-align: bottom; - border-bottom: 1px solid #00000020; - line-height: 1.15em; - padding: 10px 5px; -} - -.lightable-paper td { - vertical-align: middle; - border-bottom: 1px solid #00000010; - line-height: 1.15em; - padding: 7px 5px; -} - -.lightable-paper.lightable-hover tbody tr:hover { - background-color: #F9EEC1; -} - -.lightable-paper.lightable-striped tbody tr:nth-child(even) { - background-color: #00000008; -} - -.lightable-paper.lightable-striped tbody td { - border: 0; -} - diff --git a/docs/articles/WorkflowModelGeneral.png b/docs/articles/WorkflowModelGeneral.png deleted file mode 100644 index 506dff02574982bde355e3668432f19b2acdfe68..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 15023 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 E0l!*-Pyhe` diff --git a/docs/articles/WorkflowModelInventories.png b/docs/articles/WorkflowModelInventories.png deleted file mode 100644 index 940e6c07a8ca0b0d29b602cb9daf4c98bef3f02b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 26785 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 diff --git a/docs/articles/WorkflowModelMonitoring.png b/docs/articles/WorkflowModelMonitoring.png deleted file mode 100644 index 39dfb8c4fd757054badafdd8c955fcd0458fd79c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 31752 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 AF#rGn diff --git a/docs/articles/index.html b/docs/articles/index.html deleted file mode 100644 index 827d7cd..0000000 --- a/docs/articles/index.html +++ /dev/null @@ -1,69 +0,0 @@ - -Articles • QCkit - Skip to contents - - -
-
-
- -
-

All vignettes

-
- -
DRR Purpose and Scope
-
-
Starting a DRR
-
-
Using the DRR Template
-
-
-
- - -
- - - -
- - - - - - - diff --git a/docs/articles/new_rmd.png b/docs/articles/new_rmd.png deleted file mode 100644 index 1a15431ce237df9e8031963ece1f2e92111f6c51..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 21503 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 diff --git a/docs/authors.html b/docs/authors.html index 626a160..a50999a 100644 --- a/docs/authors.html +++ b/docs/authors.html @@ -96,7 +96,7 @@

Citation

diff --git a/docs/index.html b/docs/index.html index 187a588..4119e86 100644 --- a/docs/index.html +++ b/docs/index.html @@ -111,11 +111,11 @@

Citation

Developers

    -
  • Robert Baker
    Author, maintainer
  • -
  • Judd Patterson
    Author
  • -
  • Joe DeVivo
    Author
  • -
  • Issac Quevedo
    Author
  • -
  • Sarah Wright
    Author
  • +
  • Robert Baker
    Author, maintainer
  • +
  • Judd Patterson
    Author
  • +
  • Joe DeVivo
    Author
  • +
  • Issac Quevedo
    Author
  • +
  • Sarah Wright
    Author
  • More about authors...
@@ -138,7 +138,7 @@

Dev status

diff --git a/docs/news/index.html b/docs/news/index.html deleted file mode 100644 index 4282321..0000000 --- a/docs/news/index.html +++ /dev/null @@ -1,201 +0,0 @@ - -Changelog • QCkit - Skip to contents - - -
-
-
- -
-

QCkit v1.2.1

-
-

2025-01-09

-
  • -create_datastore_script now has a new parameter, lib_type. If “R” is specified it will pull as much info as it can from the DESCRIPTION file of an R package and use that info to fill out the Core Bibliography tab on the reference landing page.
  • -
-
-

2025-01-06

-
  • Add ability to set the Origination flag in DataStore via the create_datastore_script function. Defaults to TRUE.
  • -
-
-

2025-01-05

-
  • Fixed bug in create_datastore_script that occurred when the way the DataStore API handled access constraints changed between V7 and V8. Also improved formatting of screen print and make the DataStore reference link clickable.
  • -
-
-

2025-12-31

-
  • Updated DataStore APIs to hit v8 API instead of now deprecated v7 API endponts
  • -
-
-

2025-05-22

-
  • fix minor bug in create_datastore_script
  • -
-
-
-

QCkit v1.2.0

-
-

2025-05-20

-
  • create_datastore_script modified to allow upload of large (>32mb) repos
  • -
-
-
-

QCkit v1.1.0

-
-

2025-07-25

-
  • add function get_user_orcid, which will look up a users orcid using active directory.
  • -
-
-

2025-05-16

-
  • create_datastore_script now invisibly returns the DataStore reference URL
  • -
-
-
-

QCkit v1.0.1

-
-

2025-03-25

-
  • fix bug that caused several functions to fail to detect certain .csv files
  • -

2025-03-12 * Updated license to MIT which is JOSS, NPS, and R compatible!

-

2025-03-10 * Updated license to OSI-approved “Zero-Clause BSD” in support of JOSS submission.

-

2025-03-06 * Begin development of unit_codes_to_names function to translate NPS unit codes into full unit (park) names * Add basic unit test for unit_codes_to_names

-

2025-02-25 * Updated CONTRIBUTING.md.

-

2025-02-21 * Add CONTRIBUTING.md file

-
-
-
-

QCkit v1.0.0

-

2024-07-16 * Added experimental function document_missing_values(), which searches a file for multiple missing value codes, replaces them all with NA, and generates a new column with the missing value codes so that they can be properly documented in EML. This is a work-around for the fact that there is currently not a good way to get multiple missing value codes in a single column via EMLassemblyline. This function is still under development; expect substantial changes an improvements up to and including removing the function entirely.

-

2024-07-09 * Added function get_user_email(), which accesses NPS active directory via a powershell function to return the user’s email address. Probably won’t work for non-NPS users and probably won’t work for non-windows users. * Updated rest API from legacy v6 to current v7.

-

2024-06-28 * Updated get_park_polygon() to use the new API (had been using a legacy API). Added documentation to specify that the function is getting the convexhull for the park, which may not work particularly well for some parks. 2024-06-27 * bug fixes for generate_ll_from_utm() * add function remove_empty_tables() (and associated unit tests) * update documentation for replace blanks() to indicate it can replace blanks with more than just NA

-
-
-

QCkit v0.1.7

-

2024-05-08 * Updated the replace_blanks() function to accept any missing value code a user inputs (but it still defaults to NA). 2024-04-18 * Added the function generate_ll_from_utm() which supersedes convert_utm_to_ll() and improves upon it in several ways, included accepting a column of UTMs and also returns a column of CRS along with the decimal degrees latitude and longitude. 2024-04-17 * Major updates to the DRR template including: using snake case instead of camel case for variables; updating Table 3 to only display filenames only when there are multiple files, fixed multiple issues with footnotes, added citations to NPSdataverse packages, added a section that prints the R code needed to download the data package and load it in to R. * Updated the DRR documentation to account for new variable names.

-
-
-

QCkit v0.1.6

-

2024-03-07 * Update error warning in check_te() to not reference VPN since NPS no longer uses VPN. * add private function .get_unit_bondaries(): hits ArcGIS API to pull more precise park unit boundaries than get_park_polgyon() * add validate_coord_list() function that takes advantage of improved precision of .get_unit_boundaries() and is vectorized, enabling users to input multiple coordinate combinations and park units directly from a data frame.

-
-
-

QCkit v0.1.5

-

2024-02-09 * This version adds the DRR template, example files, and associated documentation to the QCkit package. * Bugfix in get_custom_flag(): it was counting both A (accepted) and AE (Accepted, estimated) as Accepted. Fixed the regex such that it Accepted will include all cells that start with A followed by nothing or by any character except AE such that flags can have explanation codes added to them (e.g. A_jenkins if “Jenkins” flagged the data as accepted)

-
-
-

QCkit v0.1.4

-

2024-01-23 * Maintenance on get_custom_flag() to align with updated DRR requirements * Added function replace_blanks() to ingest a directory of .csvs and write them back out to .csv (overwriting the original files) with blanks converted to NA (except if a file has NO data - then it remains blank and needs to be dealt with manually)

-
-
-

QCkit 0.1.2 “Automated Shuttle Pilot”

-

2023-11-20 * Added the function create_datastore_scipt(), which given a username and repo for GitHub will generate a draft Script Reference on DataStore based on the information found in the latest Release on GitHub.

-

24 April 2023 * fixed bug in get_custom_flags().

-
-
-

QCkit 0.1.0.4

-

17 April 2023

-
  • -get_elevation() new function for getting elevation from GPS coordinates via USGS API.
  • -

21 March 2023

-
  • -order_cols new function for ordering columns added
  • -

16 March 2023

-
-
-

QCkit 0.1.0.3

-

28 February 2023

-
  • -te_check() bug fix - exact column name filtering allows for multiple columns with similar names in the input data column. Improved documentation for transparency.
  • -

23 February 2023

-
  • updated te_check(). It now supports searching multiple park units.
  • -

22 February 2023

-
  • updated te_check(). Now prints the source of the federal match list data and the date it was accessed to the console. Made the output format prettier. Added an “expansion” option to the function. Defaults to expansion = FALSE, which checks for exact matches between the scientific binomial supplied by the user and the full scientific binomial in the matchlist. When expansion = TRUE, the genera in the data supplied will be checked against the matchlist and all species from a given genera will be returned, regardless of whether a given species is actually in the supplied data set. A new column “InData” will tell the user whether a given species is actually in their data or has been expanded to.
  • -

-
-

QCkit 0.1.0.2

-

02 February 2023

-
  • Fixed a major bug in te_check() that was causing the function return species that were not threatened or endangered. The function now returns a tibble containing all species that are threatened, endangered, or considered for listing, specifies the status code of each species, and then give a brief explanation of the federal endangered species act status code returned.
  • -

-
-

QCkit 0.1.0.2

-
  • deprecated get_dp_flags(), get_df_flags(), and get_dc_flags in favor of get_custom_flags(). The new get_custom_flags() function returns 1-3 data frames, depending on user input that contain the output of the 3 previous functions. It also allows the user to specify additional non-flagged columns to be included in the QC summary. -
    • Marked get_custom_flags() as experimental.
    • -
    • Removed “force” option and removed final print statement
    • -
    • Reduced number of summary columns reported
    • -
    • fixed RRU calculation to be (A+AE)/(A+AE+P+R+NA) instead of (A+E)/(A+AE+P+R)
    • -
  • -
-
-

QCkit 0.1.0.1

-
  • Added 3 functions to summarize data quality flags: -
    • -get_dp_flags() returns counts of each data flag (A, AE, R, P) across the whole data package (as well as all cells in the data package).
    • -
    • -get_df_flags() returns counts of data flags within each data file of the data package (as well as counts for all cells within the data package).
    • -
    • -get_dc_flags() returns the name of each flagging column within each data package and the count of each flag within each column as well as the total number of cells across all the data flagging columns.
    • -
    • Each function has a force option that defaults to force = FALSE and prints the results to the screen. setting force = TRUE will suppress the on-screen output.
    • -
  • -
-
-

QCkit 0.1.0.0

-
  • Added a NEWS.md file to track changes to the package.
  • -
-
- - -
- - - -
- - - - - - - diff --git a/docs/pkgdown.js b/docs/pkgdown.js index 1a99c65..0a5573a 100644 --- a/docs/pkgdown.js +++ b/docs/pkgdown.js @@ -1,6 +1,6 @@ /* http://gregfranko.com/blog/jquery-best-practices/ */ -(function($) { - $(function() { +(function ($) { + $(function () { $('nav.navbar').headroom(); @@ -27,45 +27,45 @@ $('[data-bs-toggle="tooltip"]').tooltip(); - /* Clipboard --------------------------*/ + /* Clipboard --------------------------*/ - function changeTooltipMessage(element, msg) { - var tooltipOriginalTitle=element.getAttribute('data-bs-original-title'); - element.setAttribute('data-bs-original-title', msg); - $(element).tooltip('show'); - element.setAttribute('data-bs-original-title', tooltipOriginalTitle); - } + function changeTooltipMessage(element, msg) { + var tooltipOriginalTitle = element.getAttribute('data-bs-original-title'); + element.setAttribute('data-bs-original-title', msg); + $(element).tooltip('show'); + element.setAttribute('data-bs-original-title', tooltipOriginalTitle); + } - if(ClipboardJS.isSupported()) { - $(document).ready(function() { - var copyButton = ""; + if (ClipboardJS.isSupported()) { + $(document).ready(function () { + var copyButton = ""; - $("div.sourceCode").addClass("hasCopyButton"); + $("div.sourceCode").addClass("hasCopyButton"); - // Insert copy buttons: - $(copyButton).prependTo(".hasCopyButton"); + // Insert copy buttons: + $(copyButton).prependTo(".hasCopyButton"); - // Initialize tooltips: - $('.btn-copy-ex').tooltip({container: 'body'}); + // Initialize tooltips: + $('.btn-copy-ex').tooltip({ container: 'body' }); - // Initialize clipboard: - var clipboard = new ClipboardJS('[data-clipboard-copy]', { - text: function(trigger) { - return trigger.parentNode.textContent.replace(/\n#>[^\n]*/g, ""); - } - }); + // Initialize clipboard: + var clipboard = new ClipboardJS('[data-clipboard-copy]', { + text: function (trigger) { + return trigger.parentNode.textContent.replace(/\n#>[^\n]*/g, ""); + } + }); - clipboard.on('success', function(e) { - changeTooltipMessage(e.trigger, 'Copied!'); - e.clearSelection(); - }); + clipboard.on('success', function (e) { + changeTooltipMessage(e.trigger, 'Copied!'); + e.clearSelection(); + }); - clipboard.on('error', function(e) { - changeTooltipMessage(e.trigger,'Press Ctrl+C or Command+C to copy'); - }); + clipboard.on('error', function (e) { + changeTooltipMessage(e.trigger, 'Press Ctrl+C or Command+C to copy'); + }); - }); - } + }); + } /* Search marking --------------------------*/ var url = new URL(window.location.href); @@ -80,80 +80,80 @@ }); } - /* Search --------------------------*/ - /* Adapted from https://github.com/rstudio/bookdown/blob/2d692ba4b61f1e466c92e78fd712b0ab08c11d31/inst/resources/bs4_book/bs4_book.js#L25 */ + /* Search --------------------------*/ + /* Adapted from https://github.com/rstudio/bookdown/blob/2d692ba4b61f1e466c92e78fd712b0ab08c11d31/inst/resources/bs4_book/bs4_book.js#L25 */ // Initialise search index on focus - var fuse; - $("#search-input").focus(async function(e) { - if (fuse) { - return; - } - - $(e.target).addClass("loading"); - var response = await fetch($("#search-input").data("search-index")); - var data = await response.json(); + var fuse; + $("#search-input").focus(async function (e) { + if (fuse) { + return; + } + + $(e.target).addClass("loading"); + var response = await fetch($("#search-input").data("search-index")); + var data = await response.json(); + + var options = { + keys: ["what", "text", "code"], + ignoreLocation: true, + threshold: 0.1, + includeMatches: true, + includeScore: true, + }; + fuse = new Fuse(data, options); + + $(e.target).removeClass("loading"); + }); + // Use algolia autocomplete var options = { - keys: ["what", "text", "code"], - ignoreLocation: true, - threshold: 0.1, - includeMatches: true, - includeScore: true, + autoselect: true, + debug: true, + hint: false, + minLength: 2, }; - fuse = new Fuse(data, options); - - $(e.target).removeClass("loading"); - }); - - // Use algolia autocomplete - var options = { - autoselect: true, - debug: true, - hint: false, - minLength: 2, - }; - var q; -async function searchFuse(query, callback) { - await fuse; - - var items; - if (!fuse) { - items = []; - } else { - q = query; - var results = fuse.search(query, { limit: 20 }); - items = results - .filter((x) => x.score <= 0.75) - .map((x) => x.item); - if (items.length === 0) { - items = [{dir:"Sorry 😿",previous_headings:"",title:"No results found.",what:"No results found.",path:window.location.href}]; + var q; + async function searchFuse(query, callback) { + await fuse; + + var items; + if (!fuse) { + items = []; + } else { + q = query; + var results = fuse.search(query, { limit: 20 }); + items = results + .filter((x) => x.score <= 0.75) + .map((x) => x.item); + if (items.length === 0) { + items = [{ dir: "Sorry 😿", previous_headings: "", title: "No results found.", what: "No results found.", path: window.location.href }]; + } + } + callback(items); } - } - callback(items); -} - $("#search-input").autocomplete(options, [ - { - name: "content", - source: searchFuse, - templates: { - suggestion: (s) => { - if (s.title == s.what) { - return `${s.dir} >
${s.title}
`; - } else if (s.previous_headings == "") { - return `${s.dir} >
${s.title}
> ${s.what}`; - } else { - return `${s.dir} >
${s.title}
> ${s.previous_headings} > ${s.what}`; - } + $("#search-input").autocomplete(options, [ + { + name: "content", + source: searchFuse, + templates: { + suggestion: (s) => { + if (s.title == s.what) { + return `${s.dir} >
${s.title}
`; + } else if (s.previous_headings == "") { + return `${s.dir} >
${s.title}
> ${s.what}`; + } else { + return `${s.dir} >
${s.title}
> ${s.previous_headings} > ${s.what}`; + } + }, }, }, - }, - ]).on('autocomplete:selected', function(event, s) { - window.location.href = s.path + "?q=" + q + "#" + s.id; - }); + ]).on('autocomplete:selected', function (event, s) { + window.location.href = s.path + "?q=" + q + "#" + s.id; + }); }); })(window.jQuery || window.$) -document.addEventListener('keydown', function(event) { +document.addEventListener('keydown', function (event) { // Check if the pressed key is '/' if (event.key === '/') { event.preventDefault(); // Prevent any default action associated with the '/' key diff --git a/docs/pkgdown.yml b/docs/pkgdown.yml index 206bccf..5379922 100644 --- a/docs/pkgdown.yml +++ b/docs/pkgdown.yml @@ -1,11 +1,11 @@ pandoc: 3.6.3 -pkgdown: 2.1.1 +pkgdown: 2.2.0 pkgdown_sha: ~ articles: articles/DRR_Purpose_and_Scope: DRR_Purpose_and_Scope.html articles/Starting-a-DRR: Starting-a-DRR.html articles/Using-the-DRR-Template: Using-the-DRR-Template.html -last_built: 2026-01-09T22:30Z +last_built: 2026-02-26T19:15Z urls: reference: https://nationalparkservice.github.io/QCkit/reference article: https://nationalparkservice.github.io/QCkit/articles diff --git a/docs/reference/DC_col_check.html b/docs/reference/DC_col_check.html deleted file mode 100644 index b345a49..0000000 --- a/docs/reference/DC_col_check.html +++ /dev/null @@ -1,102 +0,0 @@ - -TDWG Darwin Core Column Name Check 08-23-2022 — DC_col_check • QCkit - Skip to contents - - -
-
-
- -
-

lifecycle::badge("deprecated")

-

DC_col_check() was deprecated in favor of check_dc_cols() to enforce consistency in function naming throughout the package and to be consistent with tidyverse style guides.

-

DC_col_check checks to see if the column names in your dataframe match the standardized simple Darwin Core names established by the Taxonomic Databases Working Group

-
- -
-

Usage

-
DC_col_check(working_df)
-
- -
-

Arguments

- - -
working_df
-
  • This is the dataframe you want to run against the function. To call, simply write working_df = "the name of your dataframe".

  • -
- -
-
-

Value

- -
  • The function returns a list of the column names you should fix (not fitting with simple Darwin Core terms, custom name formatting, data quality flagging formatting). Additionally, a small summary table is printed with the counts of the columns falling under each category (DarwinCore, Custom, DQ, Fix Me).

  • -
-
-

Details

-

A dataframe is created with all the simple DarwinCore terms, drawn from Darwin Core reference guide: https://dwc.tdwg.org/terms/ last updated 07-15-2021. We have chosen to align ourselves mostly with the simple Darwin Core rules: https://dwc.tdwg.org/simple/. The function runs through each of the column names in your working dataframe to see if they match 1. A standard simple DarwinCore name 2. A name with a pattern of strings matching "custom_", indicating a custom made column or 3. A name with a pattern of strings matching "_DQ", indicating a data quality flag. If the column name does not fit within any of the three categories, a "Fix me" statement is printed alongside the column name. The function then counts all of the names fitting within each category and prints a summary table.

-
- -
-

Examples

-
if (FALSE) { # \dontrun{
-DC_col_check(yourdataframe)
-} # }
-
-
-
- - -
- - - -
- - - - - - - diff --git a/docs/reference/QCkit-package.html b/docs/reference/QCkit-package.html deleted file mode 100644 index 9d6817d..0000000 --- a/docs/reference/QCkit-package.html +++ /dev/null @@ -1,84 +0,0 @@ - -QCkit: NPS Inventory and Monitoring Quality Control Toolkit — QCkit-package • QCkit - Skip to contents - - -
-
-
- -
-

This package contains a set of useful functions for data munging, quality control, and data flagging. Functions are contributed by multiple U.S. National Park Service staff, contractors, partners and others. These functions will likely be most useful for quality control of NPS data but may have utility beyond their intended functions.

-
- - - -
-

Author

-

Maintainer: Robert Baker robert_baker@nps.gov (ORCID)

-

Authors:

Other contributors:

  • Sarah Kelso (ORCID) [contributor]

  • -
  • Amy Sherman (ORCID) [contributor]

  • -
- -
- - -
- - - -
- - - - - - - diff --git a/docs/reference/check_dc_cols.html b/docs/reference/check_dc_cols.html deleted file mode 100644 index bc85b90..0000000 --- a/docs/reference/check_dc_cols.html +++ /dev/null @@ -1,96 +0,0 @@ - -TDWG Darwin Core Column Name Check 08-23-2022 — check_dc_cols • QCkit - Skip to contents - - -
-
-
- -
-

check_dc_cols() checks to see if the column names in your dataframe match the standardized simple Darwin Core names established by the Taxonomic Databases Working Group

-
- -
-

Usage

-
check_dc_cols(working_df)
-
- -
-

Arguments

- - -
working_df
-
  • This is the dataframe you want to run against the function. To call, simply write working_df = "the name of your dataframe".

  • -
- -
-
-

Value

- -
  • The function returns a list of the column names you should fix (not fitting with simple Darwin Core terms, custom name formatting, data quality flagging formatting). Additionally, a small summary table is printed with the counts of the columns falling under each category (DarwinCore, Custom, DQ, Fix Me).

  • -
-
-

Details

-

A dataframe is created with all the simple DarwinCore terms, drawn from Darwin Core reference guide: https://dwc.tdwg.org/terms/ last updated 07-15-2021. We have chosen to align ourselves mostly with the simple Darwin Core rules: https://dwc.tdwg.org/simple/. The function runs through each of the column names in your working dataframe to see if they match 1. A standard simple DarwinCore name 2. A name with a pattern of strings matching "custom_", indicating a custom made column or 3. A name with a pattern of strings matching "_DQ", indicating a data quality flag. If the column name does not fit within any of the three categories, a "Fix me" statement is printed alongside the column name. The function then counts all of the names fitting within each category and prints a summary table.

-
- -
-

Examples

-
if (FALSE) { # \dontrun{
-check_dc_cols(yourdataframe)
-} # }
-
-
-
- - -
- - - -
- - - - - - - diff --git a/docs/reference/check_te.html b/docs/reference/check_te.html deleted file mode 100644 index 7ed09c3..0000000 --- a/docs/reference/check_te.html +++ /dev/null @@ -1,119 +0,0 @@ - -Threatened Or Endangered Species Checker Function — check_te • QCkit - Skip to contents - - -
-
-
- -
-

check_te() generates a list of species you should consider removing from your dataset before making it public by matching the scientific names within your data set to the Federal Conservation List. check_te() should be considered a helpful tool for identifying federally listed endangered and threatened species in your data. Each National Park has a park-specific Protected Data Memo that outlines which data should be restricted. Threatened and endangered species are often - although not always - listed on these Memos. Additional species (from state conservation lists) or non-threatened and non-endangered species of concern or other biological or non-biological resources may be listed on Memos. Consult the relevant park-specific Protected Data Memo prior to making decisions on restricting or releasing data.

-
- -
-

Usage

-
check_te(x, species_col, park_code, expansion = FALSE)
-
- -
-

Arguments

- - -
x
-
  • The name of your data frame containing species observations

  • -
- - -
species_col
-
  • The name of the column within your data frame containing the scientific names of the species (genus and specific epithet).

  • -
- - -
park_code
-
  • A four letter park code. Or a list of park codes.

  • -
- - -
expansion
-
  • Logical. Defaults to FALSE. The default setting will return only exact matches between your the scientific binomial (genera and specific epithet) in your data set and the federal match list. Setting expansion = TRUE will expand the list of matches to return all species (and subspecies) that from the match list that match any genera listed in your data set, regardless of whether a given species is actually in your data set. An additional column indicating whether the species returned is in your data set ("In your Data") or has been expanded to ("Expansion") is generated.

  • -
- -
-
-

Value

-

The function returns a (modified) data frame with the names of all the species that fall under the federal conservation list. The resulting data frame may have multiple instances of a given species if it is listed in multiple parks (park codes for each listing are supplied). Technically it is a huxtable, but it should function identically to a data frame for downstream purposes.

-
-
-

Details

-

Define your species data set name, column name with the scientific names of your species, and your four letter park code.

-

The check_te() function downloads the Federal Conservation list using the IRMA odata API service and matches this species list to the list of scientific names in your data frame. Keep in mind that this is a Federal list, not a state list. Changes in taxa names may also cause some species to be missed. Because the odata API service is not publicly available, you must be logged in to the NPS VPN or in the office to use this function.

-

For the default, expansion = FALSE, the function will perform an exact match between the taxa in your scientificName column and the federal Conservation List and then filter the results to keep only species that are listed as endangered, threatened, or considered for listing. If your scientificName column contains information other than the binomial (genus and species), no matches will be returned. For instance, if you have an Order or just a genus listed, these will not be matched to the Federal Conservation List.

-

If you set expansion = TRUE, the function will truncate each item in your scientificName column to the first word in an attempt to extract a genus name. If you only have genera listed, these will be retained. If you have have higher-order taxa listed such as Family, Order, or Phyla again the first word will be retained. This first word (typically a genus) will be matched to just the generic name of species from the Federal Conservation List. All matches, regardless of listing status, are retained. The result is that for a given species in your scientificName column, all species within that genus that are on the Federal Conservation List will be returned (along with their federal conservation listing codes and a column indicating whether the species is actually in your data or is part of the expanded search).

-
- -
-

Examples

-
if (FALSE) { # \dontrun{
-#for individual parks:
-check_te(x = my_species_dataframe, species_col = "scientificName", park_code = "BICY")
-list<-check_te(data, "scientificName", "ROMO", expansion=TRUE)
-# for a list of parks:
-park_code<-c("ROMO", "YELL", "SAGU")
-list<-check_te(data, "scientificName", park_code, expansion=TRUE)
-} # }
-
-
-
-
- - -
- - - -
- - - - - - - diff --git a/docs/reference/convert_datetime_format.html b/docs/reference/convert_datetime_format.html deleted file mode 100644 index 2eb27c8..0000000 --- a/docs/reference/convert_datetime_format.html +++ /dev/null @@ -1,100 +0,0 @@ - -Convert EML date/time format string to one that R can parse — convert_datetime_format • QCkit - Skip to contents - - -
-
-
- -
-

Convert EML date/time format string to one that R can parse

-
- -
-

Usage

-
convert_datetime_format(eml_format_string, convert_z = FALSE)
-
- -
-

Arguments

- - -
eml_format_string
-

A character vector of EML date/time format strings. This function understands the following codes: YYYY = four digit year, YY = two digit year, MMM = three letter month abbrev., MM = two digit month, DD = two digit day, hh or HH = 24 hour time, mm = minutes, ss or SS = seconds, +/-hhmm, +/-hh:mm, or +/-hh = UTC offset.

- - -
convert_z
-

Should a "Z" at the end of the format string (indicating UTC) be replaced by a "%z"? Only set to TRUE if you plan to use fix_utc_offset to change "Z" in datetime strings to "+0000".

- -
-
-

Value

-

A character vector of date/time format strings that can be parsed by readr or strptime.

-
-
-

Details

-

convert_datetime_format() is not a sophisticated function. If the EML format string is not valid, it will happily and without complaint return an R format string that will break your code. You have been warned. Note that UTC offset formats using a colon or only two digits will be parsed by this function, but if parsing datetime values from strings, you will also need to use fix_utc_offset to change the UTC offsets to the +/-hhmm format that R can read.

-
- -
-

Examples

-
convert_datetime_format("MM/DD/YYYY")
-#> [1] "%m/%d/%Y"
-convert_datetime_format(c("MM/DD/YYYY", "YY-MM-DD"))
-#> [1] "%m/%d/%Y" "%y-%m-%d"
-
-
-
-
- - -
- - - -
- - - - - - - diff --git a/docs/reference/convert_long_to_utm.html b/docs/reference/convert_long_to_utm.html deleted file mode 100644 index d5f185f..0000000 --- a/docs/reference/convert_long_to_utm.html +++ /dev/null @@ -1,101 +0,0 @@ - -Return UTM Zone — convert_long_to_utm • QCkit - Skip to contents - - -
-
-
- -
-

[Deprecated] -convert_long_2_utm() was deprecated in favor of get_utm_zone() as the -new funciton name more accurately reflects what the function does. -convert_long_to_utm() take a longitude coordinate and returns the -corresponding UTM zone.

-
- -
-

Usage

-
convert_long_to_utm(lon)
-
- -
-

Arguments

- - -
lon
-
  • Decimal degree longitude value

  • -
- -
-
-

Value

-

The function returns a numeric UTM zone (between 1 and 60).

-
-
-

Details

-

Input a longitude (decimal degree) coordinate and this simple -function returns the number of the UTM zone where that point falls.

-
- -
- - -
- - - -
- - - - - - - diff --git a/docs/reference/convert_utm_to_ll.html b/docs/reference/convert_utm_to_ll.html deleted file mode 100644 index 422b386..0000000 --- a/docs/reference/convert_utm_to_ll.html +++ /dev/null @@ -1,163 +0,0 @@ - -Coordinate Conversion from UTM to Latitude and Longitude — convert_utm_to_ll • QCkit - Skip to contents - - -
-
-
- -
-

[Superseded] -convert_utm_to_ll() was superseded in favor of generate_ll_from_utm() to -support and encourage including zone and datum columns in datasets. generate_ll_from_utm() -also adds the ability to specify the coordinate reference system for lat/long coordinates, -and accepts column names either quoted or unquoted for better compatibility with -tidyverse piping. -convert_utm_to_ll() takes your dataframe with UTM coordinates -in separate Easting and Northing columns, and adds on an additional two -columns with the converted decimalLatitude and decimalLongitude coordinates -using the reference coordinate system WGS84. You may need to turn the VPN OFF -for this function to work properly.

-
- -
-

Usage

-
convert_utm_to_ll(df, EastingCol, NorthingCol, zone, datum = "WGS84")
-
- -
-

Arguments

- - -
df
-
  • The dataframe with UTM coordinates you would like to convert. -Input the name of your dataframe.

  • -
- - -
EastingCol
-
  • The name of your Easting UTM column. Input the name in -quotations, ie. "EastingCol".

  • -
- - -
NorthingCol
-
  • The name of your Northing UTM column. Input the name in -quotations, ie. "NorthingCol".

  • -
- - -
zone
-
  • The UTM Zone. Input the zone number in quotations, ie. "17".

  • -
- - -
datum
-
  • The datum used in the coordinate reference system of your -coordinates. Input in quotations, ie. "WGS84"

  • -
- -
-
-

Value

-

The function returns your dataframe, mutated with an additional two -columns of decimal Longitude and decimal Latitude.

-
-
-

Details

-

Define the name of your dataframe, the easting and northing columns -within it, the UTM zone within which those coordinates are located, and the -reference coordinate system (datum). UTM Northing and Easting columns must be -in separate columns prior to running the function. If a datum is not defined, -the function will default to "WGS84". If there are missing coordinates in -your dataframe they will be preserved, however they will be moved to the end -of your dataframe. Note that some parameter names are not in snake_case but -instead reflect DarwinCore naming conventions.

-
- -
-

Examples

-
if (FALSE) { # \dontrun{
-convert_utm_to_ll(
-  df = mydataframe,
-  EastingCol = "EastingCoords",
-  NorthingCol = "NorthingCoords",
-  zone = "17",
-  datum = "WGS84"
-)
-} # }
-
-
-
- - -
- - - -
- - - - - - - diff --git a/docs/reference/create_datastore_script.html b/docs/reference/create_datastore_script.html deleted file mode 100644 index 4c266e5..0000000 --- a/docs/reference/create_datastore_script.html +++ /dev/null @@ -1,177 +0,0 @@ - -Turn a GitHub release into a DataStore Script Reference — create_datastore_script • QCkit - Skip to contents - - -
-
-
- -
-

Given a GitHub owner ("nationalparkservice") and public repo ("EMLeditor"), the function uses the GitHub API to access the latest release version on GitHub and generate a corresponding draft public Script reference on DataStore.

-

WARNING: if you are not an author of the repo on GitHub, you should probably NOT be the one adding it to DataStore unless you have very good reason. If you want to cite a GitHub release/repo and need a DOI, contact the repo maintainer and suggest they use this function to put it on DataStore for you.

-

The function searches DataStore for references with a similar title (where the title is repo + release tag). If force = FALSE and there are similarly titled references, the function will return a list of them and ask if the user really wants a new DataStore reference generated. Assuming yes (or if there are no existing DataStore references with a similar title or if force = TRUE), the function will:

  1. download the .zip of the latest GitHub release for the repo,

  2. -
  3. initiate a draft reference on DataStore,

  4. -
  5. give the draft reference a title (repo + release tag),

  6. -
  7. upload the .zip from GitHub

  8. -
  9. add a web link to the release on GitHub.

  10. -
  11. add the items listed under GitHub repo "Topics" as keywords to the DataStore Script reference

  12. -
  13. Set for or by NPS flag

  14. -
  15. Set the issued date

  16. -
  17. If you indicate it is an R package, the authors, steward, description, and other fields will be filled out on the Core tab -#' -The user will still need to go access the draft Script reference on DataStore to fill in the remaining fields (which are not accessible via API and so cannot be automated through this function) and activate the reference (thereby generating and registering a citeable DOI).

  18. -

If the Reference is a version of an older reference, the user will have to access the older version and indicate that it is an older version of the current Reference. The user will also have to manually add the new Reference to a Project for the repo, if desired.

-
- -
-

Usage

-
create_datastore_script(
-  owner,
-  repo,
-  lib_type = c("generic_script", "R", "python"),
-  path = here::here(),
-  force = FALSE,
-  dev = FALSE,
-  for_or_by_NPS = TRUE,
-  chunk_size_mb = 1,
-  retry = 1
-)
-
- -
-

Arguments

- - -
owner
-

String. The owner of the account where the GitHub repo resides. For example, "nationalparkservice"

- - -
repo
-

String. The repo with a release that should be turned into a DataStore Script reference. For example, "EMLeditor"

- - -
lib_type
-

String. Can be one of three values: generic_script, R, or python. Defaults to "generic_script".

- - -
path
-

String. The location where the release .zip from GitHub should be downloaded to (and uploaded from). Defaults to the working directory of the R Project (i.e. here::here()).

- - -
force
-

Logical. Defaults to FALSE. In the default status the function has a number of interactive components, such as searching DataStore for similarly titled References and asking if a new Reference is really what the user wants. When set to TRUE, all interactive components are turned off and the function will proceed unless it hits an error. Setting force = TRUE may be useful for scripting purposes.

- - -
dev
-

Logical. Defaults to FALSE. In the default status, the function generates and populates a new draft Script reference on the DataStore production server. If set to TRUE, the draft Script reference will be generated and populated on the DataStore development server. Setting dev = TRUE may be useful for testing the function without generating excessive references on the DataStore production server.

- - -
for_or_by_NPS
-

Logical. Was the code, script, or software created either for or by NPS? Defaults to TRUE.

- - -
chunk_size_mb
-

The "chunk" size to break the file into for upload. If your network is slow and your uploads are failing, try decreasing this number (e.g. 0.5 or 0.25).

- - -
retry
-

How many times to retry uploading a file chunk if it fails on the first try.

- -
-
-

Value

-

Invisibly returns the URL to the DataStore draft reference that was created.

-
- -
-

Examples

-
if (FALSE) { # \dontrun{
-create_datastore_script("nationalparkservice", "EMLeditor")
-} # }
-
-
-
- - -
- - - -
- - - - - - - diff --git a/docs/reference/document_missing_values.html b/docs/reference/document_missing_values.html deleted file mode 100644 index a6b568e..0000000 --- a/docs/reference/document_missing_values.html +++ /dev/null @@ -1,159 +0,0 @@ - -Handles multiple missing values — document_missing_values • QCkit - Skip to contents - - -
-
-
- -
-

[Experimental] -[Questioning] -Given a file name (.csv only) and path, the function will search the -columns for any that contain multiple user-specified missing value codes. -For any column with multiple missing value codes, all the missing values -(including blanks) will be replaced with NA. A new column will be generated -and, populated with the given missing value code from the origin column. -Values that were not missing will be populated with "not_missing". The -newly generate column of categorical variables can be used do describe -the various/multiple reasons for why data is absent in the original column.

-

The function will then write the new dataframe to a file, overwriting the -original file. If it is important to keep a copy of the original file, make -a copy prior to running the function.

-

WARNING: this function will replace any blank cells in your data with NA!

-
- -
-

Usage

-
document_missing_values(
-  file_name,
-  directory = here::here(),
-  colname = NA,
-  missing_val_codes = NA,
-  replace_value = NA
-)
-
- -
-

Arguments

- - -
file_name
-

String. The name of the file to inspect

- - -
directory
-

String. Location of file to read/write. Defaults to the current working directory.

- - -
colname
-

[Experimental] String. The columns to inspect. CURRENTLY ONLY WORKS AS SET TO DEFAULT "NA".

- - -
missing_val_codes
-

List. A list of strings containing the missing value code or codes to search for.

- - -
replace_value
-

String. The value (singular) to replace multiple missing values with. Defaults to NA.

- -
-
-

Value

-

writes a new dataframe to file. Return invisible.

-
-
-

Details

-

Blank cells will be treated as NA.

-
- -
-

Examples

-
if (FALSE) { # \dontrun{
-document_missing_values(file_name = "mydata.csv",
-                        directory = here::here(),
-                        colname = NA, #do not change during function development
-                        missing_val_codes = c("missing", "blank", "no data"),
-                        replace_value = NA)
-                        } # }
-
-
-
- - -
- - - -
- - - - - - - diff --git a/docs/reference/figures/lifecycle-archived.svg b/docs/reference/figures/lifecycle-archived.svg deleted file mode 100644 index 745ab0c..0000000 --- a/docs/reference/figures/lifecycle-archived.svg +++ /dev/null @@ -1,21 +0,0 @@ - - lifecycle: archived - - - - - - - - - - - - - - - lifecycle - - archived - - diff --git a/docs/reference/figures/lifecycle-defunct.svg b/docs/reference/figures/lifecycle-defunct.svg deleted file mode 100644 index d5c9559..0000000 --- a/docs/reference/figures/lifecycle-defunct.svg +++ /dev/null @@ -1,21 +0,0 @@ - - lifecycle: defunct - - - - - - - - - - - - - - - lifecycle - - defunct - - diff --git a/docs/reference/figures/lifecycle-deprecated.svg b/docs/reference/figures/lifecycle-deprecated.svg deleted file mode 100644 index b61c57c..0000000 --- a/docs/reference/figures/lifecycle-deprecated.svg +++ /dev/null @@ -1,21 +0,0 @@ - - lifecycle: deprecated - - - - - - - - - - - - - - - lifecycle - - deprecated - - diff --git a/docs/reference/figures/lifecycle-experimental.svg b/docs/reference/figures/lifecycle-experimental.svg deleted file mode 100644 index 5d88fc2..0000000 --- a/docs/reference/figures/lifecycle-experimental.svg +++ /dev/null @@ -1,21 +0,0 @@ - - lifecycle: experimental - - - - - - - - - - - - - - - lifecycle - - experimental - - diff --git a/docs/reference/figures/lifecycle-maturing.svg b/docs/reference/figures/lifecycle-maturing.svg deleted file mode 100644 index 897370e..0000000 --- a/docs/reference/figures/lifecycle-maturing.svg +++ /dev/null @@ -1,21 +0,0 @@ - - lifecycle: maturing - - - - - - - - - - - - - - - lifecycle - - maturing - - diff --git a/docs/reference/figures/lifecycle-questioning.svg b/docs/reference/figures/lifecycle-questioning.svg deleted file mode 100644 index 7c1721d..0000000 --- a/docs/reference/figures/lifecycle-questioning.svg +++ /dev/null @@ -1,21 +0,0 @@ - - lifecycle: questioning - - - - - - - - - - - - - - - lifecycle - - questioning - - diff --git a/docs/reference/figures/lifecycle-soft-deprecated.svg b/docs/reference/figures/lifecycle-soft-deprecated.svg deleted file mode 100644 index 9c166ff..0000000 --- a/docs/reference/figures/lifecycle-soft-deprecated.svg +++ /dev/null @@ -1,21 +0,0 @@ - - lifecycle: soft-deprecated - - - - - - - - - - - - - - - lifecycle - - soft-deprecated - - diff --git a/docs/reference/figures/lifecycle-stable.svg b/docs/reference/figures/lifecycle-stable.svg deleted file mode 100644 index 9bf21e7..0000000 --- a/docs/reference/figures/lifecycle-stable.svg +++ /dev/null @@ -1,29 +0,0 @@ - - lifecycle: stable - - - - - - - - - - - - - - - - lifecycle - - - - stable - - - diff --git a/docs/reference/figures/lifecycle-superseded.svg b/docs/reference/figures/lifecycle-superseded.svg deleted file mode 100644 index db8d757..0000000 --- a/docs/reference/figures/lifecycle-superseded.svg +++ /dev/null @@ -1,21 +0,0 @@ - - lifecycle: superseded - - - - - - - - - - - - - - - lifecycle - - superseded - - diff --git a/docs/reference/fix_utc_offset.html b/docs/reference/fix_utc_offset.html deleted file mode 100644 index 994335e..0000000 --- a/docs/reference/fix_utc_offset.html +++ /dev/null @@ -1,94 +0,0 @@ - -Fix UTC offset strings — fix_utc_offset • QCkit - Skip to contents - - -
-
-
- -
-

UTC offsets can be formatted in multiple ways (e.g. -07, -07:00, -0700) and R often struggles to parse these offsets. This function takes date/time strings with valid UTC offsets, and formats them so that they are consistent and readable by R. Here, you can supply a vector of dates in ISO 8601 format and they will be returned in a consistent format compatible with R. Date strings with missing or invalid UTC offsets will result in a warning.

-
- -
-

Usage

-
fix_utc_offset(datetime_strings)
-
- -
-

Arguments

- - -
datetime_strings
-

Character vector of dates in ISO 8601 format

- -
-
-

Value

-

datetime_strings with UTC offsets consistently formatted to four digits (e.g. "2023-11-16T03:32:49-0700").

-
- -
-

Examples

-
datetimes <- c("2023-11-16T03:32:49+07:00", "2023-11-16T03:32:49-07",
-"2023-11-16T03:32:49","2023-11-16T03:32:49Z")
-fix_utc_offset(datetimes)
-#> Warning: Date strings contain missing or invalid UTC offsets
-#> [1] "2023-11-16T03:32:49+0700" "2023-11-16T03:32:49-0700"
-#> [3] "2023-11-16T03:32:49"      "2023-11-16T03:32:49+0000"
-
-
-
-
- - -
- - - -
- - - - - - - diff --git a/docs/reference/fuzz_location.html b/docs/reference/fuzz_location.html deleted file mode 100644 index 92065cc..0000000 --- a/docs/reference/fuzz_location.html +++ /dev/null @@ -1,128 +0,0 @@ - -Convert Coordinates Into a Polygon to Obscure Specific Location — fuzz_location • QCkit - Skip to contents - - -
-
-
- -
-

fuzz_location() "fuzzes" a specific location to something less -precise prior to public release of information about sensitive resources for -which data are not to be released to the public. This function takes -coordinates in either UTM or decimal degrees, converts to UTM (if in decimal -degrees), creates a bounding box based on rounding of UTM coordinates, and -then creates a polygon from the resultant points. The function returns a -string in Well-Known-Text format.

-
- -
-

Usage

-
fuzz_location(lat, lon, coord_ref_sys = 4326, fuzz_level = "Fuzzed - 1km")
-
- -
-

Arguments

- - -
lat
-
  • The latitude in either UTMs or decimal degrees.

  • -
- - -
lon
-
  • The longitude in either UTMs or decimal degrees

  • -
- - -
coord_ref_sys
-
  • The EPSG coordinate system of the latitude and -longitude coordinates. Either 4326 for decimal degrees/WGS84 datum, 4269 for -decimal degrees/NAD83, or 326xx for UTM/WGS84 datum (where the xx is the -northern UTM zone). For example 32616 is for UTM zone 16N.

  • -
- - -
fuzz_level
-
  • Use "Fuzzed - 10km", "Fuzzed - 1km", or "Fuzzed - 100m"

  • -
- -
-
-

Details

-

Details will be defined later.

-
- -
-

Examples

-
if (FALSE) { # \dontrun{
-fuzz_location(703977, 4035059, 32616, "Fuzzed - 1km")
-fuzz_location(36.43909, -84.72429, 4326, "Fuzzed - 1km")
-} # }
-
-
-
- - -
- - - -
- - - - - - - diff --git a/docs/reference/generate_ll_from_utm.html b/docs/reference/generate_ll_from_utm.html deleted file mode 100644 index cb3b1c6..0000000 --- a/docs/reference/generate_ll_from_utm.html +++ /dev/null @@ -1,203 +0,0 @@ - -Coordinate Conversion from UTM to Latitude and Longitude — generate_ll_from_utm • QCkit - Skip to contents - - -
-
-
- -
-

generate_ll_from_utm() takes your dataframe with UTM coordinates -in separate Easting and Northing columns, and adds on an additional two -columns with the converted decimalLatitude and decimalLongitude coordinates -using the reference coordinate system NAD83. Your data must also contain columns -specifying the zone and datum of your UTM coordinates. -In contrast to convert_utm_to_ll() (superseded), generate_ll_from_utm() requires -zone and datum columns. It supports quoted or unquoted column names and a user-specified datum for lat/long -coordinates. It also adds an extra column to the output data table that documents the -lat/long coordinate reference system.

-
- -
-

Usage

-
generate_ll_from_utm(
-  df,
-  EastingCol,
-  NorthingCol,
-  ZoneCol,
-  DatumCol,
-  latlong_datum = "NAD83"
-)
-
- -
-

Arguments

- - -
df
-
  • The dataframe with UTM coordinates you would like to convert. -Input the name of your dataframe.

  • -
- - -
EastingCol
-
  • The name of your Easting UTM column. You may input the name -with or without quotations, ie. EastingCol and "EastingCol" are both valid.

  • -
- - -
NorthingCol
-
  • The name of your Northing UTM column. You may input the name -with or without quotations, ie. NorthingCol and "NorthingCol" are both valid.

  • -
- - -
ZoneCol
-
  • The column containing the UTM zone, with or without quotations.

  • -
- - -
DatumCol
-
  • The column containing the datum for your UTM coordinates, -with or without quotations.

  • -
- - -
latlong_datum
-
  • The datum to use for lat/long coordinates. Defaults to NAD83.

  • -
- -
-
-

Value

-

The function returns your dataframe, mutated with an additional two -columns of decimalLongitude and decimalLatitude plus a column LatLong_CRS containing -a PROJ string that specifies the coordinate reference system for these data.

-
-
-

Details

-

Define the name of your dataframe, the easting and northing columns -within it, the UTM zone within which those coordinates are located, and the -reference coordinate system (datum). UTM Northing and Easting columns must be -in separate columns prior to running the function. If a datum for the lat/long output -is not defined, the function will default to "NAD83". If there are missing coordinates in -your dataframe they will be preserved, however they will be moved to the end -of your dataframe. Note that some parameter names are not in snake_case but -instead reflect DarwinCore naming conventions.

-

This function uses tidy evaluation (i.e. you can provide column name arguments -as strings or you can leave them unquoted). If you wish to store column names -as strings in variables, you must enclose the variables in double curly braces -when you pass them into the function. See code examples below.

-
- -
-

Examples

-
if (FALSE) { # \dontrun{
-
-# Using magrittr pipe (%>%) and unquoted column names
-my_dataframe %>%
-generate_ll_from_utm(
-  EastingCol = UTM_X,
-  NorthingCol = UTM_Y,
-  ZoneCol = Zone,
-  DatumCol = Datum
-)
-
-# Providing column names as strings (in quotes)
-generate_ll_from_utm(
-  df = mydataframe,
-  EastingCol = "EastingCoords",
-  NorthingCol = "NorthingCoords",
-  ZoneCol = "zone",
-  DatumCol = "datum",
-  latlong_datum = "WGS84"
-)
-
-# Column names stored as strings in separate variables
-easting <- "EastingCoords"
-northing <- "NorthingCoords"
-zonecol <- "zone"
-datumcol <- "datum"
-latlong_dat <- "WGS84"
-
-generate_ll_from_utm(
-  df = mydataframe,
-  EastingCol = {{easting}},  # enclose variables that store column names in {{}}
-  NorthingCol = {{northing}},
-  ZoneCol = {{zonecol}},
-  DatumCol = {{datumcol}},
-  latlong_datum = latlong_dat  # this isn't a column name so it doesn't need {{}}
-)
-
-} # }
-
-
-
- - -
- - - -
- - - - - - - diff --git a/docs/reference/get_custom_flags.html b/docs/reference/get_custom_flags.html deleted file mode 100644 index 2b40c44..0000000 --- a/docs/reference/get_custom_flags.html +++ /dev/null @@ -1,170 +0,0 @@ - -Creates dataframe(s) summarizing data quality — get_custom_flags • QCkit - Skip to contents - - -
-
-
- -
-

[Experimental] -get_custom_flags returns data frames that that summarize data -quality control flags (one that summarizes at the data file level and one for each column). The summaries include all data -with quality control flagging (a column name that ends in "_flag") and -optionally any additional custom columns the user specifies, either by column -name or number.

-

The use can specify which of the 2 data frames (or all as a list of -dataframes) should be returned.

-

The number of each flag type for each column (A, AE, R, P) is reported. -Unflagged columns are assumed to have only accepted (or missing) data. The -total number of data points in the specified columns (and data flagging -columns for) each .csv are also reported. NAs considered missing data. An -Unweighted Relative Response (RRU) is calculated as the total number of -accepted data points (A, AE, and data that are not flagged) divided by the -total number of data points (excluding missing values) in all specified -columns (and the flagged columns).

-
- -
-

Usage

-
get_custom_flags(
-  directory = here::here(),
-  cols = (""),
-  output = c("all", "files", "columns")
-)
-
- -
-

Arguments

- - -
directory
-

is the path to the data package .csv files (defaults to the -current working directory).

- - -
cols
-

A comma delimited list of column names. If left unspecified, -defaults to just flagged columns.

- - -
output
-

A string indicating what output should be provided. "columns" -returns a summary table of QC flags and RRU values in each specified column -for every data file. "files" returns a summary table of total QC flags and -mean across each data file. "all" will return all three -data frames in a single list.

- -
-
-

Value

-

a dataframe with quality control summary information summarized at -the specified level(s).

-
-
-

Details

-

Flagged columns must have names ending in "_flag". Missing values -must be specified as NA. The function counts cells within "*_flag" columns -that start with one of the flagging characters (A, AE, R, P) and ignores -trailing characters and white spaces. For custom columns that do not include -a specific flagging column, all non-missing (non-NA) values are considered -Accepted (A).

-

The intent of get_custom_flags is for integration into reports on data -quality, such as Data Release Reports (DRRs).

-
- -
-

Examples

-
if (FALSE) { # \dontrun{
-
-get_custom_flags("~/my_data_package_directory", cols = c("scientificName",
-                                                         "locality"),
-                                                         output="all")
-cols <- colnames(read.csv("mydata.csv"))[c(1:4, 7, 10)]
-get_custom_flags(cols = cols, output="files")
-} # }
-
-
-
- - -
- - - -
- - - - - - - diff --git a/docs/reference/get_dc_flags.html b/docs/reference/get_dc_flags.html deleted file mode 100644 index a6b110d..0000000 --- a/docs/reference/get_dc_flags.html +++ /dev/null @@ -1,125 +0,0 @@ - -Create Table of Data Quality Flags in Flagging Columns within individual data columns — get_dc_flags • QCkit - Skip to contents - - -
-
-
- -
-

[Deprecated] -get_dc_flags (dc=data columns) returns a data frame that, for -each data file in a data package lists the name of each data flagging column -and the number of each flag type within that column (A, AE, R, P) as well as -the total number of data points in the data flagging columns for each .csv, -excluding NAs. Unweighted Relative Response (RRU) is calculated as the total -number of accepted data points (A, AE, and data that are not flagged).

-
- -
-

Usage

-
get_dc_flags(directory = here::here())
-
- -
-

Arguments

- - -
directory
-

is the path to the data package .csv files (defaults to the -current working directory).

- -
-
-

Value

-

a dataframe named dc_flag that contains a row for each .csv file in -the directory with the file name, the count of each flag and total number of -data points in each .csv (including data flagging columns).

-
-
-

Details

-

The function can be run from within the working directory where the -data package is, or the directory can be specified. The function only -supports .csv files and assumes that all data flagging columns have column -names ending in "_flag". It counts cells within those columns that start with -one of the flagging characters (A, AE, R, P) and ignores trailing characters -and whitespaces.

-
- -
-

Examples

-
if (FALSE) { # \dontrun{
-get_df_flags("~/my_data_package_directory")
-get_df_flags() # if your current working directory IS the data package
-directory.
-# ->
-get_custom_flags(output="columns")
-} # }
-
-
-
-
- - -
- - - -
- - - - - - - diff --git a/docs/reference/get_df_flags.html b/docs/reference/get_df_flags.html deleted file mode 100644 index 539229d..0000000 --- a/docs/reference/get_df_flags.html +++ /dev/null @@ -1,125 +0,0 @@ - -Create Table of Data Quality Flags Found in Data Files within a Data Package — get_df_flags • QCkit - Skip to contents - - -
-
-
- -
-

[Deprecated] -get_df_flags (df = data files) returns a data frame that lists -the number of cells in each data file in the entire data package (excluding -NAs) with relevant flags (A, AE, R, P) as well as the total number of data -points in each .csv (including data flagging columns, but excluding NAs). -Unweighted Relative Response (RRU) is calculated as the total number of -accepted data points (A, AE, and data that are not flagged).

-
- -
-

Usage

-
get_df_flags(directory = here::here())
-
- -
-

Arguments

- - -
directory
-

is the path to the data package .csv files (defaults to the -current working directory).

- -
-
-

Value

-

a dataframe named df_flag that contains a row for each .csv file in -the directory with the file name, the count of each flag and total number of -data points in each .csv (including data flagging columns).

-
-
-

Details

-

The function can be run from within the working directory where the -data package is, or the directory can be specified. The function only -supports .csv files and assumes that all .csv files in the folder are part -of the data package. It also assumes that the values A, AE, R, and P have -only been used for flagging. It assumes that there are no additional -characters in the flagging cells (such as leading or trailing white spaces).

-
- -
-

Examples

-
if (FALSE) { # \dontrun{
-get_df_flags("~/my_data_package_directory")
-get_df_flags() # if your current working directory IS the data package
-directory.
-# ->
-get_custom_flags(output="files")
-} # }
-
-
-
-
- - -
- - - -
- - - - - - - diff --git a/docs/reference/get_dp_flags.html b/docs/reference/get_dp_flags.html deleted file mode 100644 index 3104ffe..0000000 --- a/docs/reference/get_dp_flags.html +++ /dev/null @@ -1,125 +0,0 @@ - -Create Table of Data Quality Flags Found in a Data Package — get_dp_flags • QCkit - Skip to contents - - -
-
-
- -
-

[Deprecated] -get_dp_flags (dp=data package) returns a data frame that list -the number of cells in the entire data package with relevant flags (A, AE, -R, P) as well as the total number of non-NA cells in the data package -(including data flagging columns). Unweighted Relative Response (RRU) is -calculated as the total number of accepted data points (A, AE, and data that -are not flagged).

-
- -
-

Usage

-
get_dp_flags(directory = here::here())
-
- -
-

Arguments

- - -
directory
-

is the path to the data package .csv files (defaults to the -current working directory).

- -
-
-

Value

-

a dataframe named dp_flag that contains the four flags, the count of -each flag and total number of data points in the entire data package.

-
-
-

Details

-

The function can be run from within the working directory where the -data package is, or the directory can be specified. The function only -supports .csv files and assumes that all .csv files in the folder are part -of the data package. The function counts cells within "*_flag" -columns that start with one of the flagging characters (A, AE, R, P) and -ignores trailing characters and whitespaces. NAs are assumed to be empty -cells or missing data.

-
- -
-

Examples

-
if (FALSE) { # \dontrun{
-get_dp_flags("~/my_data_package_directory")
-get_dp_flags() # if your current working directory IS the data package
-directory.
-# ->
-get_custom_flags(output="package")
-} # }
-
-
-
-
- - -
- - - -
- - - - - - - diff --git a/docs/reference/get_elevation.html b/docs/reference/get_elevation.html deleted file mode 100644 index e69748b..0000000 --- a/docs/reference/get_elevation.html +++ /dev/null @@ -1,126 +0,0 @@ - -Add elevation to a dataset — get_elevation • QCkit - Skip to contents - - -
-
-
- -
-

get_elevation() takes a dataframe that includes GPS coordinates (in decimal degrees) and returns a dataframe with two new columns added to it, minimumElevationInMeters and maximumElevationInMeters. The function requires that the data supplied are numeric and that missing values are specified with NA.

-
- -
-

Usage

-
get_elevation(
-  df,
-  decimal_lat,
-  decimal_long,
-  spatial_ref = c(4326, 102100),
-  force = FALSE
-)
-
- -
-

Arguments

- - -
df
-

a data frame containing GPS decimal coordinates for individual points with latitude and longitude in separate columns.

- - -
decimal_lat
-

String. The name of the column containing longitudes

- - -
decimal_long
-

String. The name of the column containing latitudes

- - -
spatial_ref
-

Categorical. Defaults to 4326. Can also be set to 102100.

- - -
force
-

Logical. Defaults to FALSE. Returns verbose comments, interactions, and information. Set to TRUE to remove all interactive components and reduce/remove all comments and informative print statements.

- -
-
-

Value

-

a data frame with two new columns, minimumElevationInMeters and maximumElevationInMeters

-
-
-

Details

-

get_elevation() uses the USGS API for The National Map to identify the elevevation for a given set of GPS coordinates. To reduce API queries (and time to completion), the function will only search for unique GPS coordinates in your dataframe. This could take some time. If you have lots of GPS coordinates, you can also perform a manual bulk upload (maximum = 500 points).

-

Note that both new columns (minimumElevationInMeters and maximumElevationInMeters) contain the same elevation; this is expected behavior as a single GPS coordinate should have the same maximum and minimum elevations. The column names are generated in accordance with the simple Darwin Core Standards.

-

Points outside of the US may return NA values as they are not part of The National Map.

-
- -
-

Examples

-
 if (FALSE) { # \dontrun{
-new_dataframe <- get_elevation(df,
-                              "decimalLatitude",
-                              "decimalLongitude",
-                              spatial_ref="4326")
-new_dataframe <- get_elevation(df,
-                              "decimalLatitude",
-                              "decimalLongitude",
-                              spatial_ref="102100",
-                              force=TRUE)
- } # }
-
-
-
- - -
- - - -
- - - - - - - diff --git a/docs/reference/get_park_polygon.html b/docs/reference/get_park_polygon.html deleted file mode 100644 index cca4f71..0000000 --- a/docs/reference/get_park_polygon.html +++ /dev/null @@ -1,92 +0,0 @@ - -Retrieve the polygon information for the park unit from NPS REST services — get_park_polygon • QCkit - Skip to contents - - -
-
-
- -
-

get_park_polygon() retrieves a geoJSON string for a polygon of -a park unit. This is not the official boundary. Note that the REST API call returns the default "convexHull". This is will work better or worse for some parks, depending on the park shape/geography/number of disjunct areas. -#'

-
- -
-

Usage

-
get_park_polygon(unit_code)
-
- -
-

Arguments

- - -
unit_code
-

is the four-character unit code as designated by NPS.

- -
- -
-

Examples

-
if (FALSE) { # \dontrun{
-qc_getParkPolygon("OBRI")
-} # }
-
-
-
- - -
- - - -
- - - - - - - diff --git a/docs/reference/get_taxon_rank.html b/docs/reference/get_taxon_rank.html deleted file mode 100644 index 3cddcdc..0000000 --- a/docs/reference/get_taxon_rank.html +++ /dev/null @@ -1,102 +0,0 @@ - -Taxonomic Rank Determination Function — get_taxon_rank • QCkit - Skip to contents - - -
-
-
- -
-

get_taxon_rank() generates a new column in your selected data set called taxonRank that will show the taxonomic rank of the most specific name in the given scientific name column. This is a required column in the Simple Darwin Core rule set and guidelines. This function will be useful in creating and auto populating a required Simple Darwin Core field.

-
- -
-

Usage

-
get_taxon_rank(df, sciName_col)
-
- -
-

Arguments

- - -
df
-
  • The name of your data frame containing species observations

  • -
- - -
sciName_col
-
  • The name of the column within your data frame containing the scientific names of the species.

  • -
- -
-
-

Value

-

The function returns a new column in the given data frame named taxonRank with the taxonomic rank of the corresponding scientific name in each column. If there is no name in a row, then it returns as NA for that row.

-
-
-

Details

-

Define your species data set name and the column name with the scientific names of your species (if you are following a Simple Darwin Core naming format, this column should be scientificName, but any column name is fine).

-

The function will read the various strings in your species name column and identify them as either a family, genus, species, or subspecies. This function only works with cleaned and parsed scientific names. If the scientific name is higher than family, the function will not work correctly. Subfamily and Tribe names (which, similar to family names end in "ae*") will be designated Family.

-
- -
-

Examples

-
if (FALSE) { # \dontrun{
-mydf <- get_taxon_rank(df = mydf, sciName_col = "scientificName")
-} # }
-
-
-
-
- - -
- - - -
- - - - - - - diff --git a/docs/reference/get_utm_zone.html b/docs/reference/get_utm_zone.html deleted file mode 100644 index 067a88d..0000000 --- a/docs/reference/get_utm_zone.html +++ /dev/null @@ -1,95 +0,0 @@ - -Return UTM Zone — get_utm_zone • QCkit - Skip to contents - - -
-
-
- -
-

get_utm_zone() replaces convert_long_2_utm() as this -function name is more descriptive. get_utm_zone() takes a longitude -coordinate and returns the corresponding UTM zone.

-
- -
-

Usage

-
get_utm_zone(lon)
-
- -
-

Arguments

- - -
lon
-
  • Decimal degree longitude value

  • -
- -
-
-

Value

-

The function returns a numeric UTM zone (between 1 and 60).

-
-
-

Details

-

Input a longitude (decimal degree) coordinate and this simple -function returns the number of the UTM zone where that point falls.

-
- -
- - -
- - - -
- - - - - - - diff --git a/docs/reference/index.html b/docs/reference/index.html deleted file mode 100644 index 2aee46b..0000000 --- a/docs/reference/index.html +++ /dev/null @@ -1,202 +0,0 @@ - -Package index • QCkit - Skip to contents - - -
-
-
- -
-

All functions

- - - - -
- - - - -
- - check_dc_cols() - -
-
TDWG Darwin Core Column Name Check 08-23-2022
-
- - check_te() - -
-
Threatened Or Endangered Species Checker Function
-
- - convert_datetime_format() - -
-
Convert EML date/time format string to one that R can parse
-
- - convert_long_to_utm() - deprecated -
-
Return UTM Zone
-
- - convert_utm_to_ll() - superseded -
-
Coordinate Conversion from UTM to Latitude and Longitude
-
- - create_datastore_script() - -
-
Turn a GitHub release into a DataStore Script Reference
-
- - document_missing_values() - experimental -
-
Handles multiple missing values
-
- - fix_utc_offset() - -
-
Fix UTC offset strings
-
- - fuzz_location() - -
-
Convert Coordinates Into a Polygon to Obscure Specific Location
-
- - generate_ll_from_utm() - -
-
Coordinate Conversion from UTM to Latitude and Longitude
-
- - get_custom_flags() - experimental -
-
Creates dataframe(s) summarizing data quality
-
- - get_elevation() - -
-
Add elevation to a dataset
-
- - get_park_polygon() - -
-
Retrieve the polygon information for the park unit from NPS REST services
-
- - get_taxon_rank() - -
-
Taxonomic Rank Determination Function
-
- - get_user_orcid() - -
-
Returns the user's ORCID ID from active directory
-
- - get_utm_zone() - -
-
Return UTM Zone
-
- - order_cols() - -
-
Ordering Columns Function 03-21-2023
-
- - remove_empty_tables() - -
-
Remove empty tables from a list
-
- - replace_blanks() - -
-
Replaces all blank cells a missing value code of your choice
-
- - unit_codes_to_names() - -
-
Converts unit codes to full unit (park) names
-
- - validate_coord() - -
-
Check whether a coordinate pair is within the polygon of a park unit
-
- - validate_coord_list() - -
-
Test whether decimal GPS coordinates are inside a park unit
-
-
- - -
- - - -
- - - - - - - diff --git a/docs/reference/long2UTM.html b/docs/reference/long2UTM.html deleted file mode 100644 index 0bc63dd..0000000 --- a/docs/reference/long2UTM.html +++ /dev/null @@ -1,104 +0,0 @@ - -Return UTM Zone — long2UTM • QCkit - Skip to contents - - -
-
-
- -
-

[Deprecated] -long2UTM was deprecated in favor of convert_long_to_utm() to enforce a -consistent function naming pattern across the package and to conform to the -tidyverse style guide.

-

long2UTM() take a longitude coordinate and returns the corresponding UTM -zone.

-
- -
-

Usage

-
long2UTM(lon)
-
- -
-

Arguments

- - -
lon
-
  • Decimal degree longitude value

  • -
- -
-
-

Value

-

The function returns a numeric UTM zone (between 1 and 60).

-
-
-

Details

-

Input a longitude (decimal degree) coordinate and this simple -function returns the number of the UTM zone where that point falls.

-
- -
- - -
- - - -
- - - - - - - diff --git a/docs/reference/order_cols.html b/docs/reference/order_cols.html deleted file mode 100644 index a3edcc5..0000000 --- a/docs/reference/order_cols.html +++ /dev/null @@ -1,100 +0,0 @@ - -Ordering Columns Function 03-21-2023 — order_cols • QCkit - Skip to contents - - -
-
-
- -
-

order_cols() Checks and orders columns with TDWG Darwin Core naming standards and custom names in a dataset

-
- -
-

Usage

-
order_cols(df)
-
- -
-

Arguments

- - -
df
-
  • This is the dataframe you want to run against the function. To call, simply type df = "the name of your dataframe".

  • -
- -
-
-

Value

- -
  • The function returns a list of required and suggested columns to include in your dataset. When assigning to an object, the object contains your new dataset with all columns ordered properly.

  • -
-
-

Details

-

Check to see if you have three (highly) recommended columns (locality, type, basisOfRecord) and various suggested columns present in your dataset. Print a list of which columns are present and which are not. Then, order all the columns in your dataset in the following order: (highly) recommended columns, suggested columns, the rest of the Darwin Core columns, "custom_" (non-Darwin Core) columns, and finally sensitive species data columns.

-

Any columns that are not darwinCore term names, do not start with "custom_" or are not "scientificName_flag" will be placed after the darwinCore columns and before the "custom_" columns.

-

One exception is if your dataset includes the column custom_TaxonomicNotes, it will be placed directly after namePublishedIn, if that column exists.

-

Suggested darwinCore column names (plus scientificName_flag) include (in the order they will be placed): eventDate, eventDate_flag, scientificName, scientificName_flag, taxonRank, verbatimIdentification, vernacularName, namePublishedIn, recordedBy, individualCount, decimalLongitude, decimalLatitude, coordinate_flag, geodeticDatum", verbatimCoordinates, verbatimCoordinateSystem, verbatimSRS,coordinateUncertaintyInMeters. Note that suggested names include some custom, non-Darwin Core names such as "scientificName_flag".

-

sensitive species data columns are defined as: informationWithheld, dataGeneralizations, and footprintWKT.

-
- -
-

Examples

-
if (FALSE) { # \dontrun{
-order_cols(df)
-} # }
-
-
-
- - -
- - - -
- - - - - - - diff --git a/docs/reference/remove_empty_tables.html b/docs/reference/remove_empty_tables.html deleted file mode 100644 index 14dfdc1..0000000 --- a/docs/reference/remove_empty_tables.html +++ /dev/null @@ -1,94 +0,0 @@ - -Remove empty tables from a list — remove_empty_tables • QCkit - Skip to contents - - -
-
-
- -
-

Remove empty tables from a list

-
- -
-

Usage

-
remove_empty_tables(df_list)
-
- -
-

Arguments

- - -
df_list
-

A list of tibbles or dataframes.

- -
-
-

Value

-

The same list but with empty tables removed.

-
- -
-

Examples

-

-test_list <- list(item_a = tibble::tibble,
-                  item_b = mtcars,
-                  item_c = iris)
-
-tidy_list <- remove_empty_tables(test_list)
-
-
-
-
- - -
- - - -
- - - - - - - diff --git a/docs/reference/replace_blanks.html b/docs/reference/replace_blanks.html deleted file mode 100644 index 1d072a7..0000000 --- a/docs/reference/replace_blanks.html +++ /dev/null @@ -1,169 +0,0 @@ - -Replaces all blank cells a missing value code of your choice — replace_blanks • QCkit - Skip to contents - - -
-
-
- -
-

replace_blanks() is particularly useful for exporting data -from a database (such as access) and converting it to a data package with -metadata.

-

replace_blanks() will import all .csv files in the specified working -directory. The files are then written back out to the same directory, -overwriting the old .csv files. Any blank cells (or cells with "NA" in the -original .csv files) will be replaced with the specified string or integer. -If no missing value is specified, the function defaults to replacing all -blanks with "NA".

-

Please keep in mind the "missing" is a general term for all data -not present in the data file or data package. Although you may have a very -good reason for not providing data and that data may not, from the data -package creator's perspective, be "missing" (maybe you never intended to -collect it) from a data package user's perspective any data that is not in -the data package is effectively "missing" from the data package. Therefore, -it is critical to document in metadata any data that are absent with an -appropriate "missingValueCode" and "missingValueDefinition". These terms are -defined by the metadata schema and are broadly used to apply to any data not -present.

-

This function will replace all empty cells and all cells with NA with a -"missingValueCode" of your choice (although it defaults to NA).

-
- -
-

Usage

-
replace_blanks(directory = here::here(), missing_val_code = NA)
-
- -
-

Arguments

- - -
directory
-

String. Path to the file(s) to have blanks replaced with -NAs. Defaults to the working directory of the project (here::here())

- - -
missing_val_code
-

String, integer, double, or float. Defaults to NA.

- -
-
-

Value

-

list of data frames (invisibly)

-
-
-

Details

-

One exception is if a .csv contains NO data (i.e. just column names -and no data in any of the cells). In this case, the blanks will not be -replaced with NA (as the function cannot determine how many NAs to include).

-
- -
-

Examples

-
 if (FALSE) { # \dontrun{
-#replaces all blank cells in .csvs in the current directory with NA:
- replace_blanks()
-
-#replace all blank cells in .csvs in the directory ./test_data with "NODATA"
- dir <- here::here("test_data")
- replace_blanks(directory = dir, missing_val_code = "NODATA")
-
-#replace all blank cells in .csvs in the current directory with -99999
-replace_blanks(missing_val_code = -99999)
-} # }
-
-
-
- - -
- - - -
- - - - - - - diff --git a/docs/reference/te_check.html b/docs/reference/te_check.html deleted file mode 100644 index abf9e4b..0000000 --- a/docs/reference/te_check.html +++ /dev/null @@ -1,125 +0,0 @@ - -Threatened Or Endangered Species Checker Function — te_check • QCkit - Skip to contents - - -
-
-
- -
-

[Deprecated]

-

This function has been deprecated in favor of check_te(). The function name was changed to promote constancy in function naming across the package and to conform with tidyverse style guides. te_check() is no longer updated and may not reference the latest version of the federal endangered and threatened species listings.

-

te_check() generates a list of species you should consider removing from your dataset before making it public by matching the scientific names within your data set to the Federal Conservation List. te_check() should be considered a helpful tool for identifying federally listed endangered and threatened species in your data. Each National Park has a park-specific Protected Data Memo that outlines which data should be restricted. Threatened and endangered species are often - although not always - listed on these Memos. Additional species (from state conservation lists) or non-threatened and non-endangered species of concern or other biological or non-biological resources may be listed on Memos. Consult the relevant park-specific Protected Data Memo prior to making decisions on restricting or releasing data.

-
- -
-

Usage

-
te_check(x, species_col, park_code, expansion = FALSE)
-
- -
-

Arguments

- - -
x
-
  • The name of your data frame containing species observations

  • -
- - -
species_col
-
  • The name of the column within your data frame containing the scientific names of the species (genus and specific epithet).

  • -
- - -
park_code
-
  • A four letter park code. Or a list of park codes.

  • -
- - -
expansion
-
  • Logical. Defaults to FALSE. The default setting will return only exact matches between your the scientific binomial (genera and specific epithet) in your data set and the federal match list. Setting expansion = TRUE will expand the list of matches to return all species (and subspecies) that from the match list that match any genera listed in your data set, regardless of whether a given species is actually in your data set. An additional column indicating whether the species returned is in your data set ("In your Data") or has been expanded to ("Expansion") is generated.

  • -
- -
-
-

Value

-

The function returns a (modified) data frame with the names of all the species that fall under the federal conservation list. The resulting data frame may have multiple instances of a given species if it is listed in multiple parks (park codes for each listing are supplied). Technically it is a huxtable, but it should function identically to a data frame for downstream purposes.

-
-
-

Details

-

Define your species data set name, column name with the scientific names of your species, and your four letter park code.

-

The te_check() function downloads the Federal Conservation list using the IRMA odata API service and matches this species list to the list of scientific names in your data frame. Keep in mind that this is a Federal list, not a state list. Changes in taxa names may also cause some species to be missed. Because the odata API service is not publicly available, you must be logged in to the NPS VPN or in the office to use this function.

-

For the default, expansion = FALSE, the function will perform an exact match between the taxa in your scientificName column and the federal Conservation List and then filter the results to keep only species that are listed as endangered, threatened, or considered for listing. If your scientificName column contains information other than the binomial (genus and species), no matches will be returned. For instance, if you have an Order or just a genus listed, these will not be matched to the Federal Conservation List.

-

If you set expansion = TRUE, the function will truncate each item in your scientificName column to the first word in an attempt to extract a genus name. If you only have genera listed, these will be retained. If you have have higher-order taxa listed such as Family, Order, or Phyla again the first word will be retained. This first word (typically a genus) will be matched to just the generic name of species from the Federal Conservation List. All matches, regardless of listing status, are retained. The result is that for a given species in your scientificName column, all species within that genus that are on the Federal Conservation List will be returned (along with their federal conservation listing codes and a column indicating whether the species is actually in your data or is part of the expanded search).

-
- -
-

Examples

-
if (FALSE) { # \dontrun{
-#for individual parks:
-te_check(x = my_species_dataframe, species_col = "scientificName", park_code = "BICY")
-list<-te_check(data, "scientificName", "ROMO", expansion=TRUE)
-# for a list of parks:
-park_code<-c("ROMO", "YELL", "SAGU")
-list<-te_check(data, "scientificName", park_code, expansion=TRUE)
-} # }
-
-
-
-
- - -
- - - -
- - - - - - - diff --git a/docs/reference/unit_codes_to_names.html b/docs/reference/unit_codes_to_names.html deleted file mode 100644 index cf67938..0000000 --- a/docs/reference/unit_codes_to_names.html +++ /dev/null @@ -1,91 +0,0 @@ - -Converts unit codes to full unit (park) names — unit_codes_to_names • QCkit - Skip to contents - - -
-
-
- -
-

unit_code_to_names takes a single unit code or vector of unit codes and returns a data frame of full unit names using a public IRMA API. For example if given the code "ROMO" the function will return "Rocky Mountain National Park".

-
- -
-

Usage

-
unit_codes_to_names(unit_code)
-
- -
-

Arguments

- - -
unit_code
-

string or list of strings consisting of (typically) four-letter unit codes.

- -
-
-

Value

-

a data frame consisting of a single column of full park names

-
- -
-

Examples

-
if (FALSE) { # \dontrun{
- unit_codes_to_names("ROMO")
- unit_codes_to_names(c("ROMO", "GRYN"))
- } # }
-
-
-
- - -
- - - -
- - - - - - - diff --git a/docs/reference/utm_to_ll.html b/docs/reference/utm_to_ll.html deleted file mode 100644 index 97a9be3..0000000 --- a/docs/reference/utm_to_ll.html +++ /dev/null @@ -1,127 +0,0 @@ - -Coordinate Conversion from UTM to Latitude and Longitude — utm_to_ll • QCkit - Skip to contents - - -
-
-
- -
-

[Deprecated] -utm_to_ll() was deprecated in favor of convert_utm_to_ll() to enforce a consistent naming scheme for functions across the package and to conform with the tidyverse style guide.

-

utm_to_ll takes your dataframe with UTM coordinates in separate Easting and Northing columns, and adds on an additional two columns with the converted decimalLatitude and decimalLongitude coordinates using the reference coordinate system WGS84.

-
- -
-

Usage

-
utm_to_ll(df, EastingCol, NorthingCol, zone, datum = "WGS84")
-
- -
-

Arguments

- - -
df
-
  • The dataframe with UTM coordinates you would like to convert. Input the name of your dataframe.

  • -
- - -
EastingCol
-
  • The name of your Easting UTM column. Input the name in quotations, ie. "EastingCol".

  • -
- - -
NorthingCol
-
  • The name of your Northing UTM column. Input the name in quotations, ie. "NorthingCol".

  • -
- - -
zone
-
  • The UTM Zone. Input the zone number in quotations, ie. "17".

  • -
- - -
datum
-
  • The datum used in the coordinate reference system of your coordinates. Input in quotations, ie. "WGS84"

  • -
- -
-
-

Value

-

The function returns your dataframe, mutated with an additional two columns of decimal Longitude and decimal Latitude.

-
-
-

Details

-

Define the name of your dataframe, the easting and northing columns within it, the UTM zone within which those coordinates are located, and the reference coordinate system (datum). UTM Northing and Easting columns must be in separate columns prior to running the function. If a datum is not defined, the function will default to "WGS84". If there are missing coordinates in your dataframe they will be preserved, however they will be moved to the end of your dataframe. Note that some parameter names are not in snake_case but instead reflect DarwinCore naming conventions.

-
- -
-

Examples

-
if (FALSE) { # \dontrun{
-utm_to_ll(
-  df = mydataframe,
-  EastingCol = "EastingCoords",
-  NorthingCol = "NorthingCoords",
-  zone = "17",
-  datum = "WGS84"
-)
-} # }
-
-
-
- - -
- - - -
- - - - - - - diff --git a/docs/reference/validate_coord.html b/docs/reference/validate_coord.html deleted file mode 100644 index 664129a..0000000 --- a/docs/reference/validate_coord.html +++ /dev/null @@ -1,100 +0,0 @@ - -Check whether a coordinate pair is within the polygon of a park unit — validate_coord • QCkit - Skip to contents - - -
-
-
- -
-

validate_coord() compares a coordinate pair (in decimal -degrees) to the polygon for a park unit as provided through the NPS -Units rest services. The function returns a value of TRUE or FALSE.

-
- -
-

Usage

-
validate_coord(unit_code, lat, lon)
-
- -
-

Arguments

- - -
unit_code
-

is the four-character unit code as designated by NPS.

- - -
lat
-

latitude, in decimal degrees.

- - -
lon
-

longitude, in decimal degrees.

- -
- -
-

Examples

-
if (FALSE) { # \dontrun{
-validate_coord("OBRI", 36.07951, -84.65610)
-} # }
-
-
-
- - -
- - - -
- - - - - - - diff --git a/docs/reference/validate_coord_list.html b/docs/reference/validate_coord_list.html deleted file mode 100644 index 615dc08..0000000 --- a/docs/reference/validate_coord_list.html +++ /dev/null @@ -1,114 +0,0 @@ - -Test whether decimal GPS coordinates are inside a park unit — validate_coord_list • QCkit - Skip to contents - - -
-
-
- -
-

This function can take a list of coordinates and park units as input. In -addition to being vectorized, depending on the park borders, it can be a -major improvement on validate_coord().

-
- -
-

Usage

-
validate_coord_list(lat, lon, park_units)
-
- -
-

Arguments

- - -
lat
-

numeric. An individual or vector of numeric values representing -the decimal degree latitude of a coordinate

- - -
lon
-

numeric. An individual or vector of numeric values representing -the decimal degree longitude of a coordinate

- - -
park_units
-

String. Or list of strings each containing the four letter -park unit designation

- -
-
-

Value

-

logical

-
- -
-

Examples

-
if (FALSE) { # \dontrun{
-x <- validate_coord_list(lat = 105.555, long = -47.4332, park_units = "DRTO")
-
-# or a dataframe with many coordinates and potentially many park units:
-x <- validate_coord_list(lat = df$decimalLatitutde,
-                lon = df$decimalLongitude,
-                park_units = df$park_units)
-# you can then merge it back in to the original dataframe:
-df$test_GPS_coord <- x
-} # }
-
-
-
- - -
- - - -
- - - - - - - diff --git a/docs/sitemap.xml b/docs/sitemap.xml deleted file mode 100644 index 4fb80c4..0000000 --- a/docs/sitemap.xml +++ /dev/null @@ -1,45 +0,0 @@ - -https://nationalparkservice.github.io/QCkit/404.html -https://nationalparkservice.github.io/QCkit/articles/DRR_Purpose_and_Scope.html -https://nationalparkservice.github.io/QCkit/articles/index.html -https://nationalparkservice.github.io/QCkit/articles/Starting-a-DRR.html -https://nationalparkservice.github.io/QCkit/articles/Using-the-DRR-Template.html -https://nationalparkservice.github.io/QCkit/authors.html -https://nationalparkservice.github.io/QCkit/CONTRIBUTING.html -https://nationalparkservice.github.io/QCkit/index.html -https://nationalparkservice.github.io/QCkit/LICENSE-text.html -https://nationalparkservice.github.io/QCkit/LICENSE.html -https://nationalparkservice.github.io/QCkit/news/index.html -https://nationalparkservice.github.io/QCkit/reference/check_dc_cols.html -https://nationalparkservice.github.io/QCkit/reference/check_te.html -https://nationalparkservice.github.io/QCkit/reference/convert_datetime_format.html -https://nationalparkservice.github.io/QCkit/reference/convert_long_to_utm.html -https://nationalparkservice.github.io/QCkit/reference/convert_utm_to_ll.html -https://nationalparkservice.github.io/QCkit/reference/create_datastore_script.html -https://nationalparkservice.github.io/QCkit/reference/DC_col_check.html -https://nationalparkservice.github.io/QCkit/reference/document_missing_values.html -https://nationalparkservice.github.io/QCkit/reference/fix_utc_offset.html -https://nationalparkservice.github.io/QCkit/reference/fuzz_location.html -https://nationalparkservice.github.io/QCkit/reference/generate_ll_from_utm.html -https://nationalparkservice.github.io/QCkit/reference/get_custom_flags.html -https://nationalparkservice.github.io/QCkit/reference/get_dc_flags.html -https://nationalparkservice.github.io/QCkit/reference/get_df_flags.html -https://nationalparkservice.github.io/QCkit/reference/get_dp_flags.html -https://nationalparkservice.github.io/QCkit/reference/get_elevation.html -https://nationalparkservice.github.io/QCkit/reference/get_park_polygon.html -https://nationalparkservice.github.io/QCkit/reference/get_taxon_rank.html -https://nationalparkservice.github.io/QCkit/reference/get_user_orcid.html -https://nationalparkservice.github.io/QCkit/reference/get_utm_zone.html -https://nationalparkservice.github.io/QCkit/reference/index.html -https://nationalparkservice.github.io/QCkit/reference/long2UTM.html -https://nationalparkservice.github.io/QCkit/reference/order_cols.html -https://nationalparkservice.github.io/QCkit/reference/QCkit-package.html -https://nationalparkservice.github.io/QCkit/reference/remove_empty_tables.html -https://nationalparkservice.github.io/QCkit/reference/replace_blanks.html -https://nationalparkservice.github.io/QCkit/reference/te_check.html -https://nationalparkservice.github.io/QCkit/reference/unit_codes_to_names.html -https://nationalparkservice.github.io/QCkit/reference/utm_to_ll.html -https://nationalparkservice.github.io/QCkit/reference/validate_coord.html -https://nationalparkservice.github.io/QCkit/reference/validate_coord_list.html - -