diff --git a/R/whatNWISData.r b/R/whatNWISData.r index 30739f79180590ef9cdd2dd257cc1b810e1423ef..68ce122068142306c4e5caad2d7327e90521f531 100644 --- a/R/whatNWISData.r +++ b/R/whatNWISData.r @@ -8,15 +8,18 @@ #' @return retval dataframe with all information found in the expanded site file #' @export #' @import RCurl +#' @import lubridate #' @examples #' availableData <- whatNWISdata('05114000') #' # To find just unit value ('instantaneous') data: #' uvData <- whatNWISdata('05114000',service="uv") -#' uvDataMulti <- whatNWISdata(c('05114000','09423350'),service="uv") +#' uvDataMulti <- whatNWISdata(c('05114000','09423350'),service=c("uv","dv")) whatNWISdata <- function(siteNumber,service=c("uv","dv","qw")){ siteNumber <- paste(siteNumber,collapse=",") + service <- match.arg(service, c("dv","uv","qw","ad","id","pk","sv"), several.ok = TRUE) + urlSitefile <- paste("http://waterservices.usgs.gov/nwis/site/?format=rdb&seriesCatalogOutput=true&sites=",siteNumber,sep = "") doc = tryCatch({ @@ -44,26 +47,24 @@ whatNWISdata <- function(siteNumber,service=c("uv","dv","qw")){ comment.char="#") SiteFile <- SiteFile[-1,] + + numberColumns <- grep("_va",names(SiteFile)) + SiteFile[,numberColumns] <- sapply(SiteFile[,numberColumns],as.numeric) - SiteFile <- with(SiteFile, data.frame(site_no=site_no, - parameter_cd=parm_cd, statCd=stat_cd, - startDate=begin_date,endDate=end_date, - count=count_nu,service=data_type_cd, - stringsAsFactors = FALSE)) - - SiteFile <- SiteFile[!is.na(SiteFile$parameter_cd),] - SiteFile <- SiteFile["" != SiteFile$parameter_cd,] - SiteFile$startDate <- as.Date(SiteFile$startDate) - SiteFile$endDate <- as.Date(SiteFile$endDate) - SiteFile$count <- as.numeric(SiteFile$count) + intColumns <- grep("_nu",names(SiteFile)) + SiteFile[,intColumns] <- sapply(SiteFile[,intColumns],as.integer) - pCodes <- unique(SiteFile$parameter_cd) + pCodes <- unique(SiteFile$parm_cd) parameterCdFile <- parameterCdFile pcodeINFO <- parameterCdFile[parameterCdFile$parameter_cd %in% pCodes,] - SiteFile <- merge(SiteFile,pcodeINFO,by="parameter_cd") - SiteFile <- SiteFile[SiteFile$service %in% service,] + SiteFile <- merge(SiteFile,pcodeINFO,by.x="parm_cd" ,by.y="parameter_cd",all=TRUE) + SiteFile <- SiteFile[SiteFile$data_type_cd %in% service,] + + SiteFile$begin_date <- as.Date(parse_date_time(SiteFile$begin_date, c("Ymd", "mdY", "Y!"))) + SiteFile$end_date <- as.Date(parse_date_time(SiteFile$end_date, c("Ymd", "mdY", "Y!"))) + return(SiteFile) } else { message(paste("URL caused an error:", urlSitefile))