diff --git a/R/basicWQPData.R b/R/basicWQPData.R index 6bece887f97d0cc65a3d4987006a63528eb692e3..b80e94cb95280ecebe0ffb25975e518024cc2730 100644 --- a/R/basicWQPData.R +++ b/R/basicWQPData.R @@ -59,21 +59,27 @@ basicWQPData <- function(url){ c("EST","EDT","CST","CDT","MST","MDT","PST","PDT","AKST","AKDT","HAST","HST")) timeZoneStart <- as.character(timeZoneLibrary[retval$ActivityStartTime.TimeZoneCode]) timeZoneEnd <- as.character(timeZoneLibrary[retval$ActivityEndTime.TimeZoneCode]) + timeZoneStart[is.na(timeZoneStart)] <- "" + timeZoneEnd[is.na(timeZoneEnd)] <- "" if(any(!is.na(timeZoneStart))){ if(length(unique(timeZoneStart)) == 1){ retval$ActivityStartDateTime <- with(retval, as.POSIXct(paste(ActivityStartDate, ActivityStartTime.Time),format="%Y-%m-%d %H:%M:%S", tz=unique(timeZoneStart))) } else { -# warning("Mixed time zone information") - if(any(is.na(timeZoneStart))){ - warning("Missing time zone information, all dateTimes default to user's local time") - retval$ActivityStartDateTime <- with(retval, as.POSIXct(paste(ActivityStartDate, ActivityStartTime.Time), format="%Y-%m-%d %H:%M:%S"),tz=Sys.timezone()) - } else { - for(i in seq_along(row.names(retval))){ - timeZone <- timeZoneStart[i] - retval$ActivityStartDateTime[i] <- with(retval, as.POSIXct(paste(ActivityStartDate[i], ActivityStartTime.Time[i]), format="%Y-%m-%d %H:%M:%S",tz=timeZone)) - } + + mostCommonTZ <- names(sort(summary(as.factor(timeZoneStart)),decreasing = TRUE)[1]) + + retval$ActivityStartDateTime <- with(retval, as.POSIXct(paste(ActivityStartDate, ActivityStartTime.Time), + format="%Y-%m-%d %H:%M:%S", + tz=mostCommonTZ)) + additionalTZs <- names(sort(summary(as.factor(timeZoneStart)),decreasing = TRUE)[-1]) + for(i in additionalTZs){ + retval$ActivityStartDateTime[timeZoneStart == i] <- with(retval[timeZoneStart == i,], + as.POSIXct(paste(ActivityStartDate, ActivityStartTime.Time), + format="%Y-%m-%d %H:%M:%S", + tz=i)) } + } } @@ -81,20 +87,23 @@ basicWQPData <- function(url){ if(length(unique(timeZoneEnd)) == 1){ retval$ActivityEndDateTime <- with(retval, as.POSIXct(paste(ActivityEndDate, ActivityEndTime.Time), format="%Y-%m-%d %H:%M:%S",tz=unique(timeZoneEnd))) } else { - warning("Mixed time zone information") - if(any(is.na(timeZoneEnd))){ - warning("Missing time zone information, all dateTimes default to user's local time") - retval$ActivityEndDateTime <- with(retval, as.POSIXct(paste(ActivityEndDate, ActivityEndTime.Time), format="%Y-%m-%d %H:%M:%S"), tz=Sys.timezone()) - } else { - for(i in seq_along(row.names(retval))){ - retval$ActivityEndDateTime[i] <- with(retval, as.POSIXct(paste(ActivityEndDate[i], ActivityEndTime.Time[i]), format="%Y-%m-%d %H:%M:%S",tz=timeZoneEnd[i])) - } + mostCommonTZ <- names(sort(summary(as.factor(timeZoneEnd)),decreasing = TRUE)[1]) + + retval$ActivityEndDateTime <- with(retval, as.POSIXct(paste(ActivityEndDate, ActivityEndTime.Time), + format="%Y-%m-%d %H:%M:%S", + tz=mostCommonTZ)) + additionalTZs <- names(sort(summary(as.factor(timeZoneEnd)),decreasing = TRUE)[-1]) + for(i in additionalTZs){ + retval$ActivityEndDateTime[timeZoneEnd == i] <- with(retval[timeZoneEnd == i,], + as.POSIXct(paste(ActivityEndDate, ActivityEndTime.Time), + format="%Y-%m-%d %H:%M:%S", + tz=i)) } } } if(any(retval$ActivityEndDate != "")){ - retval$ActivityEndDate <- as.Date(retval$ActivityEndDate) + retval$ActivityEndDate[retval$ActivityEndDate != ""] <- as.Date(retval$ActivityEndDate[retval$ActivityEndDate != ""]) } return(retval) diff --git a/R/getRDB1Data.r b/R/getRDB1Data.r index a3053cfa27e833a7d2d321d9c8fc1fdb5514f2bd..3bb264d60333cab989dea8d0fb2bca9ad29125bc 100644 --- a/R/getRDB1Data.r +++ b/R/getRDB1Data.r @@ -74,10 +74,18 @@ getRDB1Data <- function(obs_url,asDateTime=FALSE){ if(length(unique(timeZone)) == 1){ data[,regexpr('d$', dataType) > 0] <- as.POSIXct(data[,regexpr('d$', dataType) > 0], "%Y-%m-%d %H:%M", tz = unique(timeZone)) } else { -# warning("Mixed time zone information") - for(i in seq_along(row.names(data))){ - data[i,regexpr('d$', dataType) > 0] <- as.POSIXct(data[i,regexpr('d$', dataType) > 0], "%Y-%m-%d %H:%M", tz = timeZone[i]) + + mostCommonTZ <- names(sort(summary(as.factor(timeZone)),decreasing = TRUE)[1]) + + data[,regexpr('d$', dataType) > 0] <- as.POSIXct(data[,regexpr('d$', dataType) > 0], "%Y-%m-%d %H:%M", tz = mostCommonTZ) + additionalTZs <- names(sort(summary(as.factor(timeZone)),decreasing = TRUE)[-1]) + for(i in additionalTZs){ + data[timeZone == i,regexpr('d$', dataType) > 0] <- as.POSIXct(data[,regexpr('d$', dataType) > 0], "%Y-%m-%d %H:%M", tz = i) } + +# for(i in seq_along(row.names(data))){ +# data[i,regexpr('d$', dataType) > 0] <- as.POSIXct(data[i,regexpr('d$', dataType) > 0], "%Y-%m-%d %H:%M", tz = timeZone[i]) +# } } } else {