Skip to content
Snippets Groups Projects
Commit 112f14ef authored by Laura A DeCicco's avatar Laura A DeCicco
Browse files

Spiffed up melt/cast to handle all cases.

parent 88e2ede2
No related branches found
No related tags found
1 merge request!39Overhaul of function names. Move some functionality to EGRET.
...@@ -95,6 +95,7 @@ importWaterML1 <- function(obs_url,asDateTime=FALSE, tz=""){ ...@@ -95,6 +95,7 @@ importWaterML1 <- function(obs_url,asDateTime=FALSE, tz=""){
timeSeries <- xpathApply(doc, "//ns1:timeSeries", namespaces = ns) timeSeries <- xpathApply(doc, "//ns1:timeSeries", namespaces = ns)
if(0 == length(timeSeries)){ if(0 == length(timeSeries)){
message("Returning an empty dataset") message("Returning an empty dataset")
df <- data.frame() df <- data.frame()
...@@ -103,6 +104,8 @@ importWaterML1 <- function(obs_url,asDateTime=FALSE, tz=""){ ...@@ -103,6 +104,8 @@ importWaterML1 <- function(obs_url,asDateTime=FALSE, tz=""){
} }
attList <- list() attList <- list()
dataColumns <- c()
qualColumns <- c()
for (i in 1:length(timeSeries)){ for (i in 1:length(timeSeries)){
...@@ -184,9 +187,12 @@ importWaterML1 <- function(obs_url,asDateTime=FALSE, tz=""){ ...@@ -184,9 +187,12 @@ importWaterML1 <- function(obs_url,asDateTime=FALSE, tz=""){
if("qualifiers" %in% names(df)){ if("qualifiers" %in% names(df)){
qualName <- paste(valueName,"cd",sep="_") qualName <- paste(valueName,"cd",sep="_")
names(df)[which(names(df) == "qualifiers")] <- qualName names(df)[which(names(df) == "qualifiers")] <- qualName
qualColumns <- c(qualColumns, qualName)
} }
dataColumns <- c(dataColumns, valueName)
if("dateTime" %in% attributeNames){ if("dateTime" %in% attributeNames){
datetime <- xpathSApply(subChunk, "ns1:value/@dateTime",namespaces = chunkNS) datetime <- xpathSApply(subChunk, "ns1:value/@dateTime",namespaces = chunkNS)
...@@ -274,6 +280,8 @@ importWaterML1 <- function(obs_url,asDateTime=FALSE, tz=""){ ...@@ -274,6 +280,8 @@ importWaterML1 <- function(obs_url,asDateTime=FALSE, tz=""){
columnsOrderd <- columnsOrdered[columnsOrdered %in% names(df)] columnsOrderd <- columnsOrdered[columnsOrdered %in% names(df)]
df <- df[,columnsOrderd] df <- df[,columnsOrderd]
names(extraSiteData) <- make.unique(names(extraSiteData)) names(extraSiteData) <- make.unique(names(extraSiteData))
...@@ -341,13 +349,17 @@ importWaterML1 <- function(obs_url,asDateTime=FALSE, tz=""){ ...@@ -341,13 +349,17 @@ importWaterML1 <- function(obs_url,asDateTime=FALSE, tz=""){
} }
sortingColumns <- c("agency","site_no","dateTime","tz_cd") # sortingColumns <- c("agency","site_no","dateTime","tz_cd")
dataColumns <- names(mergedDF)[!(names(mergedDF) %in% sortingColumns)] # dataColumns <- names(mergedDF)[!(names(mergedDF) %in% sortingColumns)]
dataColumns <- dataColumns[-grep("_cd",dataColumns)] # dataColumns <- dataColumns[-grep("_cd",dataColumns)]
sortingColumns <- names(mergedDF)[!(names(mergedDF) %in% c(dataColumns,qualColumns))]
meltedmergedDF <- melt(mergedDF,id.vars=sortingColumns) meltedmergedDF <- melt(mergedDF,id.vars=sortingColumns)
meltedmergedDF <- meltedmergedDF[!is.na(meltedmergedDF$value),] meltedmergedDF <- meltedmergedDF[!is.na(meltedmergedDF$value),]
mergedDF2 <- dcast(meltedmergedDF, dateTime+site_no+agency+tz_cd~variable, drop=FALSE)
castFormula <- as.formula(paste(paste(sortingColumns, collapse="+"),"variable",sep="~"))
mergedDF2 <- dcast(meltedmergedDF, castFormula, drop=FALSE)
dataColumns2 <- !(names(mergedDF2) %in% sortingColumns) dataColumns2 <- !(names(mergedDF2) %in% sortingColumns)
mergedDF <- mergedDF2[rowSums(is.na(mergedDF2[,dataColumns2])) != sum(dataColumns2),] mergedDF <- mergedDF2[rowSums(is.na(mergedDF2[,dataColumns2])) != sum(dataColumns2),]
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment