-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathapp.R
175 lines (155 loc) · 9.31 KB
/
app.R
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
# BUMP Data Sheet Creator
# version 2.0.1
# Created by Justin Wright, 2022
# Oklahoma Water Resources Board
library(tidyverse)
library(dplyr)
library(shiny)
library(DT)
#-----
# Pull data from GitHub
data <- readRDS(gzcon(url("https://github.com/jtw-owrb/BUMP-Sheets/raw/main/BUMPPOR.rds")))
#-----
#Begin Shiny app
ui <- fluidPage(
selectInput(inputId = "site",
label = "Choose a Site",
choices = unique(data$Site_Name),
selected = NULL,
selectize = FALSE
),
dataTableOutput("table")
)
server <- function(input, output) {
#-----
#Functions for sheet creation
site <- reactive({
as.data.frame(subset(data, Site_Name == input$site))
})
Parameter <- c("Water Temperature (C)",
"Turbidity (NTU)",
"pH",
"Dissolved Oxygen (mg/L)",
"Hardness (mg/L)",
"Total Dissolved Solids (mg/L)",
"Specific Conductance (uS/cm)",
"Chloride (mg/L)",
"Sulfate (mg/L)",
"Total Phosphorus (mg/L)",
"Total Nitrogen (mg/L)",
"Nitrate/Nitrite (mg/L)",
"Chlorophyll a (mg/m3)")
n <- reactive({
n <- c(sum(!is.na(as.vector(site()$Temp_C))),
sum(!is.na(as.vector(site()$Turbidity_NTU))),
sum(!is.na(as.vector(site()$pH))),
sum(!is.na(as.vector(site()$DO_mgL))),
sum(!is.na(as.vector(site()$Hardness_mgL))),
sum(!is.na(as.vector(site()$TDS_mgL))),
sum(!is.na(as.vector(site()$SpC_uScm))),
sum(!is.na(as.vector(site()$Cl_mgL))),
sum(!is.na(as.vector(site()$SO4_mgL))),
sum(!is.na(as.vector(site()$TP_mgL))),
sum(!is.na(as.vector(site()$TN_mgL))),
sum(!is.na(as.vector(site()$NO2NO3_mgL))),
sum(!is.na(as.vector(site()$Chlorophyll_mgm3))))
})
Mean <- reactive({
Mean <- as.vector(c(round(mean(as.vector(site()$Temp_C), na.rm = TRUE), digits = 1),
round(mean(as.vector(site()$Turbidity_NTU), na.rm = TRUE), digits = 0),
round(mean(as.vector(site()$pH), na.rm = TRUE), digits = 2),
round(mean(as.vector(site()$DO_mgL), na.rm = TRUE), digits = 2),
round(mean(as.vector(site()$Hardness_mgL), na.rm = TRUE), digits = 2),
round(mean(as.vector(site()$TDS_mgL), na.rm = TRUE), digits = 0),
round(mean(as.vector(site()$SpC_uScm), na.rm = TRUE), digits = 0),
round(mean(as.vector(site()$Cl_mgL), na.rm = TRUE), digits = 0),
round(mean(as.vector(site()$SO4_mgL), na.rm = TRUE), digits = 0),
round(mean(as.vector(site()$TP_mgL), na.rm = TRUE), digits = 3),
round(mean(as.vector(site()$TN_mgL), na.rm = TRUE), digits = 2),
round(mean(as.vector(site()$NO2NO3_mgL), na.rm = TRUE), digits = 2),
round(mean(as.vector(site()$Chlorophyll_mgm3), na.rm = TRUE), digits = 1)))
})
Median <- reactive({
Median <- as.vector(c(round(median(as.vector(site()$Temp_C), na.rm = TRUE), digits = 1),
round(median(as.vector(site()$Turbidity_NTU), na.rm = TRUE), digits = 0),
round(median(as.vector(site()$pH), na.rm = TRUE), digits = 2),
round(median(as.vector(site()$DO_mgL), na.rm = TRUE), digits = 2),
round(median(as.vector(site()$Hardness_mgL), na.rm = TRUE), digits = 0),
round(median(as.vector(site()$TDS_mgL), na.rm = TRUE), digits = 0),
round(median(as.vector(site()$SpC_uScm), na.rm = TRUE), digits = 0),
round(median(as.vector(site()$Cl_mgL), na.rm = TRUE), digits = 0),
round(median(as.vector(site()$SO4_mgL), na.rm = TRUE), digits = 0),
round(median(as.vector(site()$TP_mgL), na.rm = TRUE), digits = 3),
round(median(as.vector(site()$TN_mgL), na.rm = TRUE), digits = 2),
round(median(as.vector(site()$NO2NO3_mgL), na.rm = TRUE), digits = 2),
round(median(as.vector(site()$Chlorophyll_mgm3), na.rm = TRUE), digits = 1)))
})
p25 <- reactive({
Percentile_25th <- as.vector(c(round(quantile(as.vector(site()$Temp_C), probs = 0.25, na.rm = TRUE), digits = 1),
round(quantile(as.vector(site()$Turbidity_NTU), probs = 0.25, na.rm = TRUE), digits = 0),
round(quantile(as.vector(site()$pH), probs = 0.25, na.rm = TRUE), digits = 2),
round(quantile(as.vector(site()$DO_mgL), probs = 0.25, na.rm = TRUE), digits = 2),
round(quantile(as.vector(site()$Hardness_mgL), probs = 0.25, na.rm = TRUE), digits = 0),
round(quantile(as.vector(site()$TDS_mgL), probs = 0.25, na.rm = TRUE), digits = 0),
round(quantile(as.vector(site()$SpC_uScm), probs = 0.25, na.rm = TRUE), digits = 0),
round(quantile(as.vector(site()$Cl_mgL), probs = 0.25, na.rm = TRUE),digits = 0),
round(quantile(as.vector(site()$SO4_mgL), probs = 0.25, na.rm = TRUE), digits = 0),
round(quantile(as.vector(site()$TP_mgL), probs = 0.25, na.rm = TRUE), digits = 3),
round(quantile(as.vector(site()$TN_mgL), probs = 0.25, na.rm = TRUE), digits = 2),
round(quantile(as.vector(site()$NO2NO3_mgL), probs = 0.25, na.rm = TRUE),digits = 2),
round(quantile(as.vector(site()$Chlorophyll_mgm3), probs = 0.25, na.rm = TRUE), digits = 1)))
})
p75 <- reactive({
Percentile_75th <- as.vector(c(round(quantile(as.vector(site()$Temp_C), probs = 0.75, na.rm = TRUE), digits = 1),
round(quantile(as.vector(site()$Turbidity_NTU), probs = 0.75, na.rm = TRUE), digits = 0),
round(quantile(as.vector(site()$pH), probs = 0.75, na.rm = TRUE), digits = 2),
round(quantile(as.vector(site()$DO_mgL), probs = 0.75, na.rm = TRUE), digits = 2),
round(quantile(as.vector(site()$Hardness_mgL), probs = 0.75, na.rm = TRUE), digits = 0),
round(quantile(as.vector(site()$TDS_mgL), probs = 0.75, na.rm = TRUE), digits = 0),
round(quantile(as.vector(site()$SpC_uScm), probs = 0.75, na.rm = TRUE), digits = 0),
round(quantile(as.vector(site()$Cl_mgL), probs = 0.75, na.rm = TRUE),digits = 0),
round(quantile(as.vector(site()$SO4_mgL), probs = 0.75, na.rm = TRUE), digits = 0),
round(quantile(as.vector(site()$TP_mgL), probs = 0.75, na.rm = TRUE), digits = 3),
round(quantile(as.vector(site()$TN_mgL), probs = 0.75, na.rm = TRUE), digits = 2),
round(quantile(as.vector(site()$NO2NO3_mgL), probs = 0.75, na.rm = TRUE),digits = 2),
round(quantile(as.vector(site()$Chlorophyll_mgm3), probs = 0.75, na.rm = TRUE), digits = 1)))
})
Min <- reactive({
Minimum <- as.vector(c(round(min(as.vector(site()$Temp_C), na.rm = TRUE), digits = 1),
round(min(as.vector(site()$Turbidity_NTU), na.rm = TRUE), digits = 0),
round(min(as.vector(site()$pH), na.rm = TRUE), digits = 2),
round(min(as.vector(site()$DO_mgL), na.rm = TRUE), digits = 2),
round(min(as.vector(site()$Hardness_mgL), na.rm = TRUE), digits = 0),
round(min(as.vector(site()$TDS_mgL), na.rm = TRUE), digits = 0),
round(min(as.vector(site()$SpC_uScm), na.rm = TRUE), digits = 0),
round(min(as.vector(site()$Cl_mgL), na.rm = TRUE), digits = 0),
round(min(as.vector(site()$SO4_mgL), na.rm = TRUE), digits = 0),
round(min(as.vector(site()$TP_mgL), na.rm = TRUE), digits = 3),
round(min(as.vector(site()$TN_mgL), na.rm = TRUE), digits = 2),
round(min(as.vector(site()$NO2NO3_mgL), na.rm = TRUE), digits = 2),
round(min(as.vector(site()$Chlorophyll_mgm3), na.rm = TRUE), digits = 1)))
})
Max <- reactive({
Maximum <- as.vector(c(round(max(as.vector(site()$Temp_C), na.rm = TRUE), digits = 1),
round(max(as.vector(site()$Turbidity_NTU), na.rm = TRUE), digits = 0),
round(max(as.vector(site()$pH), na.rm = TRUE), digits = 2),
round(max(as.vector(site()$DO_mgL), na.rm = TRUE), digits = 2),
round(max(as.vector(site()$Hardness_mgL), na.rm = TRUE), digits = 0),
round(max(as.vector(site()$TDS_mgL), na.rm = TRUE), digits = 0),
round(max(as.vector(site()$SpC_uScm), na.rm = TRUE), digits = 0),
round(max(as.vector(site()$Cl_mgL), na.rm = TRUE), digits = 0),
round(max(as.vector(site()$SO4_mgL), na.rm = TRUE), digits = 0),
round(max(as.vector(site()$TP_mgL), na.rm = TRUE), digits = 3),
round(max(as.vector(site()$TN_mgL), na.rm = TRUE), digits = 2),
round(max(as.vector(site()$NO2NO3_mgL), na.rm = TRUE), digits = 2),
round(max(as.vector(site()$Chlorophyll_mgm3), na.rm = TRUE), digits = 1)))
})
sheeter <- reactive({
sheet <- data.frame(Parameter = as.vector(Parameter), n = as.vector(n()),
Mean = as.vector(Mean()), Median = as.vector(Median()),
Minimum = as.vector(Min()), Maximum = as.vector(Max()),
Percentile_25th = as.vector(p25()), Percentile_75th = as.vector(p75()))
})
output$table <- renderDataTable(sheeter(), options = list(pageLength = 13, info = FALSE, lengthMenu = list(c(13, -1), c("13", "All")) ))
}
shinyApp(ui = ui, server = server)