├── .Rbuildignore ├── .Rhistory ├── .gitattributes ├── .github ├── .gitignore ├── ISSUE_TEMPLATE │ ├── bug_report.md │ └── feature_request.md └── workflows │ ├── R-CMD-check.yaml │ ├── pkgdown.yaml │ └── test-coverage.yaml ├── .gitignore ├── ContDataQC.Rproj ├── DESCRIPTION ├── LICENSE ├── NAMESPACE ├── NEWS ├── NEWS.md ├── NEWS.rmd ├── R ├── CompSiteCDF.R ├── CompSiteCDF.updated.R ├── Export.IHA.R ├── Export.StreamThermal.R ├── Export.rLakeAnalyzer.R ├── RBIcalc.R ├── SumStats.updated.R ├── config.R ├── data.r ├── formatHobo.R ├── formatminiDOT.R ├── fun.Config.Out.R ├── fun.CustomConfig.R ├── fun.DateFormat.R ├── fun.GageData.R ├── fun.Helper.R ├── fun.ParseID.R ├── fun.PeriodStats.R ├── fun.QC.File.R ├── fun.QC.R ├── fun.Report.File.R ├── fun.Report.R ├── fun.Stats.File.R ├── fun.Stats.R ├── fun.miniDOT.cat.R ├── runShinyExample.R ├── zfun.AggregateData.File.R ├── zfun.AggregateData.R └── zfun.ContDataQC.R ├── README.Rmd ├── README.md ├── data-raw ├── .Rhistory ├── CDF_WaterTemp_2014_MA.csv ├── DATA_test2_Aw_20130101_20141231.csv ├── Data4Stats_01187300_Gage_20130101_20141231.csv ├── Data4Stats_test2_Aw_20130101_20141231.csv ├── ECO66G12_AW_20160128_20160418.csv ├── ProcessData_CompSiteCDF.R ├── ProcessData_Hobo.R ├── ProcessData_PeriodSummary.R ├── ProcessData_test2.R ├── ProcessData_test4.R ├── ProcessFileCopy_Config.R ├── ProcessRMD_Gibbs_ShinyHTML.R ├── test2_AW_20130426_20130725.csv ├── test2_AW_20130725_20131015.csv ├── test2_AW_20140901_20140930.csv └── test4_AW_20160418_20160726.csv ├── data ├── DATA_period_test2_Aw_20130101_20141231.rda ├── data_CompSiteCDF.rda ├── data_raw_ECO66G12_AW_20160128_20160418.rda ├── data_raw_test2_AW_20130426_20130725.rda ├── data_raw_test2_AW_20130725_20131015.rda ├── data_raw_test2_AW_20140901_20140930.rda └── data_raw_test4_AW_20160418_20160726.rda ├── inst ├── CITATION ├── _vignettes │ ├── ContDataQC_Vignette.html │ ├── Vignette_Config.html │ ├── Vignette_ContDataQC.html │ └── Vignette_Lakes.html ├── extdata │ ├── Aquarius_Data_Aquisition_PADEP.r │ ├── CDF_WaterTemp_2014_MA.csv │ ├── Charlies_AW_20170726_20170926.csv │ ├── Charlies_Air_20170726_20170926.csv │ ├── Charlies_Water_20170726_20170926.csv │ ├── ContDataQC_LibraryCreation.Rmd │ ├── ContDataQC_LibraryCreation.nb.html │ ├── DATA_test2_Aw_20130101_20141231.csv │ ├── DailyMeans_ECO66G12.xlsx │ ├── ECO66G12_AW_20160128_20160418.csv │ ├── EXAMPLE_DO_RUSSWOOD--02M_DO_20180918_20190610.csv │ ├── Ellis--1.0m_Water_20180524_20180918.csv │ ├── Ellis--3.0m_Water_20180524_20180918.csv │ ├── Ellis.csv │ ├── OneEPA_template.R │ ├── QC_Ellis--1.0m_Water_20180524_20180918.csv │ ├── QC_Ellis--3.0m_Water_20180524_20180918.csv │ ├── Rcode_FormattingFunction.pptx │ ├── STATS_test2_Aw_20130101_20141231_Water.Temp.C.csv │ ├── StreamThermal_MetricList.xlsx │ ├── TestLake_Water_20180702_20181012.csv │ ├── config.COOL.R │ ├── config.ExcludeFailsFalse.R │ ├── config.Lakes.metric.R │ ├── config.ORIG.R │ ├── config.RMDdir.R │ ├── config.TZ.Central.R │ ├── config.WARM.R │ └── minidot │ │ ├── 2019-12-13 151700Z.txt │ │ ├── 2019-12-14 154700Z.txt │ │ └── 2019-12-15 161700Z.txt ├── rmd │ ├── Report_Aggregate.rmd │ ├── Report_CompDeploy.rmd │ ├── Report_Config.rmd │ ├── Report_PeriodStats.rmd │ ├── Report_QC.rmd │ ├── Report_SiteSummary.rmd │ ├── Report_SiteSummaryMulti.rmd │ └── Report_Stats.rmd └── shiny-examples │ └── ContDataQC │ ├── .gitignore │ ├── HOBO │ └── remove.txt │ ├── config.RMDdir.R │ ├── continuous_data_template_2017_11_15.csv │ ├── data │ └── remove.txt │ ├── external │ ├── remove.txt │ ├── tab_1_About.R │ ├── tab_1a_Overview.R │ ├── tab_1b_TestData.R │ ├── tab_1c_FAQ.R │ ├── tab_2_DataPrep.R │ ├── tab_2a_FormatSensors.R │ ├── tab_3_MainFunc.R │ ├── tab_3c_QCThresh.R │ ├── tab_4_USGSgage.R │ ├── tab_5_Troubleshooting.R │ ├── tab_5b_Console.R │ └── tab_9_Status.R │ ├── global.R │ ├── google-analytics.html │ ├── miniDOT_cat │ └── delete.me │ ├── miniDOT_reformat │ └── delete.me │ ├── rmd │ ├── App_1a_Overview.rmd │ ├── App_1b_TestData.rmd │ ├── App_1c_FAQ.rmd │ ├── App_1d_Tips.rmd │ ├── App_1e_Advanced.rmd │ ├── App_1f_RelatedApps.rmd │ ├── App_2a1_HOBO.rmd │ ├── App_2a2_miniDOT1.Rmd │ ├── App_2a3_miniDOT2.Rmd │ ├── App_2a_FormattingFiles.rmd │ ├── App_2az_About.rmd │ ├── App_2b_OrganizingFiles.rmd │ ├── App_2c_NamingFiles.rmd │ ├── App_2cz_DiscreteData.rmd │ ├── App_3a1_About.rmd │ ├── App_3a2_QCReports.rmd │ ├── App_3a3_Aggregate.rmd │ ├── App_3a4_SummaryStats.rmd │ ├── App_3b_CheckInput.rmd │ ├── App_3c1_QCThresh_Defaults.rmd │ ├── App_3c2_QCThresh_Upload.rmd │ ├── App_3c3_QCThresh_Eval.rmd │ ├── App_3c4_QCThresh_Edit.rmd │ ├── App_4_USGSgage.rmd │ ├── App_5b_Console.rmd │ ├── App_9_Status.rmd │ ├── Files_From_Jen │ │ ├── 1_Overview_table_v2_20210622.xlsx │ │ ├── 1_Overview_v1_20210616.docx │ │ ├── 2a_OrganizingFiles_v1_20210617 │ │ │ ├── 2a_Figure_OrganizingFiles.pptx │ │ │ ├── 2a_OrganizingFiles_v1_20210616.docx │ │ │ ├── 2a_Table_Organize_v1_20210617.xlsx │ │ │ ├── EXAMPLE_AccuracyCheck_NC_QB283_Dutchmans.xlsx │ │ │ ├── Fig_Organizing_v1_20210616.jpg.jpg │ │ │ ├── Fig_Organizing_v1_20210616.png │ │ │ └── FolderSetUp_v1_20210616.zip │ │ ├── 2b_NamingFiles_v1_20210617 │ │ │ ├── 2b_Fig_NamingFiles_v1_20210617.jpg │ │ │ ├── 2b_Fig_NamingFiles_v1_20210617.png │ │ │ ├── 2b_Figure_NamingFiles.pptx │ │ │ ├── 2b_NamingFiles_v1_20210616.docx │ │ │ └── Config_Template.zip │ │ ├── 2c_FormattingFiles_v1_20210617 │ │ │ ├── 2c_Figure_FormattingFiles.pptx │ │ │ ├── 2c_FormattingFiles_v1_20210617.docx │ │ │ ├── 2c_Table_FormattingFiles_v1_20210617.xlsx │ │ │ ├── 2c_subsubtab_HOBOware_reformat_v1_20210617.docx │ │ │ ├── 2c_subtab_Figure_HOBOreformat_v1_20210617.pptx │ │ │ ├── 2c_subtab_HOBOreformat_v1_20210617.png │ │ │ └── Config_Template.zip │ │ ├── 3a_Default │ │ │ ├── 3a_defaultQCThresholds_v1_20210611.docx │ │ │ ├── 3a_defaultQCthresholds_Table_v1_20210617.xlsx │ │ │ └── Config_Template.zip │ │ ├── 3b_Customize │ │ │ ├── 3b_CustomizeQCthresholds_v1_20210617.docx │ │ │ ├── Config_Template.zip │ │ │ ├── TimMartin_lakes_qcthresholdanalysis.R │ │ │ └── config.Lakes.metric.R │ │ ├── 4_MainFunctions │ │ │ ├── 4a_RunFunctions │ │ │ │ ├── 4a_MainFunctions_v1_20210617.docx │ │ │ │ ├── Example_AggregateReport_v1_20210617.zip │ │ │ │ ├── Example_QCreports_v1_20210617.zip │ │ │ │ ├── Example_SumStats_v1_20210617.zip │ │ │ │ └── Rpackage_v1_20210617.png │ │ │ └── 4b_CheckInputFile │ │ │ │ └── 4b Check input file_v1_20210617.docx │ │ ├── 7_TestData │ │ │ ├── TestData_table_v1_20210618.xlsx │ │ │ └── TestData_v1_20210618.docx │ │ ├── ContDataQC_6_console_v1_20210617.docx │ │ ├── ContDataQC_8_FAQ_v1_20210618.docx │ │ └── ContDataQC_9_status_v1_20210618.docx │ ├── RMD_Images │ │ ├── 1.1_Fig1_About_20230828.jpg │ │ ├── 1.6_Fig1_Advanced_20230828.jpg │ │ ├── 2.3_Discrete_Fig1_20230828.jpg │ │ ├── Fig_NamingFiles_v1_20210617.png │ │ ├── Fig_Organizing_v1_20210616.png │ │ ├── HOBOreformat_AFTER.jpg │ │ ├── HOBOreformat_BEFORE.jpg │ │ ├── miniDOT_1raw.png │ │ ├── miniDOT_2cat.png │ │ ├── miniDOT_3reformat.png │ │ ├── miniDOT_AFTER_Concatenate.jpg │ │ ├── miniDOT_After_Reformat.jpg │ │ └── miniDOT_Before_Reformat.jpg │ ├── Report_Aggregate.rmd │ ├── Report_Config.rmd │ ├── Report_PeriodStats.rmd │ ├── Report_QC.rmd │ ├── Report_Stats.rmd │ └── tables │ │ ├── App_Information_Tables.xlsx │ │ ├── FileNaming_Lakes_20240131.xlsx │ │ ├── FileNaming_Streams_20240131.xlsx │ │ ├── HOBOreformat_AFTER_20240226.xlsx │ │ ├── HOBOreformat_BEFORE_20240226.xlsx │ │ ├── miniDOT_After_Concatenate_20240226.xlsx │ │ ├── miniDOTreformat_ AFTER_20240226.xlsx │ │ └── miniDOTreformat_ BEFORE_20240226.xlsx │ ├── server.R │ ├── ui.R │ └── www │ ├── Config.R │ ├── Config_Default.R │ ├── Config_Lakes_meters.zip │ ├── Config_Lakes_metric.R │ ├── Config_Template.R │ ├── Config_Template.zip │ ├── Config_default.zip │ ├── Continuous_data_test_files_2017_11_28.zip │ ├── Continuous_data_website_slides_2018_04_27.pdf │ ├── Custom_QC_Config_ECO66G20_test1.R │ ├── DataQualifiers_20220210.xlsx │ ├── Daymet_Wx_Gage.zip │ ├── EXAMPLE_AccuracyCheckWkst.xlsx │ ├── EditingQCtestThresholds_20220117.pdf │ ├── EvaluateThresholds.zip │ ├── Example_Aggregate.zip │ ├── Example_QCreports.zip │ ├── Example_SumStats.zip │ ├── ExcelPivotTablesPlots_GrossSpikeEval_20220117.pdf │ ├── Fig_HOBOreformat_v1_20210617.png │ ├── Fig_NamingFiles_v1_20210617.png │ ├── Fig_Organizing_v1_20210616.png │ ├── Fig_Rpackage_v1_20210617.png │ ├── FolderSetUp_20220825.zip │ ├── GoogleChrome_TimesaverTips.pdf │ ├── HOBO_ConfigLaunch_20170803.pdf │ ├── HOBO_DataDownload_20170823.pdf │ ├── HOBOware_DO_20220824.pdf │ ├── HOBOware_DefaultSettings_20220824.pdf │ ├── HOBOware_Temperature_20220825.pdf │ ├── HOBOware_WaterLevel_U20_20220824.pdf │ ├── PlotQC_WatchList_20220824.pdf │ ├── QC_Custom_Config.tsv │ ├── RMD_HTML │ ├── App_1a_Overview.html │ ├── App_1b_TestData.html │ ├── App_1c_FAQ.html │ ├── App_1d_Tips.html │ ├── App_1e_Advanced.html │ ├── App_1f_RelatedApps.html │ ├── App_2a1_HOBO.html │ ├── App_2a2_miniDOT1.html │ ├── App_2a3_miniDOT2.html │ ├── App_2a_FormattingFiles.html │ ├── App_2az_About.html │ ├── App_2b_OrganizingFiles.html │ ├── App_2c_NamingFiles.html │ ├── App_2cz_DiscreteData.html │ ├── App_2d_FormattingFiles.html │ ├── App_3a1_About.html │ ├── App_3a2_QCReports.html │ ├── App_3a3_Aggregate.html │ ├── App_3a4_SummaryStats.html │ ├── App_3a_About.html │ ├── App_3a_DataPrep.html │ ├── App_3b_CheckInput.html │ ├── App_3b_DataPrep.html │ ├── App_3c1_QCThresh_Defaults.html │ ├── App_3c2_QCThresh_Eval.html │ ├── App_3c2_QCThresh_Upload.html │ ├── App_3c3_QCThresh_Edit.html │ ├── App_3c3_QCThresh_Eval.html │ ├── App_3c4_QCThresh_Edit.html │ ├── App_3c4_QCThresh_Upload.html │ ├── App_3c_DataPrep.html │ ├── App_3d_Tips.html │ ├── App_3e_DataPrep.html │ ├── App_3f_DataPrep.html │ ├── App_4_USGSgage.html │ ├── App_4a_QCThresh.html │ ├── App_4b_QCThresh.html │ ├── App_4c_QCThresh.html │ ├── App_4d_QCThresh.html │ ├── App_5_Troubleshooting.html │ ├── App_5a_MainFunc.html │ ├── App_5a_Troubleshooting.html │ ├── App_5b_Console.html │ ├── App_5b_MainFunc.html │ ├── App_5c_Contact.html │ ├── App_5c_MainFunc.html │ ├── App_6_USGSgage.html │ ├── App_8_Console.html │ └── App_9_Status.html │ ├── SiteVisitChecklist.zip │ ├── SiteX_20230828.zip │ ├── TestData_HOBOU20_20241230.zip │ ├── TestData_miniDOT.zip │ ├── ThresholdsCheckWorksheet_20240925.xlsx │ ├── ThresholdsCheckWorksheet_Template_20220117.xlsx │ ├── ThresholdsEvaluateFiles.zip │ ├── TimMartin_R_ThresholdEval.zip │ ├── Workflow_DataPileup_20220824.pdf │ ├── Workflow_QC_report_20220824.pdf │ └── continuous_data_template_2017_11_15.csv ├── man ├── CompSiteCDF.Rd ├── CompSiteCDF.updated.Rd ├── Config.Out.Rd ├── ContDataQC.Rd ├── DATA_period_test2_Aw_20130101_20141231.Rd ├── Export.IHA.Rd ├── Export.StreamThermal.Rd ├── Export.rLakeAnalyzer.Rd ├── PeriodStats.Rd ├── RBIcalc.Rd ├── SumStats.updated.Rd ├── config.load.Rd ├── data_CompSiteCDF.Rd ├── data_raw_ECO66G12_AW_20160128_20160418.Rd ├── data_raw_test2_AW_20130426_20130725.Rd ├── data_raw_test2_AW_20130725_20131015.Rd ├── data_raw_test2_AW_20140901_20140930.Rd ├── data_raw_test4_AW_20160418_20160726.Rd ├── formatHobo.Rd ├── format_minidot.Rd ├── fun.AggregateData.File.Rd ├── fun.AggregateData.Rd ├── fun.DateTimeFormat.Rd ├── fun.GageData.Rd ├── fun.ParseID.Rd ├── fun.QC.File.Rd ├── fun.QC.Rd ├── fun.Report.File.Rd ├── fun.Report.Rd ├── fun.Stats.File.Rd ├── fun.Stats.Rd ├── fun.dt.Type2.Rd ├── minidot_cat.Rd ├── rquery.t.test.Rd └── runShinyExample.Rd ├── tests ├── testthat.R └── testthat │ └── test_export_rLakeAnalyzer.R └── vignettes ├── .install_extras ├── Data1_RAW ├── config.TZ.Central.R ├── test2_AW_20130426_20130725.csv ├── test2_AW_20130725_20131015.csv ├── test2_AW_20140901_20140930.csv └── test4_AW_20160418_20160726.csv ├── STATS_01187300_Gage_20130101_20141231_Discharge.ft3.s.pdf ├── Vignette_Config.Rmd ├── Vignette_ContDataQC.Rmd └── Vignette_Lakes.Rmd /.Rbuildignore: -------------------------------------------------------------------------------- 1 | ^Meta$ 2 | ^doc$ 3 | ^.*\.Rproj$ 4 | ^\.Rproj\.user$ 5 | ^README\.Rmd$ 6 | ^README-.*\.png$ 7 | ^NEWS\.Rmd$ 8 | ^_test$ 9 | ^_pkgdown\.yml$ 10 | ^pkgdown$ 11 | ^\.github$ 12 | ^LICENSE\.md$ 13 | ^data-raw$ 14 | rsconnect$ 15 | -------------------------------------------------------------------------------- /.gitattributes: -------------------------------------------------------------------------------- 1 | # Auto detect text files and perform LF normalization 2 | * text=auto 3 | 4 | # Custom for Visual Studio 5 | *.cs diff=csharp 6 | 7 | # Standard to msysgit 8 | *.doc diff=astextplain 9 | *.DOC diff=astextplain 10 | *.docx diff=astextplain 11 | *.DOCX diff=astextplain 12 | *.dot diff=astextplain 13 | *.DOT diff=astextplain 14 | *.pdf diff=astextplain 15 | *.PDF diff=astextplain 16 | *.rtf diff=astextplain 17 | *.RTF diff=astextplain 18 | -------------------------------------------------------------------------------- /.github/.gitignore: -------------------------------------------------------------------------------- 1 | *.html 2 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/bug_report.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Bug report 3 | about: Create a report to help us improve 4 | 5 | --- 6 | 7 | **Describe the bug** 8 | A clear and concise description of what the bug is. 9 | 10 | **To Reproduce** 11 | Steps to reproduce the behavior: 12 | 1. Go to '...' 13 | 2. Click on '....' 14 | 3. Scroll down to '....' 15 | 4. See error 16 | 17 | **Expected behavior** 18 | A clear and concise description of what you expected to happen. 19 | 20 | **Screenshots** 21 | If applicable, add screenshots to help explain your problem. 22 | 23 | **Desktop (please complete the following information):** 24 | - OS: [e.g. iOS] 25 | - Browser [e.g. chrome, safari] 26 | - Version [e.g. 22] 27 | 28 | **Smartphone (please complete the following information):** 29 | - Device: [e.g. iPhone6] 30 | - OS: [e.g. iOS8.1] 31 | - Browser [e.g. stock browser, safari] 32 | - Version [e.g. 22] 33 | 34 | **Additional context** 35 | Add any other context about the problem here. 36 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/feature_request.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Feature request 3 | about: Suggest an idea for this project 4 | 5 | --- 6 | 7 | **Is your feature request related to a problem? Please describe.** 8 | A clear and concise description of what the problem is. Ex. I'm always frustrated when [...] 9 | 10 | **Describe the solution you'd like** 11 | A clear and concise description of what you want to happen. 12 | 13 | **Describe alternatives you've considered** 14 | A clear and concise description of any alternative solutions or features you've considered. 15 | 16 | **Additional context** 17 | Add any other context or screenshots about the feature request here. 18 | -------------------------------------------------------------------------------- /.github/workflows/R-CMD-check.yaml: -------------------------------------------------------------------------------- 1 | # For help debugging build failures open an issue on the RStudio community with the 'github-actions' tag. 2 | # https://community.rstudio.com/new-topic?category=Package%20development&tags=github-actions 3 | on: 4 | push: 5 | branches: 6 | - main 7 | - master 8 | pull_request: 9 | branches: 10 | - main 11 | - master 12 | 13 | name: R-CMD-check 14 | 15 | jobs: 16 | R-CMD-check: 17 | runs-on: macOS-latest 18 | env: 19 | GITHUB_PAT: ${{ secrets.GITHUB_TOKEN }} 20 | steps: 21 | - uses: actions/checkout@v2 22 | - uses: r-lib/actions/setup-r@v1 23 | - name: Install dependencies 24 | run: | 25 | install.packages(c("remotes", "rcmdcheck")) 26 | remotes::install_deps(dependencies = TRUE) 27 | shell: Rscript {0} 28 | - name: Check 29 | run: rcmdcheck::rcmdcheck(args = "--no-manual", error_on = "error") 30 | shell: Rscript {0} 31 | -------------------------------------------------------------------------------- /.github/workflows/pkgdown.yaml: -------------------------------------------------------------------------------- 1 | on: 2 | push: 3 | branches: 4 | - main 5 | - master 6 | 7 | name: pkgdown 8 | 9 | jobs: 10 | pkgdown: 11 | runs-on: macOS-latest 12 | env: 13 | GITHUB_PAT: ${{ secrets.GITHUB_TOKEN }} 14 | steps: 15 | - uses: actions/checkout@v2 16 | 17 | - uses: r-lib/actions/setup-r@v1 18 | 19 | - uses: r-lib/actions/setup-pandoc@v1 20 | 21 | - name: Query dependencies 22 | run: | 23 | install.packages('remotes') 24 | saveRDS(remotes::dev_package_deps(dependencies = TRUE), ".github/depends.Rds", version = 2) 25 | writeLines(sprintf("R-%i.%i", getRversion()$major, getRversion()$minor), ".github/R-version") 26 | shell: Rscript {0} 27 | 28 | - name: Cache R packages 29 | uses: actions/cache@v2 30 | with: 31 | path: ${{ env.R_LIBS_USER }} 32 | key: ${{ runner.os }}-${{ hashFiles('.github/R-version') }}-1-${{ hashFiles('.github/depends.Rds') }} 33 | restore-keys: ${{ runner.os }}-${{ hashFiles('.github/R-version') }}-1- 34 | 35 | - name: Install dependencies 36 | run: | 37 | remotes::install_deps(dependencies = TRUE) 38 | install.packages("pkgdown", type = "binary") 39 | shell: Rscript {0} 40 | 41 | - name: Install package 42 | run: R CMD INSTALL . 43 | 44 | - name: Deploy package 45 | run: | 46 | git config --local user.email "actions@github.com" 47 | git config --local user.name "GitHub Actions" 48 | Rscript -e 'pkgdown::deploy_to_branch(new_process = FALSE)' 49 | -------------------------------------------------------------------------------- /.github/workflows/test-coverage.yaml: -------------------------------------------------------------------------------- 1 | on: 2 | push: 3 | branches: 4 | - main 5 | - master 6 | pull_request: 7 | branches: 8 | - main 9 | - master 10 | 11 | name: test-coverage 12 | 13 | jobs: 14 | test-coverage: 15 | runs-on: macOS-latest 16 | env: 17 | GITHUB_PAT: ${{ secrets.GITHUB_TOKEN }} 18 | steps: 19 | - uses: actions/checkout@v2 20 | 21 | - uses: r-lib/actions/setup-r@v1 22 | 23 | - uses: r-lib/actions/setup-pandoc@v1 24 | 25 | - name: Query dependencies 26 | run: | 27 | install.packages('remotes') 28 | saveRDS(remotes::dev_package_deps(dependencies = TRUE), ".github/depends.Rds", version = 2) 29 | writeLines(sprintf("R-%i.%i", getRversion()$major, getRversion()$minor), ".github/R-version") 30 | shell: Rscript {0} 31 | 32 | - name: Cache R packages 33 | uses: actions/cache@v2 34 | with: 35 | path: ${{ env.R_LIBS_USER }} 36 | key: ${{ runner.os }}-${{ hashFiles('.github/R-version') }}-1-${{ hashFiles('.github/depends.Rds') }} 37 | restore-keys: ${{ runner.os }}-${{ hashFiles('.github/R-version') }}-1- 38 | 39 | - name: Install dependencies 40 | run: | 41 | install.packages(c("remotes")) 42 | remotes::install_deps(dependencies = TRUE) 43 | remotes::install_cran("covr") 44 | shell: Rscript {0} 45 | 46 | - name: Test coverage 47 | run: covr::codecov() 48 | shell: Rscript {0} 49 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | Meta 2 | doc 3 | # Windows image file caches 4 | Thumbs.db 5 | ehthumbs.db 6 | 7 | # Folder config file 8 | Desktop.ini 9 | # Recycle Bin used on file shares 10 | $RECYCLE.BIN/ 11 | # Windows Installer files 12 | *.cab 13 | *.msi 14 | *.msm 15 | *.msp 16 | # Windows shortcuts 17 | *.lnk 18 | # ========================= 19 | # Operating System Files 20 | # OSX 21 | .DS_Store 22 | .AppleDouble 23 | .LSOverride 24 | # Thumbnails 25 | ._* 26 | # Files that might appear in the root of a volume 27 | .DocumentRevisions-V100 28 | .fseventsd 29 | .Spotlight-V100 30 | .TemporaryItems 31 | .Trashes 32 | .VolumeIcon.icns 33 | # Directories potentially created on remote AFP share 34 | .AppleDB 35 | .AppleDesktop 36 | Network Trash Folder 37 | Temporary Items 38 | .apdisk 39 | NEWS.rmd 40 | README.Rmd 41 | .Rproj.user 42 | ContDataQC_Notebook.nb.html 43 | ContDataQC_Notebook.Rmd 44 | .Rhistory 45 | LOG.Items.20181221.092725.tab 46 | Report_Config_20181221_094339.html 47 | _test/ 48 | rLA_TestLake_Water_20180702_20181012.csv 49 | docs 50 | debug.log 51 | /doc/ 52 | /Meta/ 53 | -------------------------------------------------------------------------------- /ContDataQC.Rproj: -------------------------------------------------------------------------------- 1 | Version: 1.0 2 | ProjectId: 82a6d532-be99-4410-8075-f47aecd7c87e 3 | 4 | RestoreWorkspace: No 5 | SaveWorkspace: No 6 | AlwaysSaveHistory: Default 7 | 8 | EnableCodeIndexing: Yes 9 | UseSpacesForTab: Yes 10 | NumSpacesForTab: 2 11 | Encoding: UTF-8 12 | 13 | RnwWeave: Sweave 14 | LaTeX: pdfLaTeX 15 | 16 | AutoAppendNewline: Yes 17 | StripTrailingWhitespace: Yes 18 | 19 | BuildType: Package 20 | PackageUseDevtools: Yes 21 | PackageInstallArgs: --no-multiarch --with-keep.source 22 | PackageRoxygenize: rd,collate,namespace 23 | -------------------------------------------------------------------------------- /DESCRIPTION: -------------------------------------------------------------------------------- 1 | Package: ContDataQC 2 | Title: Quality Control (QC) of Continous Monitoring Data 3 | Version: 2.0.7.9049 4 | Authors@R: c( 5 | person("Erik W", "Leppo", email="Erik.Leppo@tetratech.com",role=c("aut","cre")), 6 | person("Ann","Roseberry Lincoln", role="ctb"), 7 | person("Jen", "Stamp", role="ctb"), 8 | person("David", "Gibbs", role="ctb"), 9 | person("Ben", "Block", role="ctb"), 10 | person("Yadong", "Xu", role="ctb")) 11 | Description: Quality control checks on continuous data files from Hobo data loggers. Also aggregates and subsets files by a given date range. And runs basic statistics. Outputs reports to Word (requires knitr and Pandoc). 12 | Depends: 13 | R (>= 3.3.3) 14 | License: MIT + file LICENSE 15 | Encoding: UTF-8 16 | LazyData: true 17 | URL: https://github.com/leppott/ContDataQC 18 | BugReports: https://github.com/leppott/ContDataQC/issues 19 | Imports: 20 | dataRetrieval, 21 | doBy, 22 | ggplot2, 23 | knitr, 24 | rmarkdown, 25 | shiny, 26 | survival, 27 | zoo 28 | Suggests: 29 | IHA, 30 | markdown, 31 | reshape2, 32 | rLakeAnalyzer, 33 | rsconnect, 34 | shinyFiles, 35 | shinythemes, 36 | StreamThermal, 37 | XLConnect, 38 | zip, 39 | testthat (>= 3.0.0), 40 | shinyalert 41 | VignetteBuilder: knitr 42 | Remotes: 43 | tsangyp/StreamThermal, 44 | jasonelaw/iha 45 | StagedInstall: no 46 | RoxygenNote: 7.3.2 47 | Config/testthat/edition: 3 48 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | # MIT License 2 | 3 | Copyright (c) 2020 ContDataQC authors 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /NAMESPACE: -------------------------------------------------------------------------------- 1 | # Generated by roxygen2: do not edit by hand 2 | 3 | export(CompSiteCDF) 4 | export(CompSiteCDF.updated) 5 | export(Config.Out) 6 | export(ContDataQC) 7 | export(Export.IHA) 8 | export(Export.StreamThermal) 9 | export(Export.rLakeAnalyzer) 10 | export(PeriodStats) 11 | export(RBIcalc) 12 | export(SumStats.updated) 13 | export(config.load) 14 | export(formatHobo) 15 | export(format_minidot) 16 | export(fun.AggregateData) 17 | export(fun.AggregateData.File) 18 | export(fun.DateTimeFormat) 19 | export(fun.GageData) 20 | export(fun.ParseID) 21 | export(fun.QC) 22 | export(fun.QC.File) 23 | export(fun.Report) 24 | export(fun.Report.File) 25 | export(fun.Stats) 26 | export(fun.Stats.File) 27 | export(fun.dt.Type2) 28 | export(minidot_cat) 29 | export(rquery.t.test) 30 | export(runShinyExample) 31 | -------------------------------------------------------------------------------- /R/RBIcalc.R: -------------------------------------------------------------------------------- 1 | #' Richards-Baker (Flashiness) Index [RBI] calculator 2 | #' 3 | #' Input is a vector of mean daily flows. Output is a value that is the RB 4 | #' Flashiness Index 5 | #' 6 | #' The index is valid over the time period of the data. 7 | #' For example, if the vector contains a month's or a year's data the index will 8 | #' represent that time period. The index will be in the same units as the input 9 | #' data. The function assumes all days are represented (insert NA for missing 10 | #' values). 11 | #' 12 | #' Baker, D.B., R.P. Richards, T.T. Loftus, and J.W. Kramer. 2004. 13 | #' 14 | #' A New Flashiness Index: Characteristics and Applications to Midwestern Rivers 15 | #' and Streams. April 2004. Journal of the American Water Resources Association 16 | #' (JAWRA). Pages 503:522. 17 | # 18 | #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 19 | # Erik.Leppo@tetratech.com (EWL) 20 | # 20171117 21 | #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 22 | #' @param Q Vector of mean daily stream flows. 23 | #' @return Returns a value that represents the RBI. 24 | #' @keywords RBI, Richards Baker Flashiness Index 25 | #' @examples 26 | #' # Get Gage Data via the dataRetrieval package from USGS 01187300 2013 27 | #' data.gage <- dataRetrieval::readNWISdv("03238500" 28 | #' , "00060" 29 | #' , "1974-10-01" 30 | #' , "1975-09-30") 31 | #' head(data.gage) 32 | #' # flow data 33 | #' data.Q <- data.gage[,4] 34 | #' # remove zeros 35 | #' data.Q[data.Q==0] <- NA 36 | #' RBIcalc(data.Q) 37 | #' 38 | #' # QC with document Baker et al., 2004 39 | #' # Table 1, Whiteoak Creek near Georgetown, Ohio (03238500) 40 | #' # Figure 8, upward pointing triangle for 1975 water year value close to 41 | #' # "1.0". Using the data downloaded in journal example calculated RBI values 42 | #' # in Excel and R match at 0.9833356. 43 | # 44 | #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 45 | #' @export 46 | RBIcalc <- function(Q){##FUNCTION.RBIcalc.START 47 | # 48 | time.start <- proc.time() 49 | # 50 | # Size 51 | myLen <- length(Q) 52 | # Add previous record in second column 53 | Qprev <- c(NA,Q[-myLen]) 54 | # Create dataframe. 55 | myData <- as.data.frame(cbind(Q,Qprev)) 56 | # delta (absolute) 57 | myData[,"AbsDelta"] <- abs(myData[,"Q"] - myData[,"Qprev"]) 58 | # SumQ 59 | SumQ <- sum(myData[,"Q"],na.rm=TRUE) 60 | # Sum Delta 61 | SumDelta <- sum(myData[,"AbsDelta"], na.rm=TRUE) 62 | # 63 | RBIsum <- SumDelta / SumQ 64 | # 65 | time.elaps <- proc.time()-time.start 66 | # cat(c("Rarify of samples complete. \n Number of samples = ",nsamp,"\n")) 67 | # cat(c(" Execution time (sec) = ", elaps[1])) 68 | # flush.console() 69 | # 70 | # Return RBI value for data submitted. 71 | return(RBIsum) 72 | # 73 | } ##FUNCTION.RBIcalc.END 74 | -------------------------------------------------------------------------------- /R/data.r: -------------------------------------------------------------------------------- 1 | #' data_raw_test2_AW_20130426_20130725 2 | #' 3 | #' Test data 4 | #' 5 | #' @format a data frame with 4320 observations and 11 variables: 6 | #' 7 | #' 8 | "data_raw_test2_AW_20130426_20130725" 9 | #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 10 | #' data_raw_test2_AW_20130725_20131015 11 | #' 12 | #' Test data. 13 | #' 14 | #' @format a data frame with 3939 observations and 13 variables: 15 | #' 16 | #' 17 | "data_raw_test2_AW_20130725_20131015" 18 | #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 19 | #' data_raw_test2_AW_20140901_20140930 20 | #' 21 | #' Test data. 22 | #' 23 | #' @format a data frame with 1440 observations and 18 variables: 24 | #' 25 | #' 26 | "data_raw_test2_AW_20140901_20140930" 27 | #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 28 | #' data_raw_test4_AW_20160418_20160726 29 | #' 30 | #' Test data. Includes air and water data at different start times. 31 | #' 32 | #' @format a data frame with 9508 observations and 8 variables: 33 | #' 34 | #' 35 | "data_raw_test4_AW_20160418_20160726" 36 | #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 37 | #' DATA_period_test2_Aw_20130101_20141231 38 | #' 39 | #' Test data for PeriodStats(). Includes air and water data at different 40 | #' start times. 41 | #' 42 | #' @format a data frame with 9699 observations and 72 variables: 43 | #' 44 | #' 45 | "DATA_period_test2_Aw_20130101_20141231" 46 | #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 47 | #' data_CompSiteCDF 48 | #' 49 | #' Test data for CompSiteCDF(). Includes daily mean water temp (C) data for 5. 50 | #' 51 | #' @format a data frame with 349 observations and 6 variables: 52 | #' 53 | #' 54 | "data_CompSiteCDF" 55 | #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 56 | #' data_raw_ECO66G12_AW_20160128_20160418 57 | #' 58 | #' Test data for formatHobo(). Example output from HOBOware. 59 | #' 60 | #' @format a data frame with 771 observations and 1 variables: 61 | #' 62 | #' 63 | "data_raw_ECO66G12_AW_20160128_20160418" 64 | #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 65 | -------------------------------------------------------------------------------- /R/fun.CustomConfig.R: -------------------------------------------------------------------------------- 1 | #' Custom Configuration 2 | #' 3 | #' Function to load custom configuration of user defined values. 4 | #' Adds to the existing environment. 5 | #' User should load a new configuration prior to master script. 6 | #' 7 | #' Custom config files must **not** include 8 | #' `ContData.env <- new.env(parent = emptyenv())`. 9 | #' This will create a 2nd environment that will not be accessed by the functions 10 | #' in the package. 11 | #' 12 | #' @param myFile Configuration file (including path if not in working directory) 13 | #' @param myExt "R" or "RDS" 14 | #' @return NA, values in file added to environment "ContData.env". 15 | # @example 16 | # # ContData environment (list) 17 | # list(ls(ContData.env)) 18 | # # ContData environment (structure) 19 | # ls.str(ContData.env) 20 | # # value that will change 21 | # ContData.env$myDefault.Flat.Hi # 30 22 | # # load configuration from R file 23 | # config.load(file.path(.libPaths() 24 | #,"ContDataQC","inst","extdata","config.COOL.R"),myExt="R") 25 | # ContData.env$myDefault.Flat.Hi # 22 26 | # # save configuration as RDS file 27 | # config.export("config.COOL") 28 | # # load configuration from RDS file 29 | # #config.load(file.path(getwd(),"config.COLD.RDS"),myExt="RDS") 30 | #' @export 31 | config.load <- function(myFile, myExt="R"){##FUNCTION.config.load.START 32 | # 33 | # 1.0. Rename current "environment" so can get back if needed 34 | if(exists("ContData.env", mode = "environment") == TRUE){ 35 | # intialize new env 36 | ContData.env.original <- new.env(parent = emptyenv()) 37 | # copy current env to backup env 38 | ContData.env.original <- ContData.env 39 | }## exists ~ END 40 | # 41 | # 2.0. Load/Source threshold file 42 | myEXT <- toupper(myExt) 43 | if (myEXT=="R"){ 44 | # load R file with source 45 | #source(file.path(.libPaths(),"ContDataQC","extdata",myFile)) 46 | #source(file.path(path.package("ContDataQC"),"extdata",myFile)) 47 | source(myFile, local=TRUE) 48 | } else if (myEXT=="RDS") { 49 | # load RDS 50 | readRDS(myFile) 51 | } 52 | # 53 | }##FUNCTION.thresh.load.END 54 | # 55 | # @param myFile Filename for RDS file to store configuration from ContData.env. 56 | # RDS will be appeneded to the give file name. 57 | # @return NA. An RDS file is created. 58 | # @example 59 | # # ContData environment (list) 60 | # list(ls(ContData.env)) 61 | # # ContData environment (structure) 62 | # ls.str(ContData.env) 63 | # # value that will change 64 | # ContData.env$myDefault.Flat.Hi # 30 65 | # # load configuration from R file 66 | # config.load(file.path(getwd(),"inst","extdata","config.COLD.R"),myExt="R") 67 | # ContData.env$myDefault.Flat.Hi # 22 68 | # # save configuration as RDS file 69 | # config.export("config.COLD") 70 | # # load configuration from RDS file 71 | # config.load(file.path(getwd(),"config.COLD.RDS"),myExt="RDS") 72 | # @export 73 | #config.export <- function(myFile){##FUNCTION.config.export.START 74 | # # export current env 75 | # saveRDS(ContData.env,paste0(myFile,".RDS")) 76 | #}##FUNCTION.config.export.END 77 | 78 | # #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 79 | # # check if worked 80 | # ContData.env$myName.SiteID #<- "SiteID" 81 | # ContData.env.original$myName.SiteID 82 | -------------------------------------------------------------------------------- /R/runShinyExample.R: -------------------------------------------------------------------------------- 1 | #' @title run Shiny Example 2 | #' 3 | #' @description Launches Shiny app. 4 | #' 5 | #' @details The Shiny app based on the R package ContDataQC is included in 6 | #' the R package. This function launches that app. 7 | #' 8 | #' The Shiny app is online at: 9 | #' https://davidagibbs.shinyapps.io/rmn_continuous_data_active/ 10 | #' 11 | #' @examples 12 | #' \dontrun{ 13 | #' # Run Function 14 | #' runShinyExample() 15 | #' } 16 | # 17 | #' @export 18 | runShinyExample <- function(){##FUNCTION.START 19 | # 20 | #appDir <- system.file("shiny-examples", "ContDataQC", package = "ContDataQC") 21 | if (system.file("shiny-examples" 22 | , "ContDataQC" 23 | , package = "ContDataQC") == "") { 24 | stop("Could not find example directory. Try re-installing `ContDataQC`." 25 | , call. = FALSE) 26 | } 27 | 28 | shiny::runApp(system.file("shiny-examples" 29 | , "ContDataQC" 30 | , package = "ContDataQC") 31 | , display.mode = "normal") 32 | # 33 | }##FUNCTION.END 34 | -------------------------------------------------------------------------------- /data-raw/.Rhistory: -------------------------------------------------------------------------------- 1 | getwd() 2 | -------------------------------------------------------------------------------- /data-raw/ProcessData_CompSiteCDF.R: -------------------------------------------------------------------------------- 1 | # Prepare data for example for CompSiteCDF 2 | # Water Temp Data by Date (x) and Sites (y) 3 | # 4 | # Erik.Leppo@tetratech.com 5 | # 20170921 6 | #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7 | 8 | # 0. Prep#### 9 | wd <- getwd() # assume is package directory 10 | #library(devtools) 11 | 12 | # 1. Get data and process##### 13 | # 1.1. Import Data 14 | myFile <- "CDF_WaterTemp_2014_MA.csv" 15 | data.import <- utils::read.csv(file.path(wd,"data-raw",myFile)) 16 | # 1.2. Process Data 17 | View(data.import) 18 | # QC check 19 | dim(data.import) 20 | 21 | ##~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 22 | # 2. Save as RDA for use in package#### 23 | # 24 | data_CompSiteCDF <- data.import 25 | devtools::use_data(data_CompSiteCDF, overwrite = TRUE) 26 | 27 | # # # for quick naming 28 | # data_raw_test4_mismatchtimes <- data.import 29 | # devtools::use_data(data_raw_test4_mismatchtimes,overwrite=TRUE) 30 | 31 | # # as part of help file 32 | # myData <- data.import 33 | # write.csv(myData,paste0("./",Selection.SUB[1],"/test4_AW_20160418_20160726.csv")) 34 | -------------------------------------------------------------------------------- /data-raw/ProcessData_Hobo.R: -------------------------------------------------------------------------------- 1 | # Prepare data for example for HoboWare 2 | # 3 example files. 3 | # 4 | # Erik.Leppo@tetratech.com 5 | # 20181127 6 | #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7 | 8 | # 0. Prep#### 9 | wd <- getwd() # assume is package directory 10 | #library(devtools) 11 | 12 | # All 3 files for SiteID = Charlies 13 | 14 | # 1. Get data and process##### 15 | # 1.1. Import Data 16 | myFile <- "Charlies_Air_20170726_20170926.csv" 17 | df.1 <- read.delim(file.path(wd,"data-raw", myFile)) 18 | myFile <- "Charlies_AW_20170726_20170926.csv" 19 | df.2 <- read.delim(file.path(wd,"data-raw", myFile)) 20 | myFile <- "Charlies_Water_20170726_20170926.csv" 21 | df.3 <- read.delim(file.path(wd,"data-raw", myFile)) 22 | myFile <- "ECO66G12_AW_20160128_20160418.csv" 23 | df.4 <- read.delim(file.path(wd,"data-raw", myFile)) 24 | 25 | # 1.2. Process Data 26 | View(df.1) 27 | View(df.2) 28 | View(df.3) 29 | View(df.4) 30 | # QC check 31 | dim(df.1) 32 | dim(df.2) 33 | dim(df.3) 34 | dim(df.4) 35 | # structure 36 | str(df.1) 37 | str(df.2) 38 | str(df.3) 39 | str(df.4) 40 | 41 | ##~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 42 | # 2. Save as RDA for use in package#### 43 | # 44 | data_raw_Charlies_Air_20170726_20170926 <- df.1 45 | devtools::use_data(data_raw_Charlies_Air_20170726_20170926, overwrite = TRUE) 46 | data_raw_Charlies_AW_20170726_20170926 <- df.2 47 | devtools::use_data(data_raw_Charlies_AW_20170726_20170926, overwrite = TRUE) 48 | data_raw_Charlies_Water_20170726_20170926 <- df.3 49 | devtools::use_data(data_raw_Charlies_Water_20170726_20170926, overwrite = TRUE) 50 | data_raw_ECO66G12_AW_20160128_20160418 <- df.4 51 | devtools::use_data(data_raw_ECO66G12_AW_20160128_20160418, overwrite = TRUE) 52 | -------------------------------------------------------------------------------- /data-raw/ProcessData_PeriodSummary.R: -------------------------------------------------------------------------------- 1 | # Prepare data for example for Period Summary 2 | # 3 | # Erik.Leppo@tetratech.com 4 | # 20170905 5 | #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6 | 7 | # 0. Prep#### 8 | wd <- getwd() # assume is package directory 9 | #library(devtools) 10 | 11 | # 1. Get data and process##### 12 | # 1.1. Import Data 13 | myFile <- "DATA_test2_Aw_20130101_20141231.csv" 14 | data.import <- utils::read.csv(file.path(wd,"data-raw",myFile)) 15 | # 1.2. Process Data 16 | View(data.import) 17 | # QC check 18 | dim(data.import) 19 | 20 | ##~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 21 | # 2. Save as RDA for use in package#### 22 | # 23 | DATA_period_test2_Aw_20130101_20141231 <- data.import 24 | devtools::use_data(DATA_period_test2_Aw_20130101_20141231,overwrite = TRUE) 25 | 26 | # # # for quick naming 27 | # data_raw_test4_mismatchtimes <- data.import 28 | # devtools::use_data(data_raw_test4_mismatchtimes,overwrite=TRUE) 29 | 30 | # # as part of help file 31 | # myData <- data.import 32 | # write.csv(myData,paste0("./",Selection.SUB[1],"/test4_AW_20160418_20160726.csv")) 33 | -------------------------------------------------------------------------------- /data-raw/ProcessData_test2.R: -------------------------------------------------------------------------------- 1 | # Prepare data for example for test2 2 | # 3 example files. 3 | # 3rd file is a subset of the 2nd file 4 | # 5 | # Erik.Leppo@tetratech.com 6 | # 20170509 7 | # 20201203, devtools to usethis, resave files 8 | #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 9 | 10 | # 0. Prep#### 11 | wd <- getwd() # assume is package directory 12 | #library(devtools) 13 | 14 | # df.1, date, time, and datetime 15 | # df.2 only datetime (different format) 16 | # df.3 subset (one month) of df.2 17 | 18 | # 1. Get data and process##### 19 | # 1.1. Import Data 20 | myFile <- "test2_AW_20130426_20130725.csv" 21 | df.1 <- utils::read.csv(file.path(wd,"data-raw",myFile)) 22 | myFile <- "test2_AW_20130725_20131015.csv" 23 | df.2 <- utils::read.csv(file.path(wd,"data-raw",myFile)) 24 | myFile <- "test2_AW_20140901_20140930.csv" 25 | df.3 <- utils::read.csv(file.path(wd,"data-raw",myFile)) 26 | 27 | 28 | # 1.2. Process Data 29 | View(df.1) 30 | View(df.2) 31 | View(df.3) 32 | # QC check 33 | dim(df.1) 34 | dim(df.2) 35 | dim(df.3) 36 | # structure 37 | str(df.1) 38 | str(df.2) 39 | str(df.3) 40 | 41 | ##~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 42 | # 2. Save as RDA for use in package#### 43 | # 44 | data_raw_test2_AW_20130426_20130725 <- df.1 45 | usethis::use_data(data_raw_test2_AW_20130426_20130725,overwrite = TRUE) 46 | data_raw_test2_AW_20130725_20131015 <- df.2 47 | usethis::use_data(data_raw_test2_AW_20130725_20131015,overwrite = TRUE) 48 | data_raw_test2_AW_20140901_20140930 <- df.3 49 | usethis::use_data(data_raw_test2_AW_20140901_20140930,overwrite = TRUE) 50 | 51 | -------------------------------------------------------------------------------- /data-raw/ProcessData_test4.R: -------------------------------------------------------------------------------- 1 | # Prepare data for example for test4 2 | # Mismatches air and water sensors 3 | # 4 | # Erik.Leppo@tetratech.com 5 | # 20170501 6 | #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7 | 8 | # 0. Prep#### 9 | wd <- getwd() # assume is package directory 10 | #library(devtools) 11 | 12 | # 1. Get data and process##### 13 | # 1.1. Import Data 14 | myFile <- "test4_AW_20160418_20160726.csv" 15 | data.import <- utils::read.csv(file.path(wd,"data-raw",myFile)) 16 | # 1.2. Process Data 17 | View(data.import) 18 | # QC check 19 | dim(data.import) 20 | 21 | ##~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 22 | # 2. Save as RDA for use in package#### 23 | # 24 | data_raw_test4_AW_20160418_20160726 <- data.import 25 | devtools::use_data(data_raw_test4_AW_20160418_20160726,overwrite = TRUE) 26 | 27 | # # # for quick naming 28 | # data_raw_test4_mismatchtimes <- data.import 29 | # devtools::use_data(data_raw_test4_mismatchtimes,overwrite=TRUE) 30 | 31 | # # as part of help file 32 | # myData <- data.import 33 | # write.csv(myData,paste0("./",Selection.SUB[1],"/test4_AW_20160418_20160726.csv")) 34 | -------------------------------------------------------------------------------- /data-raw/ProcessFileCopy_Config.R: -------------------------------------------------------------------------------- 1 | # Copy Config file to Shiny 2 | # Run each time update master config file (data\config.R) 3 | # 4 | # Erik.Leppo@tetratech.com 5 | # 2021-01-20 6 | # 2023-08-31, added other versions 7 | #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 8 | 9 | # 0. Prep ---- 10 | wd <- getwd() # assume is package directory 11 | #library(devtools) 12 | 13 | # 1. Copy file with new name 14 | config.from <- file.path(".", "R", "config.R") 15 | config.to <- file.path(".", "inst", "shiny-examples", "ContDataQC" 16 | , "www", "Config.R") 17 | file.copy(config.from, config.to, overwrite = TRUE) 18 | 19 | # 2. Copy and save as "TEMPLATE" 20 | config.from <- file.path(".", "R", "config.R") 21 | config.to.template <- file.path(".", "inst", "shiny-examples", "ContDataQC" 22 | , "www", "Config_Template.R") 23 | file.copy(config.from, config.to.template, overwrite = TRUE) 24 | # 25 | config.from <- file.path(".", "R", "config.R") 26 | config.to.template <- file.path(".", "inst", "shiny-examples", "ContDataQC" 27 | , "www", "Config_Default.R") 28 | file.copy(config.from, config.to.template, overwrite = TRUE) 29 | 30 | # 3. Copy to extdata 31 | config.from <- file.path(".", "R", "config.R") 32 | config.to <- file.path(".", "inst", "extdata", "Config.ORIG.R") 33 | file.copy(config.from, config.to, overwrite = TRUE) 34 | 35 | 36 | # 4. Comment out env.new() in TEMPLATE 37 | ###### MANUAL ************************************* 38 | 39 | # 5. Create zip file from TEMPLATE 40 | ###### MANUAL ************************************* 41 | 42 | shell.exec(normalizePath(file.path(".", "inst", "shiny-examples", "ContDataQC", "www"))) 43 | 44 | # 6. Other versions 45 | # *NOT* updated 46 | # inst/extdata 47 | # COOL 48 | # ExcludeFailsFalse 49 | # RMDdir 50 | # TZ.Central 51 | # WARM 52 | #ORIG taken care of already 53 | -------------------------------------------------------------------------------- /data-raw/ProcessRMD_Gibbs_ShinyHTML.R: -------------------------------------------------------------------------------- 1 | # Create HTML files for use with Shiny app 2 | # David Gibbs saved the Shiny RMD inside the app 3 | # Erik.Leppo@tetratech.com 4 | # 2022-09-16 5 | #~~~~~~~~~~~~~~ 6 | 7 | # AUTO, RMD 2 HTML ---- 8 | # EWL, 2024-01-31 9 | # Render RMD to HTML and move to www 10 | 11 | # Packages 12 | # libary(rmarkdown) 13 | 14 | # Files 15 | myFiles <- list.files(path = "inst/shiny-examples/ContDataQC/rmd" 16 | , pattern = "^App_" 17 | , full.names = TRUE) 18 | 19 | # Loop over files 20 | 21 | 22 | # Render as HTML 23 | path_shiny_www <- file.path("inst" 24 | , "shiny-examples" 25 | , "ContDataQC" 26 | , "www" 27 | , "RMD_HTML") 28 | 29 | 30 | for (i in myFiles) { 31 | # file name w/o extension 32 | #i_fn <- tools::file_path_sans_ext(basename(i)) 33 | # save to HTML 34 | rmarkdown::render(input = i 35 | , output_dir = path_shiny_www) 36 | }## FOR ~ i 37 | 38 | shell.exec(normalizePath(path_shiny_www)) 39 | 40 | 41 | # MANUAL, Move Knitted HTML ---- 42 | # Knit to HTML manually 43 | # Move those HTML files to www 44 | 45 | path_rmd <- file.path("inst", "shiny-examples", "ContDataQC", "rmd") 46 | path_shiny_www <- file.path("inst", "shiny-examples", "ContDataQC", "www", "RMD_HTML") 47 | 48 | # open folder 49 | shell.exec(normalizePath(path_rmd)) 50 | 51 | # Copy 52 | myFile <- list.files(path = path_rmd 53 | , pattern = "^App_.+\\.html$" 54 | , full.names = TRUE) 55 | file.copy(myFile 56 | , file.path(path_shiny_www, basename(myFile)) 57 | , overwrite = TRUE) 58 | # Delete 59 | unlink(myFile) 60 | 61 | 62 | 63 | 64 | # OLD code ---- 65 | # 66 | # Packages 67 | # libary(rmarkdown) 68 | 69 | # # Files 70 | # path_rmd <- "data-raw/rmd" 71 | # myFiles <- list.files(path = path_rmd 72 | # , pattern = "^App_.+\\.Rmd$" 73 | # , full.names = TRUE) 74 | # #myFiles <- myFiles[!myFiles %in% "data-raw/RMD/ShinyHTML_About.Rmd"] 75 | # 76 | # # Loop over files 77 | # 78 | # 79 | # # Render as HTML 80 | # path_shiny_www <- file.path("inst", "shiny-examples", "ContDataQC", "www") 81 | # 82 | # 83 | # for(i in myFiles) { 84 | # # file name w/o extension 85 | # #i_fn <- tools::file_path_sans_ext(basename(i)) 86 | # # save to HTML 87 | # rmarkdown::render(input = i 88 | # , output_dir = path_shiny_www 89 | # #, output_format = rmarkdown::html_fragment(df_print = "kable") 90 | # ) 91 | # }## FOR ~ i 92 | # 93 | # shell.exec(normalizePath(path_shiny_www)) 94 | -------------------------------------------------------------------------------- /data/DATA_period_test2_Aw_20130101_20141231.rda: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leppott/ContDataQC/d057a7af19137d46030b4937941f06866ce4cdc9/data/DATA_period_test2_Aw_20130101_20141231.rda -------------------------------------------------------------------------------- /data/data_CompSiteCDF.rda: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leppott/ContDataQC/d057a7af19137d46030b4937941f06866ce4cdc9/data/data_CompSiteCDF.rda -------------------------------------------------------------------------------- /data/data_raw_ECO66G12_AW_20160128_20160418.rda: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leppott/ContDataQC/d057a7af19137d46030b4937941f06866ce4cdc9/data/data_raw_ECO66G12_AW_20160128_20160418.rda -------------------------------------------------------------------------------- /data/data_raw_test2_AW_20130426_20130725.rda: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leppott/ContDataQC/d057a7af19137d46030b4937941f06866ce4cdc9/data/data_raw_test2_AW_20130426_20130725.rda -------------------------------------------------------------------------------- /data/data_raw_test2_AW_20130725_20131015.rda: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leppott/ContDataQC/d057a7af19137d46030b4937941f06866ce4cdc9/data/data_raw_test2_AW_20130725_20131015.rda -------------------------------------------------------------------------------- /data/data_raw_test2_AW_20140901_20140930.rda: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leppott/ContDataQC/d057a7af19137d46030b4937941f06866ce4cdc9/data/data_raw_test2_AW_20140901_20140930.rda -------------------------------------------------------------------------------- /data/data_raw_test4_AW_20160418_20160726.rda: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leppott/ContDataQC/d057a7af19137d46030b4937941f06866ce4cdc9/data/data_raw_test4_AW_20160418_20160726.rda -------------------------------------------------------------------------------- /inst/CITATION: -------------------------------------------------------------------------------- 1 | citHeader("To cite ContDataQC in publications use:") 2 | 3 | bibentry( 4 | bibtype = "Article", 5 | title = "ContDataQC", 6 | author = personList(as.person()), 7 | year = , 8 | 9 | textVersion = 10 | paste("Leppo, E.W., ", 11 | "ContDataQC -- An R package for " 12 | ) 13 | 14 | 15 | person("Erik W", "Leppo"), 16 | person("Ann","Roseberry Lincoln"), 17 | person("Jen", "Stamp"), 18 | person("David", "Gibbs"), 19 | person("Ben", "Block"), 20 | person("Yadong", "Xu") 21 | -------------------------------------------------------------------------------- /inst/extdata/DailyMeans_ECO66G12.xlsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leppott/ContDataQC/d057a7af19137d46030b4937941f06866ce4cdc9/inst/extdata/DailyMeans_ECO66G12.xlsx -------------------------------------------------------------------------------- /inst/extdata/Rcode_FormattingFunction.pptx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leppott/ContDataQC/d057a7af19137d46030b4937941f06866ce4cdc9/inst/extdata/Rcode_FormattingFunction.pptx -------------------------------------------------------------------------------- /inst/extdata/StreamThermal_MetricList.xlsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leppott/ContDataQC/d057a7af19137d46030b4937941f06866ce4cdc9/inst/extdata/StreamThermal_MetricList.xlsx -------------------------------------------------------------------------------- /inst/extdata/config.ExcludeFailsFalse.R: -------------------------------------------------------------------------------- 1 | #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2 | # Exclude Trigger #### 3 | # Trigger for Stats to exclude (TRUE) or include (FALSE) where flag = "fail" 4 | ContData.env$myStats.Fails.Exclude <- FALSE #FALSE #TRUE 5 | #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6 | -------------------------------------------------------------------------------- /inst/extdata/config.RMDdir.R: -------------------------------------------------------------------------------- 1 | # User Defined Values 2 | 3 | # Report Format 4 | ContData.env$myReport.Format <- "docx" # "html" or "docx" # DOCX requires Pandoc. 5 | ContData.env$myReport.Dir <- getwd() #file.path(system.file(package="ContDataQC"), "rmd") 6 | -------------------------------------------------------------------------------- /inst/extdata/config.TZ.Central.R: -------------------------------------------------------------------------------- 1 | # User Defined Values 2 | 3 | # Time Zone, used in Gage script in dataRetrieval, OlsonNames() 4 | # ContData.env$myTZ <- Sys.timezone() #"America/New_York" (local time zone) 5 | ContData.env$myTZ <- "America/Chicago" # central time zone 6 | #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 7 | -------------------------------------------------------------------------------- /inst/extdata/minidot/2019-12-13 151700Z.txt: -------------------------------------------------------------------------------- 1 | 7392-354869 2 | OS REV: 1.11 Sensor Cal: 1511389810 3 | Time (sec), BV (Volts), T (deg C), DO (mg/l), Q () 4 | 1576250220,+3.49,+14.287, +9.654,+1.004 5 | 1576252020,+3.49,+11.875,+10.149,+1.004 6 | 1576253820,+3.49, +7.474, +9.274,+0.997 7 | 1576255620,+3.48, +4.024, +9.592,+1.004 8 | 1576257420,+3.48, +4.055, +9.670,+1.005 9 | 1576259220,+3.48, +4.146, +9.701,+1.006 10 | 1576261020,+3.48, +4.186, +9.706,+1.004 11 | 1576262820,+3.48, +4.267, +9.735,+1.004 12 | 1576264620,+3.48, +4.378, +9.783,+1.005 13 | 1576266420,+3.48, +4.298, +9.759,+1.006 14 | 1576268220,+3.48, +4.277, +9.755,+1.005 15 | 1576270020,+3.47, +4.257, +9.796,+1.005 16 | 1576271820,+3.47, +4.378, +9.758,+1.004 17 | 1576273620,+3.47, +4.378, +9.775,+1.005 18 | 1576275420,+3.47, +4.298, +9.776,+1.005 19 | 1576277220,+3.47, +4.328, +9.794,+1.006 20 | 1576279020,+3.47, +4.409, +9.787,+1.005 21 | 1576280820,+3.47, +4.429, +9.819,+1.005 22 | 1576282620,+3.47, +4.520, +9.888,+1.005 23 | 1576284420,+3.47, +4.550, +9.858,+1.004 24 | 1576286220,+3.47, +4.580, +9.837,+1.005 25 | 1576288020,+3.47, +4.600, +9.859,+1.005 26 | 1576289820,+3.47, +4.760, +9.910,+1.005 27 | 1576291620,+3.46, +4.791, +9.909,+1.006 28 | 1576293420,+3.46, +4.851, +9.900,+1.005 29 | 1576295220,+3.46, +4.861, +9.943,+1.005 30 | 1576297020,+3.46, +4.930, +9.928,+1.004 31 | 1576298820,+3.46, +4.950, +9.937,+1.004 32 | 1576300620,+3.46, +5.090, +9.904,+1.005 33 | 1576302420,+3.46, +5.486, +9.781,+1.005 34 | 1576304220,+3.46, +5.762, +9.675,+1.005 35 | 1576306020,+3.46, +5.900, +9.582,+1.005 36 | 1576307820,+3.46, +5.939, +9.477,+1.005 37 | 1576309620,+3.46, +5.890, +9.440,+1.004 38 | 1576311420,+3.46, +5.831, +9.501,+1.006 39 | 1576313220,+3.46, +5.743, +9.553,+1.004 40 | 1576315020,+3.46, +5.644, +9.701,+1.003 41 | 1576316820,+3.46, +5.467,+10.003,+1.004 42 | 1576318620,+3.45, +5.279,+10.216,+1.004 43 | 1576320420,+3.45, +5.179,+10.191,+1.005 44 | 1576322220,+3.45, +5.110, +9.985,+1.004 45 | 1576324020,+3.45, +5.070, +9.969,+1.004 46 | 1576325820,+3.45, +5.110, +9.977,+1.004 47 | 1576327620,+3.45, +5.199, +9.928,+1.005 48 | 1576329420,+3.45, +5.328, +9.897,+1.005 49 | 1576331220,+3.45, +5.417, +9.894,+1.005 50 | 1576333020,+3.45, +5.486, +9.878,+1.006 51 | 1576334820,+3.45, +5.644, +9.839,+1.005 52 | 1576336620,+3.45, +5.939, +9.768,+1.004 53 | -------------------------------------------------------------------------------- /inst/extdata/minidot/2019-12-14 154700Z.txt: -------------------------------------------------------------------------------- 1 | 7392-354869 2 | OS REV: 1.11 Sensor Cal: 1511389810 3 | Time (sec), BV (Volts), T (deg C), DO (mg/l), Q () 4 | 1576338420,+3.45, +6.066, +9.922,+1.006 5 | 1576340220,+3.44, +6.280, +9.607,+1.005 6 | 1576342020,+3.44, +6.193, +9.624,+1.004 7 | 1576343820,+3.44, +5.998, +9.575,+1.004 8 | 1576345620,+3.44, +6.105, +9.553,+1.004 9 | 1576347420,+3.44, +6.066, +9.538,+1.005 10 | 1576349220,+3.44, +6.494, +9.496,+1.005 11 | 1576351020,+3.44, +6.842, +9.475,+1.004 12 | 1576352820,+3.44, +7.053, +9.418,+1.004 13 | 1576354620,+3.44, +7.369, +9.343,+1.006 14 | 1576356420,+3.44, +8.108, +9.106,+1.005 15 | 1576358220,+3.44, +8.250, +9.077,+1.004 16 | 1576360020,+3.44, +7.502, +9.255,+1.003 17 | 1576361820,+3.44, +7.778, +9.125,+1.005 18 | 1576363620,+3.44, +8.052, +9.092,+1.004 19 | 1576365420,+3.44, +8.005, +9.147,+1.004 20 | 1576367220,+3.44, +8.005, +9.198,+1.005 21 | 1576369020,+3.44, +8.052, +9.201,+1.004 22 | 1576370820,+3.44, +8.127, +9.163,+1.003 23 | 1576372620,+3.43, +8.287, +9.068,+1.005 24 | 1576374420,+3.44, +8.428, +8.977,+1.004 25 | 1576376220,+3.44, +8.559, +8.891,+1.004 26 | 1576378020,+3.43, +8.325, +8.955,+1.004 27 | 1576379820,+3.43, +8.033, +9.026,+1.004 28 | 1576381620,+3.43, +7.749, +9.069,+1.004 29 | 1576383420,+3.43, +7.702, +8.963,+1.003 30 | 1576385220,+3.43, +7.749, +8.877,+1.005 31 | 1576387020,+3.43, +7.797, +8.816,+1.003 32 | 1576388820,+3.43, +7.521, +8.759,+1.005 33 | 1576390620,+3.43, +7.445, +8.693,+1.004 34 | 1576392420,+3.43, +7.245, +8.650,+1.004 35 | 1576394220,+3.43, +6.996, +8.781,+1.005 36 | 1576396020,+3.43, +6.977, +8.758,+1.004 37 | 1576397820,+3.43, +6.890, +8.721,+1.004 38 | 1576399620,+3.43, +6.717, +8.619,+1.004 39 | 1576401420,+3.43, +6.639, +8.598,+1.004 40 | 1576403220,+3.43, +6.639, +8.571,+1.004 41 | 1576405020,+3.43, +6.416, +8.546,+1.004 42 | 1576406820,+3.43, +6.339, +8.526,+1.005 43 | 1576408620,+3.43, +6.310, +8.555,+1.004 44 | 1576410420,+3.42, +6.280, +8.569,+1.005 45 | 1576412220,+3.42, +6.183, +8.521,+1.004 46 | 1576414020,+3.42, +6.134, +8.535,+1.005 47 | 1576415820,+3.42, +6.095, +8.521,+1.006 48 | 1576417620,+3.42, +6.164, +8.580,+1.005 49 | 1576419420,+3.42, +6.407, +8.652,+1.005 50 | 1576421220,+3.42, +6.630, +8.742,+1.005 51 | 1576423020,+3.42, +6.823, +8.764,+1.005 52 | 1576424820,+3.42, +6.919, +8.760,+1.004 53 | -------------------------------------------------------------------------------- /inst/extdata/minidot/2019-12-15 161700Z.txt: -------------------------------------------------------------------------------- 1 | 7392-354869 2 | OS REV: 1.11 Sensor Cal: 1511389810 3 | Time (sec), BV (Volts), T (deg C), DO (mg/l), Q () 4 | 1576426620,+3.42, +6.986, +8.689,+1.005 5 | 1576428420,+3.42, +6.928, +8.571,+1.005 6 | 1576430220,+3.42, +6.967, +8.527,+1.004 7 | 1576432020,+3.42, +6.900, +8.573,+1.005 8 | 1576433820,+3.42, +6.823, +8.677,+1.005 9 | 1576435620,+3.42, +7.082, +8.762,+1.006 10 | 1576437420,+3.42, +7.274, +8.845,+1.006 11 | 1576439220,+3.42, +7.379, +9.009,+1.005 12 | 1576441020,+3.42, +7.369, +9.155,+1.006 13 | 1576442820,+3.42, +7.379, +9.150,+1.005 14 | 1576444620,+3.42, +7.455, +9.180,+1.005 15 | 1576446420,+3.42, +7.474, +9.192,+1.005 16 | 1576448220,+3.42, +7.254, +9.224,+1.005 17 | 1576450020,+3.42, +7.274, +9.206,+1.005 18 | 1576451820,+3.42, +7.197, +9.213,+1.005 19 | 1576453620,+3.42, +7.053, +9.199,+1.006 20 | 1576455420,+3.42, +7.092, +9.174,+1.006 21 | 1576457220,+3.42, +6.765, +9.148,+1.005 22 | 1576459020,+3.42, +6.620, +9.105,+1.005 23 | 1576460820,+3.42, +6.572, +9.068,+1.005 24 | 1576462620,+3.42, +6.523, +9.090,+1.005 25 | 1576464420,+3.42, +6.504, +9.039,+1.005 26 | 1576466220,+3.42, +6.465, +9.024,+1.005 27 | 1576468020,+3.42, +6.436, +9.022,+1.005 28 | 1576469820,+3.41, +6.378, +9.030,+1.005 29 | 1576471620,+3.41, +6.310, +9.044,+1.006 30 | 1576473420,+3.41, +6.319, +9.021,+1.006 31 | 1576475220,+3.41, +6.329, +9.009,+1.006 32 | 1576477020,+3.41, +6.300, +9.011,+1.006 33 | 1576478820,+3.41, +6.290, +8.968,+1.005 34 | 1576480620,+3.41, +6.271, +8.968,+1.006 35 | 1576482420,+3.41, +6.242, +8.945,+1.004 36 | 1576484220,+3.41, +6.222, +8.949,+1.006 37 | 1576486020,+3.41, +6.183, +8.934,+1.006 38 | 1576487820,+3.41, +6.144, +8.917,+1.005 39 | 1576489620,+3.41, +6.125, +8.932,+1.005 40 | 1576491420,+3.41, +6.076, +8.931,+1.005 41 | 1576493220,+3.41, +6.056, +8.913,+1.005 42 | 1576495020,+3.41, +6.037, +8.875,+1.006 43 | 1576496820,+3.41, +5.909, +8.811,+1.005 44 | 1576498620,+3.41, +5.860, +8.684,+1.005 45 | 1576500420,+3.41, +5.713, +8.592,+1.005 46 | 1576502220,+3.41, +5.644, +8.626,+1.006 47 | 1576504020,+3.41, +5.556, +8.608,+1.006 48 | 1576505820,+3.41, +5.506, +8.557,+1.007 49 | 1576507620,+3.41, +5.457, +8.460,+1.005 50 | 1576509420,+3.41, +5.427, +8.428,+1.006 51 | 1576511220,+3.41, +5.427, +8.315,+1.006 52 | 1576513020,+3.41, +5.388, +8.347,+1.007 53 | -------------------------------------------------------------------------------- /inst/shiny-examples/ContDataQC/.gitignore: -------------------------------------------------------------------------------- 1 | .Rproj.user 2 | .Rhistory 3 | .RData 4 | .Ruserdata 5 | *.tab 6 | *.msg 7 | 00_ContDataQC.R 8 | 000b_InstallPandoc.R 9 | 000a_InstallLibraries.R 10 | Data0_Original 11 | Data1_RAW 12 | rsconnect 13 | Shiny app improvement ideas.docx 14 | 01_ContDataQC_function_only.R 15 | LOG.Items.20170518.152309.tab 16 | LOG.Items.20170518.153300.tab 17 | LOG.Items.20170518.153914.tab 18 | LOG.Items.20170518.153947.tab 19 | LOG.Items.20170518.154314.tab 20 | LOG.Items.20170518.154435.tab 21 | LOG.Items.20170518.154528.tab 22 | LOG.Items.20170518.154611.tab 23 | LOG.Items.20170518.154615.tab 24 | LOG.Items.20170518.155257.tab 25 | LOG.Items.20170519.090044.tab 26 | LOG.Items.20170519.090848.tab 27 | LOG.Items.20170519.111653.tab 28 | LOG.Items.20170519.161249.tab 29 | LOG.Items.20170519.170429.tab 30 | LOG.Items.20170519.171357.tab 31 | LOG.Items.20170519.172300.tab 32 | LOG.Items.20170519.174706.tab 33 | LOG.Items.20170519.174940.tab 34 | LOG.Items.20170519.175620.tab 35 | LOG.Items.20170519.175736.tab 36 | LOG.Items.20170519.175840.tab 37 | LOG.Items.20170519.180125.tab 38 | LOG.Items.20170519.182254.tab 39 | -------------------------------------------------------------------------------- /inst/shiny-examples/ContDataQC/HOBO/remove.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leppott/ContDataQC/d057a7af19137d46030b4937941f06866ce4cdc9/inst/shiny-examples/ContDataQC/HOBO/remove.txt -------------------------------------------------------------------------------- /inst/shiny-examples/ContDataQC/config.RMDdir.R: -------------------------------------------------------------------------------- 1 | # User Defined Values 2 | # 3 | # User defined values for variables used across multiple functions in this 4 | # library. The user has the ability to modify the values for names, units, 5 | # QC thresholds, etc. 6 | # 7 | # Saved in a separate environment. 8 | # 9 | # https://www.r-bloggers.com/package-wide-variablescache-in-r-packages/ 10 | # 11 | # Continuous data helper script 12 | # Default Values 13 | # Erik.Leppo@tetratech.com (EWL) 14 | # 20150928 15 | # 20170323, add 3 parameters (Cond, DO, pH) 16 | #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 17 | # User defined variable names for input data 18 | #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 19 | # It is assumed that this R script is stored in a directory with the data files 20 | # as subdirectories. This script is intended to be "source"d from the main 21 | # script. 22 | #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 23 | # @keywords continuous data 24 | # @examples 25 | # #Not intended to be accessed indepedant of function ContDataQC(). 26 | # #Data values only. No functions. Add to environment so only visible 27 | # inside library. 28 | #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 29 | # USER may make modifications in this section but not mandatory 30 | # this section could be sourced so can use between scripts 31 | #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 32 | #UserDefinedValues <- NA # default value so shows up in help files 33 | #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 34 | # Report Format 35 | # DOCX requires Pandoc. 36 | ContData.env$myReport.Format <- "docx" # "html" or "docx" 37 | #file.path(system.file(package="ContDataQC"), "rmd") 38 | # ContData.env$myReport.Dir <- getwd() 39 | #file.path(system.file(package="ContDataQC"), "rmd") 40 | ContData.env$myReport.Dir <- "./rmd" 41 | 42 | -------------------------------------------------------------------------------- /inst/shiny-examples/ContDataQC/continuous_data_template_2017_11_15.csv: -------------------------------------------------------------------------------- 1 | RowID,SiteID,Date Time,Water Temp C,Air Temp C,Water P psi,Air BP psi,Sensor Depth ft,GageHeight,Discharge,Discrete Water Temp C,Discrete Air Temp C,Discrete Water P psi,Air BP psi,Discrete Sensor Depth ft,Water logger ID,Air logger ID 2 | 1,B0997,3/5/2015 0:00,11.916,18.331,14.5947,14.1206,1.02,1.02,43,11.916,18.331,14.6,14.1,1.02,10246120,10246124 3 | 2,B0997,3/5/2015 0:30,11.916,16.903,14.5972,14.118,1.032,1.032,47,,,,,,10246120,10246124 4 | 3,B0997,3/5/2015 1:00,12.013,16.713,14.5928,14.1125,1.034,1.034,52,,,,,,10246120,10246124 5 | 4,B0997,3/5/2015 1:30,12.013,16.903,14.5928,14.1083,1.044,1.044,52,,,,,,10246120,10246124 6 | -------------------------------------------------------------------------------- /inst/shiny-examples/ContDataQC/data/remove.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leppott/ContDataQC/d057a7af19137d46030b4937941f06866ce4cdc9/inst/shiny-examples/ContDataQC/data/remove.txt -------------------------------------------------------------------------------- /inst/shiny-examples/ContDataQC/external/remove.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leppott/ContDataQC/d057a7af19137d46030b4937941f06866ce4cdc9/inst/shiny-examples/ContDataQC/external/remove.txt -------------------------------------------------------------------------------- /inst/shiny-examples/ContDataQC/external/tab_1_About.R: -------------------------------------------------------------------------------- 1 | # About 2 | 3 | function() { 4 | 5 | tabPanel("About" 6 | , mainPanel( 7 | tabsetPanel(type = "tabs" 8 | 9 | , tabPanel("Overview" 10 | , p(paste0("Version ", version, ".")) 11 | , includeHTML("www/RMD_HTML/App_1a_Overview.html") 12 | )## tabPanel ~ END 13 | 14 | , tabPanel("Test Files" 15 | , includeHTML("www/RMD_HTML/App_1b_TestData.html") 16 | )## tabPanel ~ END 17 | 18 | , tabPanel("Basic Information" 19 | , includeHTML("www/RMD_HTML/App_1c_FAQ.html") 20 | )## tabPanel~ END 21 | 22 | , tabPanel("Tips" 23 | ,includeHTML("www/RMD_HTML/App_1d_Tips.html") 24 | )# tabPanel ~ QC Tips ~ END 25 | 26 | , tabPanel("Advanced" 27 | ,includeHTML("www/RMD_HTML/App_1e_Advanced.html") 28 | )# tabPanel ~ Advanced ~ END 29 | 30 | , tabPanel("Related Apps" 31 | , includeHTML("www/RMD_HTML/App_1f_RelatedApps.html") 32 | )## tabPanel ~ END 33 | 34 | 35 | )## tabsetPanel ~ END 36 | )## mainPanel ~ END 37 | ) ## tabPanel ~ Config ~ END 38 | }## FUNCTION ~ END 39 | -------------------------------------------------------------------------------- /inst/shiny-examples/ContDataQC/external/tab_1a_Overview.R: -------------------------------------------------------------------------------- 1 | # Panel, Overview 2 | 3 | function(){ 4 | 5 | tabPanel("About" 6 | , mainPanel( 7 | includeHTML("www/RMD_HTML/App_1Overview.html") 8 | , tags$head(includeHTML(("google-analytics.html"))) 9 | )## mainPanel ~ END 10 | ) #tabPanel ~END 11 | }##FUNCTION ~ END 12 | -------------------------------------------------------------------------------- /inst/shiny-examples/ContDataQC/external/tab_1b_TestData.R: -------------------------------------------------------------------------------- 1 | # Panel, Test Data 2 | 3 | function() { 4 | 5 | tabPanel("Test Data" 6 | , mainPanel( 7 | includeHTML("www/RMD_HTML/App_7TestData.html") 8 | )## mainPanel ~ END 9 | ) ## tabPanel ~ Config ~ END 10 | }## FUNCTION ~ END 11 | -------------------------------------------------------------------------------- /inst/shiny-examples/ContDataQC/external/tab_1c_FAQ.R: -------------------------------------------------------------------------------- 1 | # Panel, FAQ 2 | 3 | function() { 4 | 5 | tabPanel("Basis Info" 6 | , mainPanel( 7 | includeHTML("www/RMD_HTML/App_2FAQ.html") 8 | 9 | )## mainPanel ~ END 10 | ) #tabPanel ~ END 11 | }## FUNCTION ~ END 12 | -------------------------------------------------------------------------------- /inst/shiny-examples/ContDataQC/external/tab_2a_FormatSensors.R: -------------------------------------------------------------------------------- 1 | # Data Prep, About/Formatting 2 | 3 | function() { 4 | 5 | tabPanel("Format Sensors" 6 | , mainPanel( 7 | tabsetPanel(type = "tabs" 8 | 9 | , tabPanel("Hobo" 10 | , includeHTML("www/RMD_HTML/App_2a1_HOBO.html") 11 | )## tabPanel ~ END 12 | 13 | , tabPanel("Hobo" 14 | , includeHTML("www/RMD_HTML/App_2a1_HOBO.html") 15 | )## tabPanel~ END 16 | 17 | , tabPanel("miniDOT" 18 | , includeHTML("www/RMD_HTML/App_2a2_miniDOT.html") 19 | )## tabPanel ~ END 20 | 21 | 22 | 23 | )## tabsetPanel ~ END 24 | )## mainPanel ~ END 25 | ) ## tabPanel ~ Config ~ END 26 | }## FUNCTION ~ END 27 | -------------------------------------------------------------------------------- /inst/shiny-examples/ContDataQC/external/tab_4_USGSgage.R: -------------------------------------------------------------------------------- 1 | # Panel, USGS gage data 2 | 3 | function(){ 4 | 5 | tabPanel("Download USGS Gage Data" 6 | ,fluidRow( 7 | column(5, 8 | includeHTML("www/RMD_HTML/App_4_USGSgage.html") 9 | )# column ~ END 10 | 11 | ,column(5, offset = 1 12 | ,h3("Download USGS gage data here") 13 | ,br() 14 | ,textInput("USGSsite" 15 | , label = "USGS site ID(s) (separated by commas and spaces)") 16 | ,textInput("startDate" 17 | , label = "Starting date (YYYY-MM-DD)" 18 | , placeholder = "YYYY-MM-DD") 19 | ,textInput("endDate" 20 | , label = "Ending date (YYYY-MM-DD)" 21 | , placeholder = "YYYY-MM-DD") 22 | ,br() 23 | ,actionButton("getUSGSData", "Retrieve USGS data") 24 | ,br() 25 | ,br() 26 | 27 | #Only shows the "Download" button after the process has run 28 | ,tags$div(title="Click to download your USGS gage data" 29 | ,uiOutput('ui.downloadUSGSData')) 30 | )# column ~ END 31 | )# fluidRow ~ END 32 | )## tabPanel ~ END 33 | 34 | }## FUNCTION ~ END 35 | -------------------------------------------------------------------------------- /inst/shiny-examples/ContDataQC/external/tab_5_Troubleshooting.R: -------------------------------------------------------------------------------- 1 | # Panel, Console 2 | 3 | function() { 4 | tabPanel("Troubleshooting" 5 | , mainPanel( 6 | tabsetPanel(type = "tabs" 7 | # , tabPanel("Troubleshooting" 8 | # ,includeHTML("www/RMD_HTML/App_5a_Troubleshooting.html") 9 | # # ,tableOutput("logText") 10 | # # ,tableOutput("logTextUSGS") 11 | # # ,tags$b(textOutput("logTextMessage") 12 | # ) 13 | 14 | , tabPanel("Console" 15 | ,includeHTML("www/RMD_HTML/App_5b_Console.html") 16 | ,tableOutput("logText") 17 | ,tableOutput("logTextUSGS") 18 | ,tags$b(textOutput("logTextMessage")) 19 | )##tabPanel 20 | # , tabPanel("Contact Info" 21 | # ,includeHTML("www/RMD_HTML/App_5c_Contact.html") 22 | # )##tabPanel 23 | )##tabsetPanel 24 | )##mainPanel 25 | )##tabPanel 26 | }## FUNCTION ~ END 27 | -------------------------------------------------------------------------------- /inst/shiny-examples/ContDataQC/external/tab_5b_Console.R: -------------------------------------------------------------------------------- 1 | # Panel, Console 2 | 3 | function() { 4 | 5 | tabPanel("Console" 6 | ,includeHTML("www/RMD_HTML/App_8Console.html") 7 | ,tableOutput("logText") 8 | ,tableOutput("logTextUSGS") 9 | ,tags$b(textOutput("logTextMessage")) 10 | 11 | ) ## tabPanel ~ Adv Feat ~ END 12 | }## FUNCTION ~ END 13 | -------------------------------------------------------------------------------- /inst/shiny-examples/ContDataQC/external/tab_9_Status.R: -------------------------------------------------------------------------------- 1 | # Panel, Status 2 | 3 | function() { 4 | 5 | tabPanel("Status" 6 | , mainPanel( 7 | includeHTML("www/RMD_HTML/App_9Status.html") 8 | 9 | )## mainPanel ~ END 10 | )# tabPanel ~ END 11 | }## FUNCTION ~ END 12 | -------------------------------------------------------------------------------- /inst/shiny-examples/ContDataQC/google-analytics.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 10 | -------------------------------------------------------------------------------- /inst/shiny-examples/ContDataQC/miniDOT_cat/delete.me: -------------------------------------------------------------------------------- 1 | Upload to Shiny server removes empty directories. 2 | 3 | Add dummy file to avoid this issue. 4 | 5 | Erik.Leppo@tetratech.com -------------------------------------------------------------------------------- /inst/shiny-examples/ContDataQC/miniDOT_reformat/delete.me: -------------------------------------------------------------------------------- 1 | Upload to Shiny server removes empty directories. 2 | 3 | Add dummy file to avoid this issue. 4 | 5 | Erik.Leppo@tetratech.com -------------------------------------------------------------------------------- /inst/shiny-examples/ContDataQC/rmd/App_1a_Overview.rmd: -------------------------------------------------------------------------------- 1 | --- 2 | title: "Overview" 3 | date: "`r format(Sys.time(), '%Y-%m-%d %H:%M:%S')`" 4 | always_allow_html: true 5 | output: 6 | html_fragment: 7 | toc: yes 8 | --- 9 | 10 | ```{r setup, include=FALSE} 11 | knitr::opts_chunk$set(results='asis', echo=FALSE, warning=FALSE, message = FALSE, fig.align="center") 12 | # needed for trouble shooting 13 | boo_DEBUG <- FALSE 14 | if(boo_DEBUG==TRUE){ 15 | # myConfig <- file.path(system.file(package="ContDataQC"), "extdata", "config.ORIG.R") 16 | # source(myConfig) 17 | }## IF ~ boo_DEBUG ~ END 18 | ``` 19 | 20 | # About ContDataQC 21 | 22 | The ContDataQC Shiny app is a free R-based tool that was developed to help water quality monitoring programs QC, merge and summarize continuous sensor data files in a standardized, more efficient way. It also has a function that allows users to download U.S. Geological Survey gage data at sites and over periods of their choosing. This Shiny app is linked to the ContDataQC R package, which was developed by Tetra Tech in support of the EPA and is 23 | available on Github 24 | Exit EPA Website 26 | 27 | 25 | . 28 | 29 | The ContDataQC R package and Shiny app were developed with the following objectives in mind: ensure that a certain (minimum) level of Quality Control (QC) is being performed on continuous data files; standardize and speed up data QC and reduce missed errors; and standardize data for further analysis and sharing. ContDataQC is configured for temperature, water level, discharge, conductivity, dissolved oxygen (DO), pH, turbidity, chlorophyll-a and salinity data. Users with advanced R skills can add any other parameters that they desire by making edits to the configuration file, which can be viewed in R or in Notepad. 30 | 31 | # ContDataQC Shiny App Workflow 32 | 33 | The table below lays out the general workflow for using ContDataQC. 34 | 35 | ```{r} 36 | library(readxl) 37 | library(knitr) 38 | library(kableExtra) 39 | # state directories 40 | table.dir <- "tables" 41 | table.file <- "App_Information_Tables.xlsx" 42 | table.sheet <- "About_Overview" 43 | 44 | table <- read_excel(file.path(table.dir, table.file), sheet = table.sheet 45 | , na = c("NA", ""), trim_ws = TRUE, skip = 0 46 | , col_names = TRUE) 47 | 48 | options(knitr.kable.NA = '') 49 | # kable(table1) 50 | table %>% 51 | kbl() %>% 52 | kable_styling(full_width = F, position = "left") 53 | ``` 54 | 55 | # Funding 56 | 57 | Development of the ContDataQC R tools has been funded by the United States 58 | Environmental Protection Agency (EPA) Office of Research and Development (ORD) as part of a larger project to establish Regional Monitoring Networks (RMNs) for freshwater streams and inland lakes. The RMNs are a volunteer, collaborative effort in which entities collect long-term continuous temperature and hydrologic data at targeted sites to detect changes 59 | over time. For more information on the RMNs, please refer to the 60 | stream Regional Monitoring Networks report 61 | Exit EPA Website 63 | 64 | 62 | . 65 | -------------------------------------------------------------------------------- /inst/shiny-examples/ContDataQC/rmd/App_1b_TestData.rmd: -------------------------------------------------------------------------------- 1 | --- 2 | title: "Test Date" 3 | date: "`r format(Sys.time(), '%Y-%m-%d %H:%M:%S')`" 4 | always_allow_html: true 5 | output: 6 | html_fragment: 7 | toc: yes 8 | editor_options: 9 | markdown: 10 | wrap: 72 11 | --- 12 | 13 | ```{r setup, include=FALSE} 14 | knitr::opts_chunk$set(results='asis', echo=FALSE, warning=FALSE, message = FALSE) 15 | # needed for trouble shooting 16 | boo_DEBUG <- FALSE 17 | if(boo_DEBUG==TRUE){ 18 | # myConfig <- file.path(system.file(package="ContDataQC"), "extdata", "config.ORIG.R") 19 | # source(myConfig) 20 | }## IF ~ boo_DEBUG ~ END 21 | ``` 22 | 23 | ## Test files 24 | Below are test files that you can download and run through the Shiny app. They are from Onset HOBO U20 water level loggers (non-vented pressure transducers) and miniDOT DO sensors. Please contact us if you have example files from other sensors that you would like us to add to this website. 25 | 26 | * [Onset HOBO U20](TestData_HOBOU20_20241230.zip) [ZIP] 27 | * [miniDOT DO](TestData_miniDOT.zip) [ZIP] 28 | 29 | ## Onset HOBO 30 | The Onset HOBO U20 test data consist of two comma-separated values (CSV) files. The files are from the same site but cover two different time periods. You'll see two folders: 31 | 32 | * **Test** 33 | 34 | + The two HOBO U20 test files are in the Data0_Original folder. Go to the **Automated Reformat – Onset HOBO** tab and run both files through the reformatting function. Multiple files can be run through the function at the same time (in ‘batches’). The function reformats the files so that they are ready to run through the QC report function. Next, go to the **Main Functions-Import Files** tab, import the reformatted files, run them through the ‘QC raw data’ function (multiple files can be run through the function at the same time), check the flagged data (edit if needed), aggregate the two QC’d CSV files with the ‘Aggregate QC’ed data’ function, and run the ‘Summary Statistics’ function to summarize the data. 35 | 36 | * **Completed** 37 | 38 | + This folder has the complete set of outputs for both files so that you can see examples of the QC reports and other outputs without having to run the test data through the functions yourself. 39 | 40 | ## miniDOT DO Sensors 41 | 42 | The miniDOT DO test files are from one site and one deployment period. 43 | You’ll see two sets of folders. Within each folder are example input and output files. 44 | 45 | * **miniDOT_concatenate** - When data are initially downloaded from miniDOT sensors, there are separate .txt files for each day (in this example, 325 individual files). Go to the **Automated Reformat – miniDOT** tab and run the **Concatenate** function to combine them all into one file. 46 | 47 | * **miniDOT_reformat** – run the combined file through the Reformat function. The function reformats the file so that it is ready to run through the QC report function. Next, go to the Main **Functions-Import Files** tab, import the reformatted file, run it through the ‘QC raw data’ function, and check the flagged data (edit if needed). 48 | -------------------------------------------------------------------------------- /inst/shiny-examples/ContDataQC/rmd/App_1e_Advanced.rmd: -------------------------------------------------------------------------------- 1 | --- 2 | title: "Advanced" 3 | date: "`r format(Sys.time(), '%Y-%m-%d %H:%M:%S')`" 4 | always_allow_html: true 5 | output: 6 | html_fragment: 7 | toc: yes 8 | --- 9 | 10 | ```{r setup, include=FALSE} 11 | knitr::opts_chunk$set(results='asis', echo=FALSE, warning=FALSE, message = FALSE) 12 | # needed for trouble shooting 13 | boo_DEBUG <- FALSE 14 | if(boo_DEBUG==TRUE){ 15 | # myConfig <- file.path(system.file(package="ContDataQC"), "extdata", "config.ORIG.R") 16 | # source(myConfig) 17 | }## IF ~ boo_DEBUG ~ END 18 | ``` 19 | # Advanced 20 | 21 | Users with intermediate to advanced-level computer skills can customize the settings (e.g., add new parameters, change units, change file naming and formatting requirements, change the format of one of the QC reports from Word to html or PDF) by editing a plain text [configuration file](Config_default.zip) [ZIP]. You can do this in R or Notepad. 22 | 23 | Some users may prefer to use the ContDataQC 24 | R code 25 | Exit EPA Website 27 | 28 | 26 | instead of the Shiny app. While using the R code allows for some additional layers of customization beyond this, when it comes to file naming schemes and setting directories, users have more flexibility using the Shiny app because they can browse to the desired input file(s). 29 | -------------------------------------------------------------------------------- /inst/shiny-examples/ContDataQC/rmd/App_2a2_miniDOT1.Rmd: -------------------------------------------------------------------------------- 1 | --- 2 | title: "DataPrep_miniDOT_Cat, 3e" 3 | output: html_fragment 4 | --- 5 | ```{r setup, include=FALSE} 6 | # --- 7 | # title: "DataPrep_miniDOT_Cat" 8 | # date: '2022-06-01' 9 | # --- 10 | knitr::opts_chunk$set(echo = FALSE) 11 | ``` 12 | 13 | # miniDOT DO Concatenate 14 | 15 | When data are initially downloaded from miniDOT sensors, there are separate 16 | .txt files for each day (in this example, 325 individual files). Users have two options for combining them into one CSV file: 1) the **ContDataQC Concatenate** function; or 2) the **PME java app** that comes with the logger. 17 | 18 | ## Concatenate Instructions 19 | 20 | * Click the ‘Browse’ button and select all the individual files that you want to combine. The status bar will tell you when the upload is complete (be patient – you may not see anything happen for the first 30 seconds or so, depending on how many files you are uploading). 21 | 22 | * Click the ‘Concatenate’ button; a status bar will appear in the lower right corner. 23 | 24 | * After the function is done running, a ‘Download’ button will appear. Click this button. 25 | 26 | * You will be prompted to save a zipped file named ‘miniDOT_cat_date_time’. Save the zipped file in the Data0_Original folder. 27 | 28 | * Unzip/extract the file(s) or else the files won’t be seen as an option to upload to the Reformat function. After file is unzipped, a new folder called ‘miniDOT_cat’ will appear. The original zipped file can be deleted if desired. 29 | 30 | ## Test files 31 | 32 | [miniDOT test data](TestData_miniDOT.zip) [ZIP] 33 | 34 | Below is an example of what the output file looks like after running the **Concatenate** function. 35 | 36 | ```{r, fig.alt="miniDOT DO file after running the Concatenate function."} 37 | knitr::include_graphics("RMD_Images/miniDOT_AFTER_Concatenate.jpg") 38 | ``` 39 | 40 | ## Additional Notes 41 | 42 | If you're wondering why your DO saturation values are all NA, this occurs when no inputs are provided to calculate DO percent saturation. For more information, please see the miniDOT manual or contact the miniDOT support team. 43 | -------------------------------------------------------------------------------- /inst/shiny-examples/ContDataQC/rmd/App_2a3_miniDOT2.Rmd: -------------------------------------------------------------------------------- 1 | --- 2 | title: "DataPrep_miniDOT_Reformat, 3f" 3 | output: html_fragment 4 | editor_options: 5 | markdown: 6 | wrap: 72 7 | --- 8 | 9 | ```{r setup, include=FALSE} 10 | # --- 11 | # title: "DataPrep_miniDOT_Reformat" 12 | # date: '2022-06-01' 13 | # --- 14 | knitr::opts_chunk$set(echo = FALSE) 15 | ``` 16 | 17 | # miniDOT DO Reformat 18 | 19 | After the daily files are concatenated, run the combined file through 20 | the Reformat function. The function reformats the file so that it is 21 | ready to run through the QC report function. 22 | 23 | ## Instructions 24 | 25 | - Click the 'Browse' button and select the input file(s). You can run 26 | multiple files at once. The status bar will tell you when the upload 27 | is complete. 28 | 29 | - Click the 'Reformat miniDOT file(s)' button; a status bar will 30 | appear in the lower right corner. 31 | 32 | - After the function is done running, a 'Download' button will appear. 33 | Click this button. 34 | 35 | - You will be prompted to save a zipped file named 36 | 'miniDOT_reformat_date_time'. Save the zipped file in the Data1_RAW 37 | folder. 38 | 39 | - Unzip/extract the file(s) or else the files won't be seen as an 40 | option to upload to the QC report function (Main Functions - QC raw 41 | data). After file is unzipped, a new folder called 42 | 'miniDOT_reformat' will appear. The original zipped file can be 43 | deleted if desired. 44 | 45 | - See below for examples of files before and after reformatting. 46 | 47 | ## Test files 48 | 49 | [miniDOT test data](TestData_miniDOT.zip) [ZIP] 50 | 51 | Below is an example of what files look like before and after running the **Reformat** function. 52 | 53 | **Before** 54 | 55 | 56 | ```{r, fig.alt="miniDOT DO file before running the reformat function."} 57 | knitr::include_graphics("RMD_Images/miniDOT_Before_Reformat.jpg") 58 | ``` 59 | 60 | **After** 61 | 62 | ```{r, fig.alt="miniDOT DO file after running the reformat function."} 63 | knitr::include_graphics("RMD_Images/miniDOT_After_Reformat.jpg") 64 | ``` 65 | 66 | ## Additional Notes 67 | 68 | If you're wondering why your DO saturation values are all NA, this occurs when no inputs are provided to calculate DO percent saturation. For more information, please see the miniDOT manual or contact the miniDOT support team. 69 | -------------------------------------------------------------------------------- /inst/shiny-examples/ContDataQC/rmd/App_2a_FormattingFiles.rmd: -------------------------------------------------------------------------------- 1 | --- 2 | title: "Formatting Files" 3 | date: "`r format(Sys.time(), '%Y-%m-%d %H:%M:%S')`" 4 | always_allow_html: true 5 | output: 6 | html_fragment: 7 | toc: yes 8 | --- 9 | 10 | ```{r setup, include=FALSE} 11 | knitr::opts_chunk$set(results='asis', echo=FALSE, warning=FALSE, message = FALSE) 12 | # needed for trouble shooting 13 | boo_DEBUG <- FALSE 14 | if(boo_DEBUG==TRUE){ 15 | # myConfig <- file.path(system.file(package="ContDataQC"), "extdata", "config.ORIG.R") 16 | # source(myConfig) 17 | }## IF ~ boo_DEBUG ~ END 18 | 19 | # 20230911, file missing so recreated from Jen's "updates" 20 | ``` 21 | 22 | # Formatting Files 23 | 24 | Input files need to be formatted a specific way in order for the Shiny app and R package to work. Guidelines. 25 | 26 | * Input files must be comma-delimited (CSV) (but not CSV UTF-8 files). 27 | 28 | * The columns do not have to be in any specific order 29 | 30 | * There are two required fields: SiteID; and “Date Time” (with Date and Time combined into one field). 31 | 32 | * If using the default [configuration file](Config_default.zip) [ZIP], column names must match the capitalization, spelling and symbology shown in the table below (for example, R will not recognize ‘sensor depth ft’; it needs to be ‘Sensor Depth ft’) 33 | 34 | * Either periods or spaces in the column headings are acceptable. For example, in the table below, air temperature is shown as ‘’Air Temp C’ but it can also be entered as ‘Air.Temp.C’. 35 | 36 | * For units, slashes, spaces or periods (e.g., DO mg/L, DO.mg.L or DO mg L) are acceptable. Do NOT use parentheses. 37 | 38 | * Advanced users can add new parameters (beyond the ones show in the table below) to the configuration file. 39 | 40 | * Optional fields include rowID, logger ID (serial number) and discrete measurements. Discrete (in situ) measurements can be entered for any parameter (just add ‘Discrete’ to the beginning of the column heading; for example, ‘Discrete Air Temp C’). The discrete data point will be included in the time series plots that are generated when the user runs the QC function. If using Onset HOBO sensors, you can save time by using the automated reformat function ('Data Preparation - Automated Formatting - HOBOware reformat' tab). 41 | 42 | 43 | ## Data Formatting Information 44 | 45 | ```{r table_1} 46 | library(readxl) 47 | library(knitr) 48 | library(kableExtra) 49 | # state directories 50 | table.dir <- "tables" 51 | table.file <- "App_Information_Tables.xlsx" 52 | tab2a.dir <- "DataPrep_Table2c" 53 | 54 | table2c <- read_excel(file.path(table.dir, table.file), sheet = tab2a.dir 55 | , na = c("NA", ""), trim_ws = TRUE, skip = 0 56 | , col_names = TRUE) 57 | 58 | options(knitr.kable.NA = '') 59 | # kable(table1) 60 | table2c %>% 61 | kbl() %>% 62 | kable_styling(full_width = F, position = "left") 63 | ``` 64 | -------------------------------------------------------------------------------- /inst/shiny-examples/ContDataQC/rmd/App_2az_About.rmd: -------------------------------------------------------------------------------- 1 | --- 2 | title: "Automated Reformating, About" 3 | date: "`r format(Sys.time(), '%Y-%m-%d %H:%M:%S')`" 4 | always_allow_html: true 5 | output: 6 | html_fragment: 7 | toc: yes 8 | --- 9 | 10 | ```{r setup, include=FALSE} 11 | knitr::opts_chunk$set(results='asis', echo=FALSE, warning=FALSE, message = FALSE) 12 | # needed for trouble shooting 13 | boo_DEBUG <- FALSE 14 | if(boo_DEBUG==TRUE){ 15 | # myConfig <- file.path(system.file(package="ContDataQC"), "extdata", "config.ORIG.R") 16 | # source(myConfig) 17 | }## IF ~ boo_DEBUG ~ END 18 | ``` 19 | 20 | # Automated Reformatting 21 | 22 | These functions convert files coming directly from sensors or proprietary sensor software like HOBOware into a format that is ready to run through the QC report function (**Main Functions - QC raw data**). This saves you time and eliminates errors that sometimes occur when manually reformatting files. 23 | 24 | Currently, reformatting functions are available for two types of sensors: 25 | 26 | * Onset HOBO (water level (U20), temperature (pro V2 and Pendant), and DO (U26); more can be added as needed) 27 | 28 | * miniDOT DO 29 | 30 | Reformatting functions for other types of sensors can be added in the future, if requested. 31 | 32 | 33 | -------------------------------------------------------------------------------- /inst/shiny-examples/ContDataQC/rmd/App_2b_OrganizingFiles.rmd: -------------------------------------------------------------------------------- 1 | --- 2 | title: "3a Organizing Data" 3 | date: "`r format(Sys.time(), '%Y-%m-%d %H:%M:%S')`" 4 | always_allow_html: true 5 | output: 6 | html_fragment: 7 | toc: yes 8 | --- 9 | 10 | ```{r setup, include=FALSE} 11 | knitr::opts_chunk$set(results = 'asis', echo = FALSE, warning = FALSE, message = FALSE) 12 | # needed for trouble shooting 13 | boo_DEBUG <- FALSE 14 | if (boo_DEBUG == TRUE) { 15 | # myConfig <- file.path(system.file(package="ContDataQC"), "extdata", "config.ORIG.R") 16 | # source(myConfig) 17 | }## IF ~ boo_DEBUG ~ END 18 | ``` 19 | 20 | # Organizing Files 21 | 22 | If you do not already have a good system for organizing continuous data files, consider setting up a folder for each site, and within each site folder, set up subfolders as shown in the table below. A quick way to get started is to download this [ready-made set of (empty) folders](SiteX_20230828.zip) [ZIP]. Put this file in the desired directory, unzip it and then replace ‘SiteX’ with the appropriate site name. 23 | 24 | You have more flexibility with file organization when using the Shiny app vs R package. With the Shiny app, it is not necessary to name the folders exactly as shown below because you can browse to the desired input files and browse to save the output files to the desired location. However, if you decide to use the R package at some point, keeping the four ‘Data’ folders (Data0_Original, Data1_RAW, Data2_QC, Data3_Aggregated and Data4_Stats) will be important since the R code searches in specific folders for input files and outputs files to specific directories. Advanced users can modify the default directories by editing the configuration file. 25 | 26 | 27 | ### Folder descriptions 28 | ```{r table_1} 29 | library(readxl) 30 | library(knitr) 31 | library(kableExtra) 32 | # state directories 33 | table.dir <- "tables" 34 | table.file <- "App_Information_Tables.xlsx" 35 | tab2a.dir <- "DataPrep_Table2a" 36 | 37 | table2a <- read_excel(file.path(table.dir, table.file), sheet = tab2a.dir 38 | , na = c("NA", ""), trim_ws = TRUE, skip = 0 39 | , col_names = TRUE) 40 | 41 | options(knitr.kable.NA = '') 42 | # kable(table1) 43 | table2a %>% 44 | kbl() %>% 45 | kable_styling(full_width = F, position = "left") 46 | ``` -------------------------------------------------------------------------------- /inst/shiny-examples/ContDataQC/rmd/App_2c_NamingFiles.rmd: -------------------------------------------------------------------------------- 1 | --- 2 | title: "3b Naming Files" 3 | date: "`r format(Sys.time(), '%Y-%m-%d %H:%M:%S')`" 4 | always_allow_html: true 5 | output: 6 | html_fragment: 7 | toc: yes 8 | --- 9 | 10 | ```{r setup, include=FALSE} 11 | knitr::opts_chunk$set(results='asis', echo=FALSE, warning=FALSE, message = FALSE) 12 | # needed for trouble shooting 13 | boo_DEBUG <- FALSE 14 | if(boo_DEBUG==TRUE){ 15 | # myConfig <- file.path(system.file(package="ContDataQC"), "extdata", "config.ORIG.R") 16 | # source(myConfig) 17 | }## IF ~ boo_DEBUG ~ END 18 | ``` 19 | 20 | # Naming Files 21 | 22 | You have more flexibility with naming files when using the Shiny app vs R 23 | package because you can browse to the desired input file(s), whereas the R 24 | package searches through files in a specified directory and selects data files based on the file name. Even if you are using the Shiny app, consider using the file naming scheme below since you may decide to use the R package at some point in the future. Another reason to use the recommended file naming scheme is because it keeps files well organized and sorts them in chronological order. This is particularly helpful if you are using HOBO U20 water level loggers, as it makes matching air and water sensor files easier during the processing step and helps you identify gaps in the data. 25 | 26 | If you are using the R package, there are four components to the file name for single sensor deployments, which are separated by underscores (“_”). 27 | 28 | **SiteID_DataType_StartDate_EndDate** 29 | 30 | Example: Hunting_Water_20130426_20130725 31 | 32 | * Site ID (no spaces or underscores) = Hunting 33 | 34 | * Data Type options: Air, Water, AW (air and water sensor data are combined into the same file), Gage, DO 35 | 36 | * Date, Start (YYYYMMDD) = 20130426 37 | 38 | * Date, End (YYYYMMDD) = 20130725 39 | 40 | For multi-sensor deployments (e.g., temperature sensors deployed at multiple depths at a lake), add depth and units or some other differentiating characteristic, such as sensor type, to the SiteID, separated by 41 | double-dashes as shown below: 42 | 43 | Example: RussWood--02M_Water_20130426_20130725 44 | 45 | Depth can include decimals (for example, 0.1M is ok) and does not need to 46 | include leading zeros (either 01M or 1M are acceptable). Units can be upper or lower case (M or m), and abbreviated (M) or spelled out (meters). 47 | 48 | You can change the double-dash separator if desired by customizing the 49 | [configuration file](Config_default.zip) [ZIP] (for example, you could change it to a tilde ~). 50 | 51 | If you are using the Shiny app instead of R package, you are not restricted to using the Data Types shown above (Air, Water, AW, etc.). If you have more than one type of sensor deployed at the same depth (e.g., both a DO and temperature sensor at 2M), consider using sensor type in the second part of the file name (for example, RussWood--02M_TEMP_20130426_20130725 or RussWood--02M_DO_20130426_20130725). -------------------------------------------------------------------------------- /inst/shiny-examples/ContDataQC/rmd/App_2cz_DiscreteData.rmd: -------------------------------------------------------------------------------- 1 | --- 2 | title: "Discrete Data" 3 | date: "`r format(Sys.time(), '%Y-%m-%d %H:%M:%S')`" 4 | always_allow_html: true 5 | output: 6 | html_fragment: 7 | toc: yes 8 | --- 9 | 10 | ```{r setup, include=FALSE} 11 | knitr::opts_chunk$set(results='asis', echo=FALSE, warning=FALSE, message = FALSE) 12 | # needed for trouble shooting 13 | boo_DEBUG <- FALSE 14 | if(boo_DEBUG==TRUE){ 15 | # myConfig <- file.path(system.file(package="ContDataQC"), "extdata", "config.ORIG.R") 16 | # source(myConfig) 17 | }## IF ~ boo_DEBUG ~ END 18 | 19 | # 20230911, new tab from Jen's "updates" 20 | ``` 21 | 22 | # Discrete Data 23 | 24 | Discrete measurements are important for validating your data, and in some cases, can be used to correct for sensor drift. Accuracy checks are comparisons of discrete or in situ measurements taken in the lab and/or in the field with sensor measurements from the closest date/time. The difference between the sensor and discrete measurements should be within the accuracy quoted by the manufacturer (e.g., ±0.2°C if you are using the Onset HOBO proV2 sensor). 25 | * **Resource:** [Example accuracy check worksheet](EXAMPLE_AccuracyCheckWkst.xlsx) [XLSX] 26 | 27 | Discrete (in situ) measurements will be included in the time series plots in the QC reports (see example below) if the user manually enters them into the input file. This should be done after the file has been formatted (for example, after a HOBO file has been run through the Reformat function). 28 | 29 | To enter the discrete data - 30 | * add a new column to the CSV 31 | * name the column "Discrete" followed by the parameter name and units (for example, ‘Discrete Air Temp C’) 32 | * enter the data into the row that most closely matches the date/time of the sensor measurement 33 | 34 | {fig-alt="Example QC plot with discrete data. Scatterplot of Water Temperature (y-axis) against Date (x-axis). Some values are 'discrete' measurements."} 35 | -------------------------------------------------------------------------------- /inst/shiny-examples/ContDataQC/rmd/App_3a1_About.rmd: -------------------------------------------------------------------------------- 1 | --- 2 | title: "Main Functions 5a" 3 | date: "`r format(Sys.time(), '%Y-%m-%d %H:%M:%S')`" 4 | always_allow_html: true 5 | output: 6 | html_fragment: 7 | toc: yes 8 | --- 9 | 10 | ```{r setup, include=FALSE} 11 | knitr::opts_chunk$set(results='asis', echo=FALSE, warning=FALSE, message = FALSE) 12 | # needed for trouble shooting 13 | boo_DEBUG <- FALSE 14 | if(boo_DEBUG==TRUE){ 15 | # myConfig <- file.path(system.file(package="ContDataQC"), "extdata", "config.ORIG.R") 16 | # source(myConfig) 17 | }## IF ~ boo_DEBUG ~ END 18 | ``` 19 | 20 | # Workflow 21 | 22 | 1. **Select QC flag test thresholds.** Use the default thresholds ('Main - QC Thresholds - Default' tab) or upload a customized configuration file ('Main - QC Thresholds - Upload Custom Thresholds' tab). If you have one or more years of continuous data for a site, we encourage you to evaluate the performance of the QC test thresholds for each parameter at that site and customize the configuration file if needed. Click 'Main - QC Thresholds - Evaluate Thresholds' tab for tips on evaluating thresholds. To learn how to edit thresholds, click 'Main - QC Thresholds - Edit Thresholds' tab. 23 | 24 | 2. **Check the configuration file name.** Under Run Functions (gray box, step 2), it will show the configuration file name that will be used for the QC tests. Check to make sure the correct file is being used. If you don’t upload a custom file, it will read 'default'. 25 | 26 | 3. **Upload the desired input file(s).** 27 | 28 | 4. **Run the ‘QC raw data’** function to generate QC reports. 29 | 30 | 5. **After the data file(s) are QC’d, users can run them through the Aggregate function** to merge them with other files. The input files need to be from the same site and share common parameters. 31 | 32 | 6. **The user can run the aggregated file through the Summary Statistics function** to generate CSV files with an assortment of summary statistics (e.g., min, median, max, quartiles) and a PDF with time series plots for each parameter. 33 | 34 | After running each function, users must unzip/extract the files or else the files won’t be seen as an option to upload for the next step. After files are unzipped, new folders will automatically appear and the original zipped files can be deleted if desired. 35 | 36 | Time-saver tip: some internet browsers, like Google Chrome and Mozilla Firefox, allow users to change settings so that users can select which folder to download files to (versus files going to the default Download folder). 37 | * Mozilla Firefox: go to Settings > General > Files and Applications > Check box for “always ask where to save files.” 38 | * [Google Chrome file saving tip](GoogleChrome_TimesaverTips.pdf) [PDF] 39 | 40 | Some users may prefer to use the R code instead of the Shiny app. 41 | For more information, see the ‘About - Advanced’ tab 42 | -------------------------------------------------------------------------------- /inst/shiny-examples/ContDataQC/rmd/App_3a2_QCReports.rmd: -------------------------------------------------------------------------------- 1 | --- 2 | title: "Main Functions 5a" 3 | date: "`r format(Sys.time(), '%Y-%m-%d %H:%M:%S')`" 4 | always_allow_html: true 5 | output: 6 | html_fragment: 7 | toc: yes 8 | --- 9 | 10 | ```{r setup, include=FALSE} 11 | knitr::opts_chunk$set(results='asis', echo=FALSE, warning=FALSE, message = FALSE) 12 | # needed for trouble shooting 13 | boo_DEBUG <- FALSE 14 | if(boo_DEBUG==TRUE){ 15 | # myConfig <- file.path(system.file(package="ContDataQC"), "extdata", "config.ORIG.R") 16 | # source(myConfig) 17 | }## IF ~ boo_DEBUG ~ END 18 | ``` 19 | 20 | ### QC reports 21 | 22 | **Example** [QC reports](Example_QCreports.zip) [ZIP] 23 | 24 | Shiny app instructions 25 | 26 | 1. Click the ‘Browse’ button and select the input file(s) from the Data1_RAW 27 | folder. You can run multiple files at once. The status bar will tell you when 28 | the upload is complete. 29 | 30 | 2. Select ‘QC Raw Data’ from the ‘Choose Operation to perform’ drop-down menu 31 | 32 | 3. A ‘Run operation’ button will appear. Click this button. A status bar will 33 | appear in the lower right corner. 34 | 35 | 4. After the function is done running, a ‘Download’ button will appear. Click this button. 36 | 37 | 5. You will be prompted to save a zipped file named ‘QCRaw.date_time.’ Save it in the Data2_QC folder. 38 | 39 | 6. Unzip/extract the file(s). After file is unzipped, a new folder called ‘data’ will appear, which contains QC reports that have ‘QC_’ as the prefix in the file name. The original zipped file can be deleted if desired. 40 | 41 | 7. Open the QC reports. There are two types of outputs: a Word document Data Quality Control Report and a comma-delimited (.csv) spreadsheet. If users prefer a Hypertext Markup Language (HTML) report instead of Word, they can change the format in the configuration file (this requires some familiarity with R code). The reports include results from the ‘flag’ tests (gross, spike, rate of change and flat line), missing data checks and time series plots. 42 | 43 | 8. Review each set of files, check flagged data points, do visual checks on the time series plots, and decide if and how to make corrections. For tips on the QC process, see the ‘About - QC tips’ subtab. 44 | 45 | The Data Quality Control Report is organized into four main sections, starting with an overall summary followed by summaries for each parameter: 46 | 47 | 1. Data file information (siteID, date range, parameters, recording interval, QC test thresholds reference table). 48 | 49 | 2. ‘Count’ tables (# measurements/day) so that you can find inconsistencies 50 | (too few measurements (=missing data) or too many measurements). 51 | 52 | 3. Results from the four ‘flag’ tests (gross, spike, rate of change and flat line) - # of entries marked as pass (P), suspect (S), fail (F), missing data (X) or not available (NA). 53 | 54 | 4. Time series plots for each individual parameter and two sets of combined 55 | parameters (water and air temperature; water temperature and water level). If the input file includes discrete/in situ values , which are taken during site visits for accuracy checks, the discrete values are plotted with the sensor data. 56 | 57 | The CSV file contains the time series data from the sensor plus additional data columns with flags for each test and parameter (e.g., Flag.Spike.Water.Temp.C, Flag.Flat.Water.Temp.C), comment fields for each parameter (e.g., Comment.MOD.Water.Temp.C) so that the user can document rationale for any changes and a duplicate set of the original ‘raw’ data values (e.g., RAW.Water.Temp.C). The ‘raw’ values are included so that the user can maintain documentation of changes that are made and go back at a later time if desired to change how they handled a correction. 58 | 59 | Currently there are no automated corrections programmed into the QC function. 60 | The user must make the changes manually. For tips on the QC process, see the 61 | ‘About - Tips’ subtab. -------------------------------------------------------------------------------- /inst/shiny-examples/ContDataQC/rmd/App_3a3_Aggregate.rmd: -------------------------------------------------------------------------------- 1 | --- 2 | title: "Main Functions 5a" 3 | date: "`r format(Sys.time(), '%Y-%m-%d %H:%M:%S')`" 4 | always_allow_html: true 5 | output: 6 | html_fragment: 7 | toc: yes 8 | --- 9 | 10 | ```{r setup, include=FALSE} 11 | knitr::opts_chunk$set(results='asis', echo=FALSE, warning=FALSE, message = FALSE) 12 | # needed for trouble shooting 13 | boo_DEBUG <- FALSE 14 | if(boo_DEBUG==TRUE){ 15 | # myConfig <- file.path(system.file(package="ContDataQC"), "extdata", "config.ORIG.R") 16 | # source(myConfig) 17 | }## IF ~ boo_DEBUG ~ END 18 | ``` 19 | 20 | ### Aggregate 21 | 22 | **Example** [Aggregate output](Example_Aggregate.zip) [ZIP] 23 | 24 | Shiny app instructions 25 | 26 | 1. Click the ‘Browse’ button and select the QC’d input files that you’d like to combine. The input files need to be from the same site and share common parameters. The status bar will tell you when the upload is complete. 27 | 28 | 2. Select ‘Aggregate QC’d data’ from the ‘Choose Operation to perform’ drop-down menu. 29 | 30 | 3. A ‘Run operation’ button will appear. Click this button. A status bar will appear in the lower right corner. 31 | 32 | 4. After the function is done running, a ‘Download’ button will appear. Click this button. You will be prompted to save a zipped file named ‘Aggregate.date_time.’ Save it in the Data3_Aggregated folder. 33 | 34 | 5. Unzip/extract the file(s). After file is unzipped, a new folder called ‘data’ will appear. If a ‘data’ folder already exists, outputs will go into that folder. The aggregate reports have ‘DATA_’ as the prefix in the file name. The original zipped file can be deleted if desired. 35 | 36 | 6. Open and review the aggregated reports. As with the QC output, there are two types of outputs: a Word document Data Quality Control Report and a comma-delimited (.csv) spreadsheet. If users prefer a Hypertext Markup Language (HTML) report instead of Word, they can change the format in the configuration file (this requires some familiarity with R code). 37 | -------------------------------------------------------------------------------- /inst/shiny-examples/ContDataQC/rmd/App_3a4_SummaryStats.rmd: -------------------------------------------------------------------------------- 1 | --- 2 | title: "Main Functions 5a" 3 | date: "`r format(Sys.time(), '%Y-%m-%d %H:%M:%S')`" 4 | always_allow_html: true 5 | output: 6 | html_fragment: 7 | toc: yes 8 | --- 9 | 10 | ```{r setup, include=FALSE} 11 | knitr::opts_chunk$set(results='asis', echo=FALSE, warning=FALSE, message = FALSE) 12 | # needed for trouble shooting 13 | boo_DEBUG <- FALSE 14 | if(boo_DEBUG==TRUE){ 15 | # myConfig <- file.path(system.file(package="ContDataQC"), "extdata", "config.ORIG.R") 16 | # source(myConfig) 17 | }## IF ~ boo_DEBUG ~ END 18 | ``` 19 | 20 | ### Summary Statistics 21 | 22 | **Example** [Summary Stats output](Example_SumStats.zip) [ZIP] 23 | 24 | Shiny app instructions 25 | 26 | 1. Click the 'Browse' button and select the desired input file from the 27 | Data3_Aggregated folder. The status bar will tell you when the upload is 28 | complete. 29 | 30 | 2. Select 'Summary statistics' from the 'Choose Operation to perform' drop-down menu. 31 | 32 | 3. A 'Run operation' button will appear. Click this button. A status bar will appear in the lower right corner. 33 | 34 | 4. After the function is done running, a ‘Download’ button will appear. Click this button. You will be prompted to save a zipped file named ‘SummaryStats.date_time.’ Save it in the Data4_Stats folder. 35 | 36 | 5. Unzip/extract the file(s). After file is unzipped, a new folder called ‘data’ will appear. If a ‘data’ folder already exists, outputs will go into that folder. The summary stats reports have ‘STATS_’ as the prefix in the file name. The original zipped file can be deleted if desired. 37 | 38 | 6. Open and review the summary statistics reports. There should be two sets of CSV files and a PDF with time series plots for each parameter. One of the CSVs has daily means and the other has a wider range of summary statistics (e.g., min, median, max, quartiles). -------------------------------------------------------------------------------- /inst/shiny-examples/ContDataQC/rmd/App_3b_CheckInput.rmd: -------------------------------------------------------------------------------- 1 | --- 2 | title: "Main Functions 5b" 3 | date: "`r format(Sys.time(), '%Y-%m-%d %H:%M:%S')`" 4 | always_allow_html: true 5 | output: 6 | html_fragment: 7 | toc: yes 8 | --- 9 | 10 | ```{r setup, include=FALSE} 11 | knitr::opts_chunk$set(results='asis', echo=FALSE, warning=FALSE, message = FALSE) 12 | # needed for trouble shooting 13 | boo_DEBUG <- FALSE 14 | if(boo_DEBUG==TRUE){ 15 | # myConfig <- file.path(system.file(package="ContDataQC"), "extdata", "config.ORIG.R") 16 | # source(myConfig) 17 | }## IF ~ boo_DEBUG ~ END 18 | ``` 19 | 20 | # Check input file before running the QC function 21 | 22 | After uploading the input file(s), check the summary table to see what 23 | parameters are in the uploaded files. Ensure that all the desired parameters are 24 | present before running the QC function. 25 | 26 | Note: sometimes people have a mix of correct and incorrect column headings in 27 | the input file. When this happens, R does not give you an error message. It only 28 | carries forward the parameters that have the correct column headings and leaves 29 | the others blank. That is why checking this summary table is important. 30 | -------------------------------------------------------------------------------- /inst/shiny-examples/ContDataQC/rmd/App_3c2_QCThresh_Upload.rmd: -------------------------------------------------------------------------------- 1 | --- 2 | title: "QC Thresholds 4d" 3 | date: "`r format(Sys.time(), '%Y-%m-%d %H:%M:%S')`" 4 | always_allow_html: true 5 | output: 6 | html_fragment: 7 | toc: yes 8 | --- 9 | 10 | ```{r setup, include=FALSE} 11 | knitr::opts_chunk$set(results='asis', echo=FALSE, warning=FALSE, message = FALSE) 12 | # needed for trouble shooting 13 | boo_DEBUG <- FALSE 14 | if(boo_DEBUG==TRUE){ 15 | # myConfig <- file.path(system.file(package="ContDataQC"), "extdata", "config.ORIG.R") 16 | # source(myConfig) 17 | }## IF ~ boo_DEBUG ~ END 18 | ``` 19 | 20 | ## Upload Custom Thresholds 21 | 22 | Click the 'Browse' button (to the left) and select the desired customized 23 | configuration file. The status bar will tell you when the file has been 24 | uploaded. A new button will appear that gives you the option of returning to the default configuration file. Do not click this unless you change your mind and no longer want to use the customized file. 25 | 26 | Go to the ‘Run Functions’ tab; verify that the correct configuration file has been uploaded (by checking the file name); select the desired input file(s); run them through the QC function. Save the output to the desired location. Open the Word QC report and scroll to the ‘Thresholds, Quick Reference’ table (in the middle section of the report). Verify that the correct thresholds were used. 27 | 28 | Be aware that each time you close and reopen the Shiny app, it will 29 | automatically revert back to the default configuration file. Also – remember the sequencing! If you forget to upload the customized configuration file prior to running the QC function, it will use the default thresholds. 30 | 31 | ## Test file 32 | [Example customized configuration file](Custom_QC_Config_ECO66G20_test1.R) [R] 33 | -------------------------------------------------------------------------------- /inst/shiny-examples/ContDataQC/rmd/App_3c3_QCThresh_Eval.rmd: -------------------------------------------------------------------------------- 1 | --- 2 | title: "QC Thresholds 4b" 3 | date: "`r format(Sys.time(), '%Y-%m-%d %H:%M:%S')`" 4 | always_allow_html: true 5 | output: 6 | html_fragment: 7 | toc: yes 8 | --- 9 | 10 | ```{r setup, include=FALSE} 11 | knitr::opts_chunk$set(results='asis', echo=FALSE, warning=FALSE, message = FALSE) 12 | # needed for trouble shooting 13 | boo_DEBUG <- FALSE 14 | if(boo_DEBUG==TRUE){ 15 | # myConfig <- file.path(system.file(package="ContDataQC"), "extdata", "config.ORIG.R") 16 | # source(myConfig) 17 | }## IF ~ boo_DEBUG ~ END 18 | ``` 19 | 20 | ## Evaluate Thresholds 21 | 22 | If you have one or more years of continuous data for a site, we encourage you to evaluate the performance of the QC test thresholds for each parameter at that site and customize the configuration file if needed. Make sure you consider what units you are using, since units have a large effect on thresholds. 23 | 24 | **Resources for evaluating thresholds:** 25 | 26 | * [Pivot tables and charts](EvaluateThresholds.zip) [ZIP] for evaluating the Unrealistic values ('Gross range') and Spike tests in Excel. 27 | 28 | * [R code statistics](TimMartin_R_ThresholdEval.zip) [ZIP] that can help inform thresholds for all four QC tests. 29 | 30 | * [Threshold evaluation worksheet](ThresholdsCheckWorksheet_20240925.xlsx) [XLSX] that lists the default thresholds for each parameter and has columns where you enter customized thresholds for one or multiple sites. 31 | -------------------------------------------------------------------------------- /inst/shiny-examples/ContDataQC/rmd/App_4_USGSgage.rmd: -------------------------------------------------------------------------------- 1 | --- 2 | title: "Download USGS gage data" 3 | date: "`r format(Sys.time(), '%Y-%m-%d %H:%M:%S')`" 4 | always_allow_html: true 5 | output: 6 | html_fragment: 7 | toc: yes 8 | --- 9 | 10 | ```{r setup, include=FALSE} 11 | knitr::opts_chunk$set(results='asis', echo=FALSE, warning=FALSE, message = FALSE) 12 | # needed for trouble shooting 13 | boo_DEBUG <- FALSE 14 | if(boo_DEBUG==TRUE){ 15 | # myConfig <- file.path(system.file(package="ContDataQC"), "extdata", "config.ORIG.R") 16 | # source(myConfig) 17 | }## IF ~ boo_DEBUG ~ END 18 | ``` 19 | 20 | # Instructions 21 | 22 | You can find USGS gage locations and IDs using the 23 | NWIS Mapper 24 | Exit EPA Website 26 | 27 | 25 | . 28 | 29 | To download data: 30 | 31 | 1. Enter as many USGS station IDs as desired, separated by commas and spaces (e.g., 01187300, 01493000, 01639500). 32 | 33 | 2. Enter a starting and ending date for which data will be retrieved; the same date range will be used for every station. 34 | 35 | 3. Click the 'Retrieve USGS data' button. A progress bar will appear in the bottom-right of the tab. It will advance as each file is completed. Thus, if you select three stations, it will wait at 0%, jump to 33%, jump to 66%, and then jump to 100%. 36 | 37 | 4. After data retrieval completes, a download button will appear. Click the button to download a zip file of the records. 38 | -------------------------------------------------------------------------------- /inst/shiny-examples/ContDataQC/rmd/App_5b_Console.rmd: -------------------------------------------------------------------------------- 1 | --- 2 | title: "Console" 3 | date: "`r format(Sys.time(), '%Y-%m-%d %H:%M:%S')`" 4 | always_allow_html: true 5 | output: 6 | html_fragment: 7 | toc: yes 8 | --- 9 | 10 | ```{r setup, include=FALSE} 11 | knitr::opts_chunk$set(results='asis', echo=FALSE, warning=FALSE, message = FALSE) 12 | # needed for trouble shooting 13 | boo_DEBUG <- FALSE 14 | if(boo_DEBUG==TRUE){ 15 | # myConfig <- file.path(system.file(package="ContDataQC"), "extdata", "config.ORIG.R") 16 | # source(myConfig) 17 | }## IF ~ boo_DEBUG ~ END 18 | ``` 19 | 20 | # R console output 21 | 22 | This panel shows messages output by the QC, aggregating, summarizing, and USGS 23 | data retrieval processes. 24 | -------------------------------------------------------------------------------- /inst/shiny-examples/ContDataQC/rmd/Files_From_Jen/1_Overview_table_v2_20210622.xlsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leppott/ContDataQC/d057a7af19137d46030b4937941f06866ce4cdc9/inst/shiny-examples/ContDataQC/rmd/Files_From_Jen/1_Overview_table_v2_20210622.xlsx -------------------------------------------------------------------------------- /inst/shiny-examples/ContDataQC/rmd/Files_From_Jen/1_Overview_v1_20210616.docx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leppott/ContDataQC/d057a7af19137d46030b4937941f06866ce4cdc9/inst/shiny-examples/ContDataQC/rmd/Files_From_Jen/1_Overview_v1_20210616.docx -------------------------------------------------------------------------------- /inst/shiny-examples/ContDataQC/rmd/Files_From_Jen/2a_OrganizingFiles_v1_20210617/2a_Figure_OrganizingFiles.pptx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leppott/ContDataQC/d057a7af19137d46030b4937941f06866ce4cdc9/inst/shiny-examples/ContDataQC/rmd/Files_From_Jen/2a_OrganizingFiles_v1_20210617/2a_Figure_OrganizingFiles.pptx -------------------------------------------------------------------------------- /inst/shiny-examples/ContDataQC/rmd/Files_From_Jen/2a_OrganizingFiles_v1_20210617/2a_OrganizingFiles_v1_20210616.docx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leppott/ContDataQC/d057a7af19137d46030b4937941f06866ce4cdc9/inst/shiny-examples/ContDataQC/rmd/Files_From_Jen/2a_OrganizingFiles_v1_20210617/2a_OrganizingFiles_v1_20210616.docx -------------------------------------------------------------------------------- /inst/shiny-examples/ContDataQC/rmd/Files_From_Jen/2a_OrganizingFiles_v1_20210617/2a_Table_Organize_v1_20210617.xlsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leppott/ContDataQC/d057a7af19137d46030b4937941f06866ce4cdc9/inst/shiny-examples/ContDataQC/rmd/Files_From_Jen/2a_OrganizingFiles_v1_20210617/2a_Table_Organize_v1_20210617.xlsx -------------------------------------------------------------------------------- /inst/shiny-examples/ContDataQC/rmd/Files_From_Jen/2a_OrganizingFiles_v1_20210617/EXAMPLE_AccuracyCheck_NC_QB283_Dutchmans.xlsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leppott/ContDataQC/d057a7af19137d46030b4937941f06866ce4cdc9/inst/shiny-examples/ContDataQC/rmd/Files_From_Jen/2a_OrganizingFiles_v1_20210617/EXAMPLE_AccuracyCheck_NC_QB283_Dutchmans.xlsx -------------------------------------------------------------------------------- /inst/shiny-examples/ContDataQC/rmd/Files_From_Jen/2a_OrganizingFiles_v1_20210617/Fig_Organizing_v1_20210616.jpg.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leppott/ContDataQC/d057a7af19137d46030b4937941f06866ce4cdc9/inst/shiny-examples/ContDataQC/rmd/Files_From_Jen/2a_OrganizingFiles_v1_20210617/Fig_Organizing_v1_20210616.jpg.jpg -------------------------------------------------------------------------------- /inst/shiny-examples/ContDataQC/rmd/Files_From_Jen/2a_OrganizingFiles_v1_20210617/Fig_Organizing_v1_20210616.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leppott/ContDataQC/d057a7af19137d46030b4937941f06866ce4cdc9/inst/shiny-examples/ContDataQC/rmd/Files_From_Jen/2a_OrganizingFiles_v1_20210617/Fig_Organizing_v1_20210616.png -------------------------------------------------------------------------------- /inst/shiny-examples/ContDataQC/rmd/Files_From_Jen/2a_OrganizingFiles_v1_20210617/FolderSetUp_v1_20210616.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leppott/ContDataQC/d057a7af19137d46030b4937941f06866ce4cdc9/inst/shiny-examples/ContDataQC/rmd/Files_From_Jen/2a_OrganizingFiles_v1_20210617/FolderSetUp_v1_20210616.zip -------------------------------------------------------------------------------- /inst/shiny-examples/ContDataQC/rmd/Files_From_Jen/2b_NamingFiles_v1_20210617/2b_Fig_NamingFiles_v1_20210617.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leppott/ContDataQC/d057a7af19137d46030b4937941f06866ce4cdc9/inst/shiny-examples/ContDataQC/rmd/Files_From_Jen/2b_NamingFiles_v1_20210617/2b_Fig_NamingFiles_v1_20210617.jpg -------------------------------------------------------------------------------- /inst/shiny-examples/ContDataQC/rmd/Files_From_Jen/2b_NamingFiles_v1_20210617/2b_Fig_NamingFiles_v1_20210617.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leppott/ContDataQC/d057a7af19137d46030b4937941f06866ce4cdc9/inst/shiny-examples/ContDataQC/rmd/Files_From_Jen/2b_NamingFiles_v1_20210617/2b_Fig_NamingFiles_v1_20210617.png -------------------------------------------------------------------------------- /inst/shiny-examples/ContDataQC/rmd/Files_From_Jen/2b_NamingFiles_v1_20210617/2b_Figure_NamingFiles.pptx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leppott/ContDataQC/d057a7af19137d46030b4937941f06866ce4cdc9/inst/shiny-examples/ContDataQC/rmd/Files_From_Jen/2b_NamingFiles_v1_20210617/2b_Figure_NamingFiles.pptx -------------------------------------------------------------------------------- /inst/shiny-examples/ContDataQC/rmd/Files_From_Jen/2b_NamingFiles_v1_20210617/2b_NamingFiles_v1_20210616.docx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leppott/ContDataQC/d057a7af19137d46030b4937941f06866ce4cdc9/inst/shiny-examples/ContDataQC/rmd/Files_From_Jen/2b_NamingFiles_v1_20210617/2b_NamingFiles_v1_20210616.docx -------------------------------------------------------------------------------- /inst/shiny-examples/ContDataQC/rmd/Files_From_Jen/2b_NamingFiles_v1_20210617/Config_Template.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leppott/ContDataQC/d057a7af19137d46030b4937941f06866ce4cdc9/inst/shiny-examples/ContDataQC/rmd/Files_From_Jen/2b_NamingFiles_v1_20210617/Config_Template.zip -------------------------------------------------------------------------------- /inst/shiny-examples/ContDataQC/rmd/Files_From_Jen/2c_FormattingFiles_v1_20210617/2c_Figure_FormattingFiles.pptx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leppott/ContDataQC/d057a7af19137d46030b4937941f06866ce4cdc9/inst/shiny-examples/ContDataQC/rmd/Files_From_Jen/2c_FormattingFiles_v1_20210617/2c_Figure_FormattingFiles.pptx -------------------------------------------------------------------------------- /inst/shiny-examples/ContDataQC/rmd/Files_From_Jen/2c_FormattingFiles_v1_20210617/2c_FormattingFiles_v1_20210617.docx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leppott/ContDataQC/d057a7af19137d46030b4937941f06866ce4cdc9/inst/shiny-examples/ContDataQC/rmd/Files_From_Jen/2c_FormattingFiles_v1_20210617/2c_FormattingFiles_v1_20210617.docx -------------------------------------------------------------------------------- /inst/shiny-examples/ContDataQC/rmd/Files_From_Jen/2c_FormattingFiles_v1_20210617/2c_Table_FormattingFiles_v1_20210617.xlsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leppott/ContDataQC/d057a7af19137d46030b4937941f06866ce4cdc9/inst/shiny-examples/ContDataQC/rmd/Files_From_Jen/2c_FormattingFiles_v1_20210617/2c_Table_FormattingFiles_v1_20210617.xlsx -------------------------------------------------------------------------------- /inst/shiny-examples/ContDataQC/rmd/Files_From_Jen/2c_FormattingFiles_v1_20210617/2c_subsubtab_HOBOware_reformat_v1_20210617.docx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leppott/ContDataQC/d057a7af19137d46030b4937941f06866ce4cdc9/inst/shiny-examples/ContDataQC/rmd/Files_From_Jen/2c_FormattingFiles_v1_20210617/2c_subsubtab_HOBOware_reformat_v1_20210617.docx -------------------------------------------------------------------------------- /inst/shiny-examples/ContDataQC/rmd/Files_From_Jen/2c_FormattingFiles_v1_20210617/2c_subtab_Figure_HOBOreformat_v1_20210617.pptx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leppott/ContDataQC/d057a7af19137d46030b4937941f06866ce4cdc9/inst/shiny-examples/ContDataQC/rmd/Files_From_Jen/2c_FormattingFiles_v1_20210617/2c_subtab_Figure_HOBOreformat_v1_20210617.pptx -------------------------------------------------------------------------------- /inst/shiny-examples/ContDataQC/rmd/Files_From_Jen/2c_FormattingFiles_v1_20210617/2c_subtab_HOBOreformat_v1_20210617.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leppott/ContDataQC/d057a7af19137d46030b4937941f06866ce4cdc9/inst/shiny-examples/ContDataQC/rmd/Files_From_Jen/2c_FormattingFiles_v1_20210617/2c_subtab_HOBOreformat_v1_20210617.png -------------------------------------------------------------------------------- /inst/shiny-examples/ContDataQC/rmd/Files_From_Jen/2c_FormattingFiles_v1_20210617/Config_Template.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leppott/ContDataQC/d057a7af19137d46030b4937941f06866ce4cdc9/inst/shiny-examples/ContDataQC/rmd/Files_From_Jen/2c_FormattingFiles_v1_20210617/Config_Template.zip -------------------------------------------------------------------------------- /inst/shiny-examples/ContDataQC/rmd/Files_From_Jen/3a_Default/3a_defaultQCThresholds_v1_20210611.docx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leppott/ContDataQC/d057a7af19137d46030b4937941f06866ce4cdc9/inst/shiny-examples/ContDataQC/rmd/Files_From_Jen/3a_Default/3a_defaultQCThresholds_v1_20210611.docx -------------------------------------------------------------------------------- /inst/shiny-examples/ContDataQC/rmd/Files_From_Jen/3a_Default/3a_defaultQCthresholds_Table_v1_20210617.xlsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leppott/ContDataQC/d057a7af19137d46030b4937941f06866ce4cdc9/inst/shiny-examples/ContDataQC/rmd/Files_From_Jen/3a_Default/3a_defaultQCthresholds_Table_v1_20210617.xlsx -------------------------------------------------------------------------------- /inst/shiny-examples/ContDataQC/rmd/Files_From_Jen/3a_Default/Config_Template.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leppott/ContDataQC/d057a7af19137d46030b4937941f06866ce4cdc9/inst/shiny-examples/ContDataQC/rmd/Files_From_Jen/3a_Default/Config_Template.zip -------------------------------------------------------------------------------- /inst/shiny-examples/ContDataQC/rmd/Files_From_Jen/3b_Customize/3b_CustomizeQCthresholds_v1_20210617.docx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leppott/ContDataQC/d057a7af19137d46030b4937941f06866ce4cdc9/inst/shiny-examples/ContDataQC/rmd/Files_From_Jen/3b_Customize/3b_CustomizeQCthresholds_v1_20210617.docx -------------------------------------------------------------------------------- /inst/shiny-examples/ContDataQC/rmd/Files_From_Jen/3b_Customize/Config_Template.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leppott/ContDataQC/d057a7af19137d46030b4937941f06866ce4cdc9/inst/shiny-examples/ContDataQC/rmd/Files_From_Jen/3b_Customize/Config_Template.zip -------------------------------------------------------------------------------- /inst/shiny-examples/ContDataQC/rmd/Files_From_Jen/4_MainFunctions/4a_RunFunctions/4a_MainFunctions_v1_20210617.docx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leppott/ContDataQC/d057a7af19137d46030b4937941f06866ce4cdc9/inst/shiny-examples/ContDataQC/rmd/Files_From_Jen/4_MainFunctions/4a_RunFunctions/4a_MainFunctions_v1_20210617.docx -------------------------------------------------------------------------------- /inst/shiny-examples/ContDataQC/rmd/Files_From_Jen/4_MainFunctions/4a_RunFunctions/Example_AggregateReport_v1_20210617.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leppott/ContDataQC/d057a7af19137d46030b4937941f06866ce4cdc9/inst/shiny-examples/ContDataQC/rmd/Files_From_Jen/4_MainFunctions/4a_RunFunctions/Example_AggregateReport_v1_20210617.zip -------------------------------------------------------------------------------- /inst/shiny-examples/ContDataQC/rmd/Files_From_Jen/4_MainFunctions/4a_RunFunctions/Example_QCreports_v1_20210617.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leppott/ContDataQC/d057a7af19137d46030b4937941f06866ce4cdc9/inst/shiny-examples/ContDataQC/rmd/Files_From_Jen/4_MainFunctions/4a_RunFunctions/Example_QCreports_v1_20210617.zip -------------------------------------------------------------------------------- /inst/shiny-examples/ContDataQC/rmd/Files_From_Jen/4_MainFunctions/4a_RunFunctions/Example_SumStats_v1_20210617.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leppott/ContDataQC/d057a7af19137d46030b4937941f06866ce4cdc9/inst/shiny-examples/ContDataQC/rmd/Files_From_Jen/4_MainFunctions/4a_RunFunctions/Example_SumStats_v1_20210617.zip -------------------------------------------------------------------------------- /inst/shiny-examples/ContDataQC/rmd/Files_From_Jen/4_MainFunctions/4a_RunFunctions/Rpackage_v1_20210617.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leppott/ContDataQC/d057a7af19137d46030b4937941f06866ce4cdc9/inst/shiny-examples/ContDataQC/rmd/Files_From_Jen/4_MainFunctions/4a_RunFunctions/Rpackage_v1_20210617.png -------------------------------------------------------------------------------- /inst/shiny-examples/ContDataQC/rmd/Files_From_Jen/4_MainFunctions/4b_CheckInputFile/4b Check input file_v1_20210617.docx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leppott/ContDataQC/d057a7af19137d46030b4937941f06866ce4cdc9/inst/shiny-examples/ContDataQC/rmd/Files_From_Jen/4_MainFunctions/4b_CheckInputFile/4b Check input file_v1_20210617.docx -------------------------------------------------------------------------------- /inst/shiny-examples/ContDataQC/rmd/Files_From_Jen/7_TestData/TestData_table_v1_20210618.xlsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leppott/ContDataQC/d057a7af19137d46030b4937941f06866ce4cdc9/inst/shiny-examples/ContDataQC/rmd/Files_From_Jen/7_TestData/TestData_table_v1_20210618.xlsx -------------------------------------------------------------------------------- /inst/shiny-examples/ContDataQC/rmd/Files_From_Jen/7_TestData/TestData_v1_20210618.docx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leppott/ContDataQC/d057a7af19137d46030b4937941f06866ce4cdc9/inst/shiny-examples/ContDataQC/rmd/Files_From_Jen/7_TestData/TestData_v1_20210618.docx -------------------------------------------------------------------------------- /inst/shiny-examples/ContDataQC/rmd/Files_From_Jen/ContDataQC_6_console_v1_20210617.docx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leppott/ContDataQC/d057a7af19137d46030b4937941f06866ce4cdc9/inst/shiny-examples/ContDataQC/rmd/Files_From_Jen/ContDataQC_6_console_v1_20210617.docx -------------------------------------------------------------------------------- /inst/shiny-examples/ContDataQC/rmd/Files_From_Jen/ContDataQC_8_FAQ_v1_20210618.docx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leppott/ContDataQC/d057a7af19137d46030b4937941f06866ce4cdc9/inst/shiny-examples/ContDataQC/rmd/Files_From_Jen/ContDataQC_8_FAQ_v1_20210618.docx -------------------------------------------------------------------------------- /inst/shiny-examples/ContDataQC/rmd/Files_From_Jen/ContDataQC_9_status_v1_20210618.docx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leppott/ContDataQC/d057a7af19137d46030b4937941f06866ce4cdc9/inst/shiny-examples/ContDataQC/rmd/Files_From_Jen/ContDataQC_9_status_v1_20210618.docx -------------------------------------------------------------------------------- /inst/shiny-examples/ContDataQC/rmd/RMD_Images/1.1_Fig1_About_20230828.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leppott/ContDataQC/d057a7af19137d46030b4937941f06866ce4cdc9/inst/shiny-examples/ContDataQC/rmd/RMD_Images/1.1_Fig1_About_20230828.jpg -------------------------------------------------------------------------------- /inst/shiny-examples/ContDataQC/rmd/RMD_Images/1.6_Fig1_Advanced_20230828.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leppott/ContDataQC/d057a7af19137d46030b4937941f06866ce4cdc9/inst/shiny-examples/ContDataQC/rmd/RMD_Images/1.6_Fig1_Advanced_20230828.jpg -------------------------------------------------------------------------------- /inst/shiny-examples/ContDataQC/rmd/RMD_Images/2.3_Discrete_Fig1_20230828.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leppott/ContDataQC/d057a7af19137d46030b4937941f06866ce4cdc9/inst/shiny-examples/ContDataQC/rmd/RMD_Images/2.3_Discrete_Fig1_20230828.jpg -------------------------------------------------------------------------------- /inst/shiny-examples/ContDataQC/rmd/RMD_Images/Fig_NamingFiles_v1_20210617.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leppott/ContDataQC/d057a7af19137d46030b4937941f06866ce4cdc9/inst/shiny-examples/ContDataQC/rmd/RMD_Images/Fig_NamingFiles_v1_20210617.png -------------------------------------------------------------------------------- /inst/shiny-examples/ContDataQC/rmd/RMD_Images/Fig_Organizing_v1_20210616.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leppott/ContDataQC/d057a7af19137d46030b4937941f06866ce4cdc9/inst/shiny-examples/ContDataQC/rmd/RMD_Images/Fig_Organizing_v1_20210616.png -------------------------------------------------------------------------------- /inst/shiny-examples/ContDataQC/rmd/RMD_Images/HOBOreformat_AFTER.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leppott/ContDataQC/d057a7af19137d46030b4937941f06866ce4cdc9/inst/shiny-examples/ContDataQC/rmd/RMD_Images/HOBOreformat_AFTER.jpg -------------------------------------------------------------------------------- /inst/shiny-examples/ContDataQC/rmd/RMD_Images/HOBOreformat_BEFORE.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leppott/ContDataQC/d057a7af19137d46030b4937941f06866ce4cdc9/inst/shiny-examples/ContDataQC/rmd/RMD_Images/HOBOreformat_BEFORE.jpg -------------------------------------------------------------------------------- /inst/shiny-examples/ContDataQC/rmd/RMD_Images/miniDOT_1raw.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leppott/ContDataQC/d057a7af19137d46030b4937941f06866ce4cdc9/inst/shiny-examples/ContDataQC/rmd/RMD_Images/miniDOT_1raw.png -------------------------------------------------------------------------------- /inst/shiny-examples/ContDataQC/rmd/RMD_Images/miniDOT_2cat.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leppott/ContDataQC/d057a7af19137d46030b4937941f06866ce4cdc9/inst/shiny-examples/ContDataQC/rmd/RMD_Images/miniDOT_2cat.png -------------------------------------------------------------------------------- /inst/shiny-examples/ContDataQC/rmd/RMD_Images/miniDOT_3reformat.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leppott/ContDataQC/d057a7af19137d46030b4937941f06866ce4cdc9/inst/shiny-examples/ContDataQC/rmd/RMD_Images/miniDOT_3reformat.png -------------------------------------------------------------------------------- /inst/shiny-examples/ContDataQC/rmd/RMD_Images/miniDOT_AFTER_Concatenate.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leppott/ContDataQC/d057a7af19137d46030b4937941f06866ce4cdc9/inst/shiny-examples/ContDataQC/rmd/RMD_Images/miniDOT_AFTER_Concatenate.jpg -------------------------------------------------------------------------------- /inst/shiny-examples/ContDataQC/rmd/RMD_Images/miniDOT_After_Reformat.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leppott/ContDataQC/d057a7af19137d46030b4937941f06866ce4cdc9/inst/shiny-examples/ContDataQC/rmd/RMD_Images/miniDOT_After_Reformat.jpg -------------------------------------------------------------------------------- /inst/shiny-examples/ContDataQC/rmd/RMD_Images/miniDOT_Before_Reformat.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leppott/ContDataQC/d057a7af19137d46030b4937941f06866ce4cdc9/inst/shiny-examples/ContDataQC/rmd/RMD_Images/miniDOT_Before_Reformat.jpg -------------------------------------------------------------------------------- /inst/shiny-examples/ContDataQC/rmd/tables/App_Information_Tables.xlsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leppott/ContDataQC/d057a7af19137d46030b4937941f06866ce4cdc9/inst/shiny-examples/ContDataQC/rmd/tables/App_Information_Tables.xlsx -------------------------------------------------------------------------------- /inst/shiny-examples/ContDataQC/rmd/tables/FileNaming_Lakes_20240131.xlsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leppott/ContDataQC/d057a7af19137d46030b4937941f06866ce4cdc9/inst/shiny-examples/ContDataQC/rmd/tables/FileNaming_Lakes_20240131.xlsx -------------------------------------------------------------------------------- /inst/shiny-examples/ContDataQC/rmd/tables/FileNaming_Streams_20240131.xlsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leppott/ContDataQC/d057a7af19137d46030b4937941f06866ce4cdc9/inst/shiny-examples/ContDataQC/rmd/tables/FileNaming_Streams_20240131.xlsx -------------------------------------------------------------------------------- /inst/shiny-examples/ContDataQC/rmd/tables/HOBOreformat_AFTER_20240226.xlsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leppott/ContDataQC/d057a7af19137d46030b4937941f06866ce4cdc9/inst/shiny-examples/ContDataQC/rmd/tables/HOBOreformat_AFTER_20240226.xlsx -------------------------------------------------------------------------------- /inst/shiny-examples/ContDataQC/rmd/tables/HOBOreformat_BEFORE_20240226.xlsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leppott/ContDataQC/d057a7af19137d46030b4937941f06866ce4cdc9/inst/shiny-examples/ContDataQC/rmd/tables/HOBOreformat_BEFORE_20240226.xlsx -------------------------------------------------------------------------------- /inst/shiny-examples/ContDataQC/rmd/tables/miniDOT_After_Concatenate_20240226.xlsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leppott/ContDataQC/d057a7af19137d46030b4937941f06866ce4cdc9/inst/shiny-examples/ContDataQC/rmd/tables/miniDOT_After_Concatenate_20240226.xlsx -------------------------------------------------------------------------------- /inst/shiny-examples/ContDataQC/rmd/tables/miniDOTreformat_ AFTER_20240226.xlsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leppott/ContDataQC/d057a7af19137d46030b4937941f06866ce4cdc9/inst/shiny-examples/ContDataQC/rmd/tables/miniDOTreformat_ AFTER_20240226.xlsx -------------------------------------------------------------------------------- /inst/shiny-examples/ContDataQC/rmd/tables/miniDOTreformat_ BEFORE_20240226.xlsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leppott/ContDataQC/d057a7af19137d46030b4937941f06866ce4cdc9/inst/shiny-examples/ContDataQC/rmd/tables/miniDOTreformat_ BEFORE_20240226.xlsx -------------------------------------------------------------------------------- /inst/shiny-examples/ContDataQC/www/Config_Lakes_meters.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leppott/ContDataQC/d057a7af19137d46030b4937941f06866ce4cdc9/inst/shiny-examples/ContDataQC/www/Config_Lakes_meters.zip -------------------------------------------------------------------------------- /inst/shiny-examples/ContDataQC/www/Config_Template.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leppott/ContDataQC/d057a7af19137d46030b4937941f06866ce4cdc9/inst/shiny-examples/ContDataQC/www/Config_Template.zip -------------------------------------------------------------------------------- /inst/shiny-examples/ContDataQC/www/Config_default.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leppott/ContDataQC/d057a7af19137d46030b4937941f06866ce4cdc9/inst/shiny-examples/ContDataQC/www/Config_default.zip -------------------------------------------------------------------------------- /inst/shiny-examples/ContDataQC/www/Continuous_data_test_files_2017_11_28.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leppott/ContDataQC/d057a7af19137d46030b4937941f06866ce4cdc9/inst/shiny-examples/ContDataQC/www/Continuous_data_test_files_2017_11_28.zip -------------------------------------------------------------------------------- /inst/shiny-examples/ContDataQC/www/Continuous_data_website_slides_2018_04_27.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leppott/ContDataQC/d057a7af19137d46030b4937941f06866ce4cdc9/inst/shiny-examples/ContDataQC/www/Continuous_data_website_slides_2018_04_27.pdf -------------------------------------------------------------------------------- /inst/shiny-examples/ContDataQC/www/DataQualifiers_20220210.xlsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leppott/ContDataQC/d057a7af19137d46030b4937941f06866ce4cdc9/inst/shiny-examples/ContDataQC/www/DataQualifiers_20220210.xlsx -------------------------------------------------------------------------------- /inst/shiny-examples/ContDataQC/www/Daymet_Wx_Gage.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leppott/ContDataQC/d057a7af19137d46030b4937941f06866ce4cdc9/inst/shiny-examples/ContDataQC/www/Daymet_Wx_Gage.zip -------------------------------------------------------------------------------- /inst/shiny-examples/ContDataQC/www/EXAMPLE_AccuracyCheckWkst.xlsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leppott/ContDataQC/d057a7af19137d46030b4937941f06866ce4cdc9/inst/shiny-examples/ContDataQC/www/EXAMPLE_AccuracyCheckWkst.xlsx -------------------------------------------------------------------------------- /inst/shiny-examples/ContDataQC/www/EditingQCtestThresholds_20220117.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leppott/ContDataQC/d057a7af19137d46030b4937941f06866ce4cdc9/inst/shiny-examples/ContDataQC/www/EditingQCtestThresholds_20220117.pdf -------------------------------------------------------------------------------- /inst/shiny-examples/ContDataQC/www/EvaluateThresholds.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leppott/ContDataQC/d057a7af19137d46030b4937941f06866ce4cdc9/inst/shiny-examples/ContDataQC/www/EvaluateThresholds.zip -------------------------------------------------------------------------------- /inst/shiny-examples/ContDataQC/www/Example_Aggregate.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leppott/ContDataQC/d057a7af19137d46030b4937941f06866ce4cdc9/inst/shiny-examples/ContDataQC/www/Example_Aggregate.zip -------------------------------------------------------------------------------- /inst/shiny-examples/ContDataQC/www/Example_QCreports.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leppott/ContDataQC/d057a7af19137d46030b4937941f06866ce4cdc9/inst/shiny-examples/ContDataQC/www/Example_QCreports.zip -------------------------------------------------------------------------------- /inst/shiny-examples/ContDataQC/www/Example_SumStats.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leppott/ContDataQC/d057a7af19137d46030b4937941f06866ce4cdc9/inst/shiny-examples/ContDataQC/www/Example_SumStats.zip -------------------------------------------------------------------------------- /inst/shiny-examples/ContDataQC/www/ExcelPivotTablesPlots_GrossSpikeEval_20220117.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leppott/ContDataQC/d057a7af19137d46030b4937941f06866ce4cdc9/inst/shiny-examples/ContDataQC/www/ExcelPivotTablesPlots_GrossSpikeEval_20220117.pdf -------------------------------------------------------------------------------- /inst/shiny-examples/ContDataQC/www/Fig_HOBOreformat_v1_20210617.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leppott/ContDataQC/d057a7af19137d46030b4937941f06866ce4cdc9/inst/shiny-examples/ContDataQC/www/Fig_HOBOreformat_v1_20210617.png -------------------------------------------------------------------------------- /inst/shiny-examples/ContDataQC/www/Fig_NamingFiles_v1_20210617.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leppott/ContDataQC/d057a7af19137d46030b4937941f06866ce4cdc9/inst/shiny-examples/ContDataQC/www/Fig_NamingFiles_v1_20210617.png -------------------------------------------------------------------------------- /inst/shiny-examples/ContDataQC/www/Fig_Organizing_v1_20210616.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leppott/ContDataQC/d057a7af19137d46030b4937941f06866ce4cdc9/inst/shiny-examples/ContDataQC/www/Fig_Organizing_v1_20210616.png -------------------------------------------------------------------------------- /inst/shiny-examples/ContDataQC/www/Fig_Rpackage_v1_20210617.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leppott/ContDataQC/d057a7af19137d46030b4937941f06866ce4cdc9/inst/shiny-examples/ContDataQC/www/Fig_Rpackage_v1_20210617.png -------------------------------------------------------------------------------- /inst/shiny-examples/ContDataQC/www/FolderSetUp_20220825.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leppott/ContDataQC/d057a7af19137d46030b4937941f06866ce4cdc9/inst/shiny-examples/ContDataQC/www/FolderSetUp_20220825.zip -------------------------------------------------------------------------------- /inst/shiny-examples/ContDataQC/www/GoogleChrome_TimesaverTips.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leppott/ContDataQC/d057a7af19137d46030b4937941f06866ce4cdc9/inst/shiny-examples/ContDataQC/www/GoogleChrome_TimesaverTips.pdf -------------------------------------------------------------------------------- /inst/shiny-examples/ContDataQC/www/HOBO_ConfigLaunch_20170803.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leppott/ContDataQC/d057a7af19137d46030b4937941f06866ce4cdc9/inst/shiny-examples/ContDataQC/www/HOBO_ConfigLaunch_20170803.pdf -------------------------------------------------------------------------------- /inst/shiny-examples/ContDataQC/www/HOBO_DataDownload_20170823.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leppott/ContDataQC/d057a7af19137d46030b4937941f06866ce4cdc9/inst/shiny-examples/ContDataQC/www/HOBO_DataDownload_20170823.pdf -------------------------------------------------------------------------------- /inst/shiny-examples/ContDataQC/www/HOBOware_DO_20220824.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leppott/ContDataQC/d057a7af19137d46030b4937941f06866ce4cdc9/inst/shiny-examples/ContDataQC/www/HOBOware_DO_20220824.pdf -------------------------------------------------------------------------------- /inst/shiny-examples/ContDataQC/www/HOBOware_DefaultSettings_20220824.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leppott/ContDataQC/d057a7af19137d46030b4937941f06866ce4cdc9/inst/shiny-examples/ContDataQC/www/HOBOware_DefaultSettings_20220824.pdf -------------------------------------------------------------------------------- /inst/shiny-examples/ContDataQC/www/HOBOware_Temperature_20220825.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leppott/ContDataQC/d057a7af19137d46030b4937941f06866ce4cdc9/inst/shiny-examples/ContDataQC/www/HOBOware_Temperature_20220825.pdf -------------------------------------------------------------------------------- /inst/shiny-examples/ContDataQC/www/HOBOware_WaterLevel_U20_20220824.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leppott/ContDataQC/d057a7af19137d46030b4937941f06866ce4cdc9/inst/shiny-examples/ContDataQC/www/HOBOware_WaterLevel_U20_20220824.pdf -------------------------------------------------------------------------------- /inst/shiny-examples/ContDataQC/www/PlotQC_WatchList_20220824.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leppott/ContDataQC/d057a7af19137d46030b4937941f06866ce4cdc9/inst/shiny-examples/ContDataQC/www/PlotQC_WatchList_20220824.pdf -------------------------------------------------------------------------------- /inst/shiny-examples/ContDataQC/www/RMD_HTML/App_1b_TestData.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 |
Below are test files that you can download and run through the Shiny 7 | app. They are from Onset HOBO U20 water level loggers (non-vented 8 | pressure transducers) and miniDOT DO sensors. Please contact us if you 9 | have example files from other sensors that you would like us to add to 10 | this website.
11 |The Onset HOBO U20 test data consist of two comma-separated values 20 | (CSV) files. The files are from the same site but cover two different 21 | time periods. You’ll see two folders:
22 |Test
24 |Completed
38 |The miniDOT DO test files are from one site and one deployment 48 | period. You’ll see two sets of folders. Within each folder are example 49 | input and output files.
50 |miniDOT_concatenate - When data are initially 52 | downloaded from miniDOT sensors, there are separate .txt files for each 53 | day (in this example, 325 individual files). Go to the Automated 54 | Reformat – miniDOT tab and run the Concatenate 55 | function to combine them all into one file.
miniDOT_reformat – run the combined file through 57 | the Reformat function. The function reformats the file so that it is 58 | ready to run through the QC report function. Next, go to the Main 59 | Functions-Import Files tab, import the reformatted 60 | file, run it through the ‘QC raw data’ function, and check the flagged 61 | data (edit if needed).
Users with intermediate to advanced-level computer skills can 7 | customize the settings (e.g., add new parameters, change units, change 8 | file naming and formatting requirements, change the format of one of the 9 | QC reports from Word to html or PDF) by editing a plain text configuration file [ZIP]. You can do this 10 | in R or Notepad.
11 |Some users may prefer to use the ContDataQC 12 | R 13 | code 14 | 15 | Exit EPA Website instead of the Shiny app. While 16 | using the R code allows for some additional layers of customization 17 | beyond this, when it comes to file naming schemes and setting 18 | directories, users have more flexibility using the Shiny app because 19 | they can browse to the desired input file(s).
20 |These functions convert files coming directly from sensors or 7 | proprietary sensor software like HOBOware into a format that is ready to 8 | run through the QC report function (Main Functions - QC raw 9 | data). This saves you time and eliminates errors that sometimes 10 | occur when manually reformatting files.
11 |Currently, reformatting functions are available for two types of 12 | sensors:
13 |Onset HOBO (water level (U20), temperature (pro V2 and Pendant), 15 | and DO (U26); more can be added as needed)
miniDOT DO
Reformatting functions for other types of sensors can be added in the 19 | future, if requested.
20 |You have more flexibility with naming files when using the Shiny app 7 | vs R package because you can browse to the desired input file(s), 8 | whereas the R package searches through files in a specified directory 9 | and selects data files based on the file name. Even if you are using the 10 | Shiny app, consider using the file naming scheme below since you may 11 | decide to use the R package at some point in the future. Another reason 12 | to use the recommended file naming scheme is because it keeps files well 13 | organized and sorts them in chronological order. This is particularly 14 | helpful if you are using HOBO U20 water level loggers, as it makes 15 | matching air and water sensor files easier during the processing step 16 | and helps you identify gaps in the data.
17 |If you are using the R package, there are four components to the file 18 | name for single sensor deployments, which are separated by underscores 19 | (“_”).
20 |SiteID_DataType_StartDate_EndDate
21 |Example: Hunting_Water_20130426_20130725
22 |Site ID (no spaces or underscores) = Hunting
Data Type options: Air, Water, AW (air and water sensor data are 25 | combined into the same file), Gage, DO
Date, Start (YYYYMMDD) = 20130426
Date, End (YYYYMMDD) = 20130725
For multi-sensor deployments (e.g., temperature sensors deployed at 30 | multiple depths at a lake), add depth and units or some other 31 | differentiating characteristic, such as sensor type, to the SiteID, 32 | separated by double-dashes as shown below:
33 |Example: RussWood–02M_Water_20130426_20130725
34 |Depth can include decimals (for example, 0.1M is ok) and does not 35 | need to include leading zeros (either 01M or 1M are acceptable). Units 36 | can be upper or lower case (M or m), and abbreviated (M) or spelled out 37 | (meters).
38 |You can change the double-dash separator if desired by customizing 39 | the configuration file [ZIP] (for 40 | example, you could change it to a tilde ~).
41 |If you are using the Shiny app instead of R package, you are not 42 | restricted to using the Data Types shown above (Air, Water, AW, etc.). 43 | If you have more than one type of sensor deployed at the same depth 44 | (e.g., both a DO and temperature sensor at 2M), consider using sensor 45 | type in the second part of the file name (for example, 46 | RussWood–02M_TEMP_20130426_20130725 or 47 | RussWood–02M_DO_20130426_20130725).
48 |Select QC flag test thresholds. Use the default 8 | thresholds (‘Main - QC Thresholds - Default’ tab) or upload a customized 9 | configuration file (‘Main - QC Thresholds - Upload Custom Thresholds’ 10 | tab). If you have one or more years of continuous data for a site, we 11 | encourage you to evaluate the performance of the QC test thresholds for 12 | each parameter at that site and customize the configuration file if 13 | needed. Click ‘Main - QC Thresholds - Evaluate Thresholds’ tab for tips 14 | on evaluating thresholds. To learn how to edit thresholds, click ‘Main - 15 | QC Thresholds - Edit Thresholds’ tab.
Check the configuration file name. Under Run 17 | Functions (gray box, step 2), it will show the configuration file name 18 | that will be used for the QC tests. Check to make sure the correct file 19 | is being used. If you don’t upload a custom file, it will read 20 | ‘default’.
Upload the desired input file(s).
Run the ‘QC raw data’ function to generate QC 23 | reports.
After the data file(s) are QC’d, users can run them 25 | through the Aggregate function to merge them with other files. 26 | The input files need to be from the same site and share common 27 | parameters.
The user can run the aggregated file through the Summary 29 | Statistics function to generate CSV files with an assortment of 30 | summary statistics (e.g., min, median, max, quartiles) and a PDF with 31 | time series plots for each parameter.
After running each function, users must unzip/extract the files or 34 | else the files won’t be seen as an option to upload for the next step. 35 | After files are unzipped, new folders will automatically appear and the 36 | original zipped files can be deleted if desired.
37 |Time-saver tip: some internet browsers, like Google Chrome and 38 | Mozilla Firefox, allow users to change settings so that users can select 39 | which folder to download files to (versus files going to the default 40 | Download folder). * Mozilla Firefox: go to Settings > General > 41 | Files and Applications > Check box for “always ask where to save 42 | files.” * Google Chrome file 43 | saving tip [PDF]
44 |Some users may prefer to use the R code instead of the Shiny app. For 45 | more information, see the ‘About - Advanced’ tab
46 |Example QC 7 | reports [ZIP]
8 |Shiny app instructions
9 |Click the ‘Browse’ button and select the input file(s) from the 11 | Data1_RAW folder. You can run multiple files at once. The status bar 12 | will tell you when the upload is complete.
Select ‘QC Raw Data’ from the ‘Choose Operation to perform’ 14 | drop-down menu
A ‘Run operation’ button will appear. Click this button. A status 16 | bar will appear in the lower right corner.
After the function is done running, a ‘Download’ button will 18 | appear. Click this button.
You will be prompted to save a zipped file named 20 | ‘QCRaw.date_time.’ Save it in the Data2_QC folder.
Unzip/extract the file(s). After file is unzipped, a new folder 22 | called ‘data’ will appear, which contains QC reports that have ‘QC_’ as 23 | the prefix in the file name. The original zipped file can be deleted if 24 | desired.
Open the QC reports. There are two types of outputs: a Word 26 | document Data Quality Control Report and a comma-delimited (.csv) 27 | spreadsheet. If users prefer a Hypertext Markup Language (HTML) report 28 | instead of Word, they can change the format in the configuration file 29 | (this requires some familiarity with R code). The reports include 30 | results from the ‘flag’ tests (gross, spike, rate of change and flat 31 | line), missing data checks and time series plots.
Review each set of files, check flagged data points, do visual 33 | checks on the time series plots, and decide if and how to make 34 | corrections. For tips on the QC process, see the ‘About - QC tips’ 35 | subtab.
The Data Quality Control Report is organized into four main sections, 38 | starting with an overall summary followed by summaries for each 39 | parameter:
40 |Data file information (siteID, date range, parameters, recording 42 | interval, QC test thresholds reference table).
‘Count’ tables (# measurements/day) so that you can find 44 | inconsistencies (too few measurements (=missing data) or too many 45 | measurements).
Results from the four ‘flag’ tests (gross, spike, rate of change 47 | and flat line) - # of entries marked as pass (P), suspect (S), fail (F), 48 | missing data (X) or not available (NA).
Time series plots for each individual parameter and two sets of 50 | combined parameters (water and air temperature; water temperature and 51 | water level). If the input file includes discrete/in situ values , which 52 | are taken during site visits for accuracy checks, the discrete values 53 | are plotted with the sensor data.
The CSV file contains the time series data from the sensor plus 56 | additional data columns with flags for each test and parameter (e.g., 57 | Flag.Spike.Water.Temp.C, Flag.Flat.Water.Temp.C), comment fields for 58 | each parameter (e.g., Comment.MOD.Water.Temp.C) so that the user can 59 | document rationale for any changes and a duplicate set of the original 60 | ‘raw’ data values (e.g., RAW.Water.Temp.C). The ‘raw’ values are 61 | included so that the user can maintain documentation of changes that are 62 | made and go back at a later time if desired to change how they handled a 63 | correction.
64 |Currently there are no automated corrections programmed into the QC 65 | function. The user must make the changes manually. For tips on the QC 66 | process, see the ‘About - Tips’ subtab.
67 |Example Aggregate 7 | output [ZIP]
8 |Shiny app instructions
9 |Click the ‘Browse’ button and select the QC’d input files that 11 | you’d like to combine. The input files need to be from the same site and 12 | share common parameters. The status bar will tell you when the upload is 13 | complete.
Select ‘Aggregate QC’d data’ from the ‘Choose Operation to 15 | perform’ drop-down menu.
A ‘Run operation’ button will appear. Click this button. A status 17 | bar will appear in the lower right corner.
After the function is done running, a ‘Download’ button will 19 | appear. Click this button. You will be prompted to save a zipped file 20 | named ‘Aggregate.date_time.’ Save it in the Data3_Aggregated 21 | folder.
Unzip/extract the file(s). After file is unzipped, a new folder 23 | called ‘data’ will appear. If a ‘data’ folder already exists, outputs 24 | will go into that folder. The aggregate reports have ‘DATA_’ as the 25 | prefix in the file name. The original zipped file can be deleted if 26 | desired.
Open and review the aggregated reports. As with the QC output, 28 | there are two types of outputs: a Word document Data Quality Control 29 | Report and a comma-delimited (.csv) spreadsheet. If users prefer a 30 | Hypertext Markup Language (HTML) report instead of Word, they can change 31 | the format in the configuration file (this requires some familiarity 32 | with R code).
Example Summary Stats 7 | output [ZIP]
8 |Shiny app instructions
9 |Click the ‘Browse’ button and select the desired input file from 11 | the Data3_Aggregated folder. The status bar will tell you when the 12 | upload is complete.
Select ‘Summary statistics’ from the ‘Choose Operation to 14 | perform’ drop-down menu.
A ‘Run operation’ button will appear. Click this button. A status 16 | bar will appear in the lower right corner.
After the function is done running, a ‘Download’ button will 18 | appear. Click this button. You will be prompted to save a zipped file 19 | named ‘SummaryStats.date_time.’ Save it in the Data4_Stats 20 | folder.
Unzip/extract the file(s). After file is unzipped, a new folder 22 | called ‘data’ will appear. If a ‘data’ folder already exists, outputs 23 | will go into that folder. The summary stats reports have ‘STATS_’ as the 24 | prefix in the file name. The original zipped file can be deleted if 25 | desired.
Open and review the summary statistics reports. There should be 27 | two sets of CSV files and a PDF with time series plots for each 28 | parameter. One of the CSVs has daily means and the other has a wider 29 | range of summary statistics (e.g., min, median, max, 30 | quartiles).
After uploading the input file(s), check the summary table to see 7 | what parameters are in the uploaded files. Ensure that all the desired 8 | parameters are present before running the QC function.
9 |Note: sometimes people have a mix of correct and incorrect column 10 | headings in the input file. When this happens, R does not give you an 11 | error message. It only carries forward the parameters that have the 12 | correct column headings and leaves the others blank. That is why 13 | checking this summary table is important.
14 |If you have one or more years of continuous data for a site, we 7 | strongly encourage you to evaluate the performance of the QC test 8 | thresholds for each parameter at that site and customize the 9 | configuration file if needed.
10 |Click here for instructions on 11 | how to generate pivot tables and plots to evaluate thresholds for the 12 | Unrealistic values (‘Gross range’) and Spike tests.
13 |Another option is to use R code written by Tim Martin (Minnesota DNR) 14 | to generate statistical outputs that can help inform thresholds for all 15 | four QC tests. Click here to 16 | download the R scripts and instructions.
17 |To aid with documentation of the threshold evaluation process, click 18 | here to download an 19 | Excel worksheet that lists the default thresholds for each parameter and 20 | has a column where you can enter the customized values for a given site 21 | as well as rationale for making the changes. When doing this, make sure 22 | you consider what units you are using (as well as what the defaults 23 | are), since units have a large effect on thresholds.
24 |Click the ‘Browse’ button (to the left) and select the desired 7 | customized configuration file. The status bar will tell you when the 8 | file has been uploaded. A new button will appear that gives you the 9 | option of returning to the default configuration file. Do not click this 10 | unless you change your mind and no longer want to use the customized 11 | file.
12 |Go to the ‘Run Functions’ tab; verify that the correct configuration 13 | file has been uploaded (by checking the file name); select the desired 14 | input file(s); run them through the QC function. Save the output to the 15 | desired location. Open the Word QC report and scroll to the ‘Thresholds, 16 | Quick Reference’ table (in the middle section of the report). Verify 17 | that the correct thresholds were used.
18 |Be aware that each time you close and reopen the Shiny app, it will 19 | automatically revert back to the default configuration file. Also – 20 | remember the sequencing! If you forget to upload the customized 21 | configuration file prior to running the QC function, it will use the 22 | default thresholds.
23 |If you have one or more years of continuous data for a site, we 7 | encourage you to evaluate the performance of the QC test thresholds for 8 | each parameter at that site and customize the configuration file if 9 | needed. Make sure you consider what units you are using, since units 10 | have a large effect on thresholds.
11 |Resources for evaluating thresholds:
12 |Pivot tables and charts 14 | [ZIP] for evaluating the Unrealistic values (‘Gross range’) and Spike 15 | tests in Excel.
R code statistics 17 | [ZIP] that can help inform thresholds for all four QC tests.
Threshold 19 | evaluation worksheet [XLSX] that lists the default thresholds for 20 | each parameter and has columns where you enter customized thresholds for 21 | one or multiple sites.
Click the ‘Browse’ button (to the left) and select the desired 7 | customized configuration file. The status bar will tell you when the 8 | file has been uploaded. A new button will appear that gives you the 9 | option of returning to the default configuration file. Do not click this 10 | unless you change your mind and n o longer want to use the customized 11 | file.
12 |Go to the ‘Main Functions’ tab; verify that the correct configuration 13 | file has been uploaded (by checking the file name); select the desired 14 | input file(s); run them through the QC function. Save the output to the 15 | desired location. Open the Word or html QC report and scroll to the 16 | ‘Thresholds, Quick Reference’ table (in the middle section of the 17 | report). Verify that the correct thresholds were used.
18 |Be aware that each time you close and reopen the Shiny app, it will 19 | automatically revert back to the default configuration file. Also – 20 | remember the sequencing! If you forget to upload the customized 21 | configuration file prior to running the QC function, it will use the 22 | default thresholds.
23 |Want to try this yourself? Click here to download a test 24 | file.
25 |This function merges daily Dissolved Oxygen data files downloaded 7 | from PME miniDot DO loggers into a single multi-column CSV file. Use if 8 | the data were not compiled using the PME java app on the logger. The 9 | output should be downloaded into the Data0_Original folder.
10 |You can find USGS gage locations and IDs using the 7 | NWIS 8 | Mapper 9 | 10 | Exit EPA Website .
11 |To download data:
12 |Enter as many USGS station IDs as desired, separated by commas 14 | and spaces (e.g., 01187300, 01493000, 01639500).
Enter a starting and ending date for which data will be 16 | retrieved; the same date range will be used for every station.
Click the ‘Retrieve USGS data’ button. A progress bar will appear 18 | in the bottom-right of the tab. It will advance as each file is 19 | completed. Thus, if you select three stations, it will wait at 0%, jump 20 | to 33%, jump to 66%, and then jump to 100%.
After data retrieval completes, a download button will appear. 22 | Click the button to download a zip file of the records.
If you have one or more years of continuous data for a site, we 7 | strongly encourage you to evaluate the performance of the QC test 8 | thresholds for each parameter at that site and customize the 9 | configuration file if needed.
10 |Click here for instructions on 11 | how to generate pivot tables and plots to evaluate thresholds for the 12 | Unrealistic values (‘Gross range’) and Spike tests.
13 |Another option is to use R code written by Tim Martin (Minnesota DNR) 14 | to generate statistical outputs that can help inform thresholds for all 15 | four QC tests. Click here to 16 | download the R scripts and instructions.
17 |To aid with documentation of the threshold evaluation process, click 18 | here to download an 19 | Excel worksheet that lists the default thresholds for each parameter and 20 | has a column where you can enter the customized values for a given site 21 | as well as rationale for making the changes. When doing this, make sure 22 | you consider what units you are using (as well as what the defaults 23 | are), since units have a large effect on thresholds.
24 |Click here for 7 | instructions on how to edit thresholds and create customized 8 | configuration files. There are two options (see below). For either 9 | option, save the customized configuration file in a folder that is easy 10 | to find so that you can reuse the file each time you QC data for that 11 | site. It is helpful to include the StationID and other relevant 12 | information in the file name (for example, if thresholds are customized 13 | for a particular season).
14 |After you save the file, go to the ‘upload custom thresholds’ tab, 15 | browse to the custom thresholds file, upload the file and then, under 16 | ‘Main functions’, generate the QC reports. If you forget the upload 17 | step, the default QC thresholds will be used.
18 |Configuration files can be downloaded here -
22 |Default, with hydrologic 24 | parameters in feet
Hydrologic parameters in 26 | meters Navigate to the ‘QC tests and calculations’ section. Edit 27 | thresholds as desired. Save the file.
When you download the configuration file(s), you will see two types 30 | of files: an R file (.R) and a text (.txt) file for users who do not 31 | have R installed on their computer. You can download R from this 32 | website: 33 | https://cran.r-project.org. 34 | You may also want to download 35 | RStudio, 36 | which is a separate program but is a useful code editor and interface 37 | (IDE) for R. If you cannot install R on your computer, we recommend use 38 | Notepad or 39 | Notepad++ 40 | (some people prefer Notepad++ because it has color-coding).
41 |Select a parameter using the drop-down menu
Edit thresholds using boxes below
Save changes (for each parameter)
Download custom thresholds file
If you do not want to use the default units, you will need to use 51 | Option 2.
52 |Acknowledgment: Tim Martin (MN DNR) wrote the R code that we used for 53 | the interactive functions below.
54 |Click the ‘Browse’ button (to the left) and select the desired 7 | customized configuration file. The status bar will tell you when the 8 | file has been uploaded. A new button will appear that gives you the 9 | option of returning to the default configuration file. Do not click this 10 | unless you change your mind and n o longer want to use the customized 11 | file.
12 |Go to the ‘Main Functions’ tab; select the desired input file(s); run 13 | them through the QC function. Save the output to the desired location. 14 | Open the Word or html QC report and scroll to the ‘Thresholds, Quick 15 | Reference’ table (in the middle section of the report). Verify that the 16 | correct thresholds were used.
17 |Be aware that each time you close and reopen the Shiny app, it will 18 | automatically revert back to the default configuration file. Also – 19 | remember the sequencing! If you forget to upload the customized 20 | configuration file prior to running the QC function, it will use the 21 | default thresholds.
22 |If there are any issues with the Shiny app please log an issue on 7 | GitHub 8 | or contact the developers (Erik.Leppo@tetratech.com and Jen.Stamp@tetratech.com).
9 |This panel shows messages output by the QC, aggregating, summarizing, 7 | and USGS data retrieval processes.
8 |After uploading the input file(s), check the summary table to see 7 | what parameters are in the uploaded files. Ensure that all the desired 8 | parameters are present before running the QC function.
9 |Note: sometimes people have a mix of correct and incorrect column 10 | headings in the input file. When this happens, R does not give you an 11 | error message. It only carries forward the parameters that have the 12 | correct column headings and leaves the others blank. That is why 13 | checking this summary table is important.
14 |You can download data from USGS gages on this tab.
7 |You can find gage locations and IDs using the 8 | NWIS 9 | Mapper.
10 |Enter as many USGS station IDs as you like separated by commas 12 | and spaces (e.g., 01187300, 01493000, 01639500).
Enter a starting and ending date for which data will be retrieved 14 | for each station; the same date range will be used for every 15 | station.
Click the ‘Retrieve USGS data’ button. A progress bar will appear 17 | in the bottom-right of the tab. It will advance as each file is 18 | completed. Thus, if you select three stations, it will wait at 0%, jump 19 | to 33%, jump to 66%, and then jump to 100%.
After data retrieval completes, a download button will appear. 21 | Click the button to download a zip file of the records.
This panel shows messages output by the QC, aggregating, summarizing, 7 | and USGS data retrieval processes. If there are any errors when the tool 8 | runs, please copy the messages and send them and your input files to 9 | Erik Leppo (Erik.Leppo@tetratech.com).
10 |