From 6964f0894ff976c5a49bd7427423260810bf7bf0 Mon Sep 17 00:00:00 2001 From: unknown <ldecicco@usgs.gov> Date: Wed, 31 Dec 2014 13:16:59 -0600 Subject: [PATCH] Handling empty dates (full period of record) --- R/readWQPdata.R | 37 +++++++++++++++++++++++++------------ R/readWQPqw.r | 14 ++++++++++---- R/whatWQPsites.R | 28 ++++++++++++++++++---------- man/readWQPdata.Rd | 8 +++----- 4 files changed, 56 insertions(+), 31 deletions(-) diff --git a/R/readWQPdata.R b/R/readWQPdata.R index 3aa5fbac..cc583184 100644 --- a/R/readWQPdata.R +++ b/R/readWQPdata.R @@ -91,9 +91,8 @@ #' pHData <- readWQPdata(siteid="USGS-04024315",characteristicName=nameToUse) #' pHDataExpanded2 <- readWQPdata(bBox=c(-90.10,42.67,-88.64,43.35),characteristicName=nameToUse) #' startDate <- as.Date("2013-01-01") -#' nutrientPysical <- readWQPdata(statecode="US:55",siteType="Stream", -#' sampleMedia="Water",startDate=startDate, -#' characteristicType=c("Nutrient","Physical")) +#' nutrientDaneCounty <- readWQPdata(countycode="US:55:025",startDate=startDate, +#' characteristicType="Nutrient") #' } readWQPdata <- function(...){ @@ -113,17 +112,25 @@ readWQPdata <- function(...){ if(any(names(values) %in% dateNames)){ index <- which(names(values) %in% dateNames) - # If a valid R date was put in, the format needs to be changed to mm-dd-yyyy for the WQP: - if(all(is.Date(as.Date(values[index])))){ - dates <- as.Date(values[index]) - dates <- format(as.Date(dates), format="%m-%d-%Y") - values[index] <- dates - } else if (!all(is.Date(as.Date(values[index],format="%m-%d-%Y")))){ - warning("Please check the date format for the arguments: ", paste(names(values)[index], collapse=", ")) + + if("" %in% values[index]){ + values <- values[-index[values[index] == ""]] + index <- which(names(values) %in% dateNames) } - names(values)[names(values) == 'startDate'] <- 'startDateLo' - names(values)[names(values) == 'endDate'] <- 'startDateHi' + if(length(index) > 0){ + # If a valid R date was put in, the format needs to be changed to mm-dd-yyyy for the WQP: + if(any(!is.na(as.Date(values[index], format="%Y-%m-%d")))){ + dates <- as.Date(values[index[!is.na(as.Date(values[index], format="%Y-%m-%d"))]]) + dates <- format(as.Date(dates), format="%m-%d-%Y") + values[index] <- dates + } else if (any(is.na(as.Date(values[index], format="%m-%d-%Y")))){ + warning("Please check the date format for the arguments: ", paste(names(values)[index], collapse=", ")) + } + + names(values)[names(values) == 'startDate'] <- 'startDateLo' + names(values)[names(values) == 'endDate'] <- 'startDateHi' + } } @@ -161,10 +168,16 @@ readWQPdata <- function(...){ stringsAsFactors=FALSE) if(any(!is.na(variableInfo$parameterCd))){ + pcodes <- unique(variableInfo$parameterCd[!is.na(variableInfo$parameterCd)]) + pcodes <- pcodes["" != pcodes] + paramINFO <- readNWISpCode(pcodes) + names(paramINFO)["parameter_cd" == names(paramINFO)] <- "parameterCd" + pCodeToName <- pCodeToName varExtras <- pCodeToName[pCodeToName$parm_cd %in% unique(variableInfo$parameterCd[!is.na(variableInfo$parameterCd)]),] names(varExtras)[names(varExtras) == "parm_cd"] <- "parameterCd" variableInfo <- merge(variableInfo, varExtras, by="parameterCd", all = TRUE) + variableInfo <- merge(variableInfo, paramINFO, by="parameterCd", all = TRUE) variableInfo <- unique(variableInfo) } diff --git a/R/readWQPqw.r b/R/readWQPqw.r index 195fcbe8..17d34ae8 100644 --- a/R/readWQPqw.r +++ b/R/readWQPqw.r @@ -102,7 +102,7 @@ #' rawPcode <- readWQPqw('USGS-01594440','01075', '', '') #' rawCharacteristicName <- readWQPqw('WIDNR_WQX-10032762','Specific conductance', '', '') #' rawPHsites <- readWQPqw(c('USGS-05406450', 'USGS-05427949','WIDNR_WQX-133040'), 'pH','','') -#' nwisEx <- readWQPqw('USGS-04024000',c('34247','30234','32104','34220'),'','') +#' nwisEx <- readWQPqw('USGS-04024000',c('34247','30234','32104','34220'),'','2012-12-20') #' } readWQPqw <- function(siteNumbers,parameterCd,startDate="",endDate=""){ @@ -148,11 +148,17 @@ readWQPqw <- function(siteNumbers,parameterCd,startDate="",endDate=""){ variableInfo <- unique(variableInfo) if(any(variableInfo$parameterCd != "")){ + pcodes <- unique(variableInfo$parameterCd[!is.na(variableInfo$parameterCd)]) + pcodes <- pcodes["" != pcodes] + paramINFO <- readNWISpCode(pcodes) + names(paramINFO)["parameter_cd" == names(paramINFO)] <- "parameterCd" + pCodeToName <- pCodeToName - varExtras <- pCodeToName[pCodeToName$parm_cd %in% - unique(variableInfo$parameterCd[!is.na(variableInfo$parameterCd)]),] + varExtras <- pCodeToName[pCodeToName$parm_cd %in% unique(variableInfo$parameterCd[!is.na(variableInfo$parameterCd)]),] names(varExtras)[names(varExtras) == "parm_cd"] <- "parameterCd" - variableInfo <- merge(variableInfo, varExtras, by="parameterCd", all=TRUE) + variableInfo <- merge(variableInfo, varExtras, by="parameterCd", all = TRUE) + variableInfo <- merge(variableInfo, paramINFO, by="parameterCd", all = TRUE) + variableInfo <- unique(variableInfo) } attr(retval, "siteInfo") <- siteInfo diff --git a/R/whatWQPsites.R b/R/whatWQPsites.R index c9b15dbd..70f01708 100644 --- a/R/whatWQPsites.R +++ b/R/whatWQPsites.R @@ -73,20 +73,28 @@ whatWQPsites <- function(...){ if(any(names(values) %in% dateNames)){ index <- which(names(values) %in% dateNames) - # If a valid R date was put in, the format needs to be changed to mm-dd-yyyy for the WQP: - if(all(is.Date(as.Date(values[index])))){ - dates <- as.Date(values[index]) - dates <- format(as.Date(dates), format="%m-%d-%Y") - values[index] <- dates - } else if (!all(is.Date(as.Date(values[index],format="%m-%d-%Y")))){ - warning("Please check the date format for the arguments: ", paste(names(values)[index], collapse=", ")) + + if("" %in% values[index]){ + values <- values[-index[values[index] == ""]] + index <- which(names(values) %in% dateNames) } - names(values)[names(values) == 'startDate'] <- 'startDateLo' - names(values)[names(values) == 'endDate'] <- 'startDateHi' + if(length(index) > 0){ + # If a valid R date was put in, the format needs to be changed to mm-dd-yyyy for the WQP: + if(any(!is.na(as.Date(values[index], format="%Y-%m-%d")))){ + dates <- as.Date(values[index[!is.na(as.Date(values[index], format="%Y-%m-%d"))]]) + dates <- format(as.Date(dates), format="%m-%d-%Y") + values[index] <- dates + } else if (any(is.na(as.Date(values[index], format="%m-%d-%Y")))){ + warning("Please check the date format for the arguments: ", paste(names(values)[index], collapse=", ")) + } + + names(values)[names(values) == 'startDate'] <- 'startDateLo' + names(values)[names(values) == 'endDate'] <- 'startDateHi' + } } - + urlCall <- paste(paste(names(values),values,sep="="),collapse="&") diff --git a/man/readWQPdata.Rd b/man/readWQPdata.Rd index b02c7df1..3d71d35d 100644 --- a/man/readWQPdata.Rd +++ b/man/readWQPdata.Rd @@ -98,12 +98,10 @@ because it allows for other agencies rather than the USGS. \dontrun{ nameToUse <- "pH" pHData <- readWQPdata(siteid="USGS-04024315",characteristicName=nameToUse) -pHDataExpanded <- readWQPdata(bBox="-90.10,42.67,-88.64,43.35",characteristicName=nameToUse) pHDataExpanded2 <- readWQPdata(bBox=c(-90.10,42.67,-88.64,43.35),characteristicName=nameToUse) -startDate <- as.Date("2008-01-01") -nutrientPysical <- readWQPdata(statecode="US:55",siteType="Stream", - samplMedia="Water",startDateLo=startDate, - characteristicType=c("Nutrient","Physical)) +startDate <- as.Date("2013-01-01") +nutrientDaneCounty <- readWQPdata(countycode="US:55:025",startDate=startDate, + characteristicType="Nutrient") } } \keyword{WQP} -- GitLab