To install the stable version of sensorQC
package with dependencies:
install.packages("sensorQC", repos = c("http://owi.usgs.gov/R","http://cran.rstudio.com/"), dependencies = TRUE)
Or to install the current development version of the package (using the devtools
package):
devtools::install_github("USGS-R/sensorQC")
This package is still very much in development, so the API may change at any time.
| Name | Status |
| :------------ |:-------------|
| Linux Build: | |
| Windows Build: | |
| Package Tests: | |
High-frequency aquatic sensor QAQC procedures. sensorQC
imports data, and runs various statistical outlier detection techniques as specified by the user.
sensorQC
Functions (as of vr packageVersion('sensorQC')
)| Function | Title |
| ------------- |:-------------|
| read
| read in a file for sensor data or a config (.yml) file |
| window
| window sensor data for processing in chunks |
| plot
| plot sensor data |
| flag
| create data flags for a sensor |
| clean
| remove or replace flagged data points |
library(sensorQC) file <- system.file('extdata', 'test_data.txt', package = 'sensorQC') sensor <- read(file, format="wide_burst", date.format="%m/%d/%Y %H:%M") flag(sensor, 'x == 999999', 'persist(x) > 3', 'is.na(x)')
Use the MAD
(median absolute deviation) test, and add w
to the function call to specify "windows" (note, sensor must be windowed w/ window()
prior to using w
)
sensor = window(sensor, type='auto') flag(sensor, 'x == 999999', 'persist(x) > 3', 'MAD(x,w) > 3', 'MAD(x) > 3')
Use sensorQC with a simple vector of numbers:
flag(c(3,2,4,3,3,4,2,4),'MAD(x) > 3')
plot dataset w/ outliers:
plot(sensor)
plot dataset w/o outliers:
flagged = flag(sensor, 'x == 999999', 'persist(x) > 3', 'MAD(x,w) > 3', 'MAD(x) > 3') plot(flagged)
The clean
function can be used to strip flagged data points from the record or replace them with other values (such as NA
or -9999)
data = c(999999, 1,2,3,4,2,3,4) sensor = flag(data, 'x > 9999') clean(sensor) clean(sensor, replace=NA)
if you have multiple flag rules, you can choose which ones to use by their index:
data = c(999999, 1,2,3,4,2,3,4) sensor = flag(data, 'x > 9999', 'x == 3') clean(sensor, which=1) clean(sensor, which=2)
or flag data and clean data all in one step:
clean(data, 'x > 9999', 'persist(x) > 10', 'MAD(x) > 3', replace=NA)
The MAD(x,w)
function can use a rolling window by leveraging the RcppRoll
R package.
sensor <- read(file, format="wide_burst", date.format="%m/%d/%Y %H:%M") sensor = window(sensor, n=300, type='rolling') flag(sensor, 'x == 999999', 'persist(x) > 3', 'MAD(x,w) > 3', 'MAD(x) > 3')
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.