This script will find the national average, min, and max temperatures for each day (Fahrenheit) as well as the total precipitation (inches).
library(prism)
library(tidyverse)
library(lubridate)
library(DomoR)
library(raster)
options(prism.path = "./PRISM_Files")
prismFileList <- ls_prism_data(absPath = TRUE)
stableMean <- prismFileList[which(grepl("_tmean_stable_4kmD1_",
prismFileList$files)),] %>%
mutate(Date = ymd(str_sub(files, start = 26, end = -5)))
lastStableDate <- max(stableMean$Date)
get_prism_dailys(type = "ppt",
minDate = lastStableDate,
maxDate = Sys.Date() - 1,
keepZip = F)
get_prism_dailys(type = "tmean",
minDate = lastStableDate,
maxDate = Sys.Date() - 1,
keepZip = F)
get_prism_dailys(type = "tmax",
minDate = lastStableDate,
maxDate = Sys.Date() - 1,
keepZip = F)
get_prism_dailys(type = "tmin",
minDate = lastStableDate,
maxDate = Sys.Date() - 1,
keepZip = F)stablePpt <- prismFileList[which(grepl("_ppt_stable_4kmD",
prismFileList$files)),] %>%
mutate(Date = ymd(str_sub(files, start = -12, end = -5)))
lastStableDate <- max(stablePpt$Date)
provisionalPpt <- prismFileList[which(grepl("_ppt_provisional_4kmD",
prismFileList$files)),] %>%
mutate(Date = ymd(str_sub(files, start = -12, end = -5))) %>%
filter(Date > ymd(lastStableDate))
lastProvisionalDate <- max(provisionalPpt$Date)
earlyPpt <- prismFileList[which(grepl("_ppt_early_4kmD",
prismFileList$files)),] %>%
mutate(Date = ymd(str_sub(files, start = -12, end = -5))) %>%
filter(Date > ymd(lastProvisionalDate))
lastEarlyDate <- max(earlyPpt$Date)
pptFiles <- stablePpt %>%
rbind(provisionalPpt) %>%
rbind(earlyPpt)
stableMean <- prismFileList[which(grepl("_tmean_stable_4kmD",
prismFileList$files)),] %>%
mutate(Date = ymd(str_sub(files, start = -12, end = -5)))
provisionalMean <- prismFileList[which(grepl("_tmean_provisional_4kmD",
prismFileList$files)),] %>%
mutate(Date = ymd(str_sub(files, start = -12, end = -5))) %>%
filter(Date > ymd(lastStableDate))
earlyMean <- prismFileList[which(grepl("_tmean_early_4kmD",
prismFileList$files)),] %>%
mutate(Date = ymd(str_sub(files, start = -12, end = -5))) %>%
filter(Date > ymd(lastProvisionalDate))
meanFiles <- stableMean %>%
rbind(provisionalMean) %>%
rbind(earlyMean)
stableMax <- prismFileList[which(grepl("_tmax_stable_4kmD",
prismFileList$files)),] %>%
mutate(Date = (str_sub(files, start = -12, end = -5)))
provisionalMax <- prismFileList[which(grepl("_tmax_provisional_4kmD",
prismFileList$files)),] %>%
mutate(Date = ymd(str_sub(files, start = -12, end = -5))) %>%
filter(Date > ymd(lastStableDate))
earlyMax <- prismFileList[which(grepl("_tmax_early_4kmD",
prismFileList$files)),] %>%
mutate(Date = ymd(str_sub(files, start = -12, end = -5))) %>%
filter(Date > ymd(lastProvisionalDate))
maxFiles <- stableMax %>%
rbind(provisionalMax) %>%
rbind(earlyMax)
stableMin <- prismFileList[which(grepl("_tmin_stable_4kmD",
prismFileList$files)),] %>%
mutate(Date = ymd(str_sub(files, start = -12, end = -5)))
provisionalMin <- prismFileList[which(grepl("_tmin_provisional_4kmD",
prismFileList$files)),] %>%
mutate(Date = ymd(str_sub(files, start = -12, end = -5))) %>%
filter(Date > ymd(lastStableDate))
earlyMin <- prismFileList[which(grepl("_tmin_early_4kmD",
prismFileList$files)),] %>%
mutate(Date = ymd(str_sub(files, start = -12, end = -5))) %>%
filter(Date > ymd(lastProvisionalDate))
minFiles <- stableMin %>%
rbind(provisionalMin) %>%
rbind(earlyMin)
if (!file.exists("stableData.csv")) {
i <- 1
nationalDaily <- data.frame(Date = stableMean$Date) %>%
mutate(tmean = NA,
tmax = NA,
tmin = NA,
ppt = NA)
for (i in 1:length(stableMean$Date)) {
r = raster(meanFiles$abs_path[i])
r_spdf = as(r, "SpatialPixelsDataFrame")
r_df = as.data.frame(r_spdf)
colnames(r_df) = c("value", "x", "y")
nationalDaily$tmean[i] <- mean(r_df$value)
r = raster(maxFiles$abs_path[i])
r_spdf = as(r, "SpatialPixelsDataFrame")
r_df = as.data.frame(r_spdf)
colnames(r_df) = c("value", "x", "y")
nationalDaily$tmax[i] <- max(r_df$value)
r = raster(minFiles$abs_path[i])
r_spdf = as(r, "SpatialPixelsDataFrame")
r_df = as.data.frame(r_spdf)
colnames(r_df) = c("value", "x", "y")
nationalDaily$tmin[i] <- min(r_df$value)
r = raster(pptFiles$abs_path[i])
r_spdf = as(r, "SpatialPixelsDataFrame")
r_df = as.data.frame(r_spdf)
colnames(r_df) = c("value", "x", "y")
nationalDaily$ppt[i] <- sum(r_df$value)
i = i + 1
}
write.csv(nationalDaily, file = "stableData.csv")
}
stableData <- read.csv("stableData.csv") %>%
dplyr::select(-1) %>%
mutate(Date = as.Date(Date))
if (lastStableDate > stableData$Date[length(stableData$Date)]) {
i <- length(stableData$Date) + 1
newStableDates <- data.frame(Date = stableMean$Date[i:length(stableMean$Date)],
tmean = NA, tmax = NA, tmin = NA, ppt = NA)
stableData <- rbind(stableData, newStableDates)
for (i in i:length(stableMean$Date)) {
r = raster(meanFiles$abs_path[i])
r_spdf = as(r, "SpatialPixelsDataFrame")
r_df = as.data.frame(r_spdf)
colnames(r_df) = c("value", "x", "y")
stableData$tmean[i] <- mean(r_df$value)
r = raster(maxFiles$abs_path[i])
r_spdf = as(r, "SpatialPixelsDataFrame")
r_df = as.data.frame(r_spdf)
colnames(r_df) = c("value", "x", "y")
stableData$tmax[i] <- max(r_df$value)
r = raster(minFiles$abs_path[i])
r_spdf = as(r, "SpatialPixelsDataFrame")
r_df = as.data.frame(r_spdf)
colnames(r_df) = c("value", "x", "y")
stableData$tmin[i] <- min(r_df$value)
r = raster(pptFiles$abs_path[i])
r_spdf = as(r, "SpatialPixelsDataFrame")
r_df = as.data.frame(r_spdf)
colnames(r_df) = c("value", "x", "y")
stableData$ppt[i] <- sum(r_df$value)
i = i + 1
}
write.csv(stableData, file = "stableData.csv")
}
stableData <- read.csv("stableData.csv") %>%
dplyr::select(-1) %>%
mutate(Date = as.Date(Date))
nationalDaily <- data.frame(Date = meanFiles$Date) %>%
left_join(stableData)
i <- length(stableData$Date)
for (i in i:length(nationalDaily$Date)) {
r = raster(meanFiles$abs_path[i])
r_spdf = as(r, "SpatialPixelsDataFrame")
r_df = as.data.frame(r_spdf)
colnames(r_df) = c("value", "x", "y")
nationalDaily$tmean[i] <- mean(r_df$value)
r = raster(maxFiles$abs_path[i])
r_spdf = as(r, "SpatialPixelsDataFrame")
r_df = as.data.frame(r_spdf)
colnames(r_df) = c("value", "x", "y")
nationalDaily$tmax[i] <- max(r_df$value)
r = raster(minFiles$abs_path[i])
r_spdf = as(r, "SpatialPixelsDataFrame")
r_df = as.data.frame(r_spdf)
colnames(r_df) = c("value", "x", "y")
nationalDaily$tmin[i] <- min(r_df$value)
r = raster(pptFiles$abs_path[i])
r_spdf = as(r, "SpatialPixelsDataFrame")
r_df = as.data.frame(r_spdf)
colnames(r_df) = c("value", "x", "y")
nationalDaily$ppt[i] <- sum(r_df$value)
i = i + 1
}
nationalDaily <- nationalDaily %>%
mutate(meanTemp = (tmean * 9/5) + 32,
maxTemp = (tmax * 9/5) + 32,
minTemp = (tmin * 9/5) + 32,
pptInches = ppt/25.4) %>%
dplyr::select(-tmean, -tmax, -tmin, -ppt)
load("domoCustomer")
load("domoAccessToken")
DomoR::init(domoCustomer, domoAccessToken)
#DomoR::create(nationalDaily, "National Weather Meta Data")
DomoR::replace_ds("50623da1-cdfc-4237-bf83-ce0321459349", nationalDaily)
head(nationalDaily %>% arrange(desc(Date)))