Nothing
#############################
### HF METEOROLOGICAL DATA###
#############################
# collect provenance
# library(rdtLite)
# prov.init(prov.dir="prov", snapshot.size = 1)
raw.file <- readLines("http://harvardforest.fas.harvard.edu/sites/harvardforest.fas.harvard.edu/files/weather/metsta.dat", warn = FALSE)
hourly.vector <- vector()
daily.vector <- vector()
for(i in 1:length(raw.file)){
if(substring(raw.file[i], 1, 3) == "101")
hourly.vector <- append(hourly.vector, raw.file[i])
else
daily.vector <- append(daily.vector, raw.file[i])
}
hourly.file <- file("hourly.csv")
daily.file <- file("daily.csv")
writeLines(hourly.vector, con = hourly.file)
writeLines(daily.vector, con = daily.file)
close(hourly.file)
close(daily.file)
hourly.df <- read.csv("hourly.csv", header = FALSE)
daily.df <- read.csv("daily.csv", header = FALSE)
####################################################################
# print test for different provenance
print("testing")
# name columns
colnames(hourly.df) <- c("type", "year", "JulDate", "time", "airTemp",
"humidity", "dewpoint", "precipitation",
"solRad", "phoRad", "netRad", "barPressure",
"windSpeed", "vectorWindSpeed", "windDirection",
"windDeviation", "gustSpeed", "soilTemp")
# get obs with rain
rain.df <- hourly.df[hourly.df$precipitation > 0, ]
# get obs where air temp was below soil temp
temp.df <- hourly.df[hourly.df$airTemp < hourly.df$soilTemp, ]
# get obs with rain and where air temp was below soil temp
rain.temp.df <- rain.df[rain.df$airTemp < rain.df$soilTemp, ]
# list 5 selected columns for all days
selected.columns.df <- hourly.df[ , c("JulDate", "time", "airTemp", "soilTemp", "precipitation")]
# list 5 selected columns for days with rain and where air temp < soil temp
filtered.selected.columns.df <- rain.temp.df[ , c("JulDate", "time", "airTemp", "soilTemp", "precipitation")]
# find 5 highest recorded winds
five.highest.wind <- hourly.df[order(hourly.df$windSpeed, decreasing = TRUE), ]
five.highest.wind <- five.highest.wind[1:5, ]
# find some features for 5 days with highest wind
feature.highest.wind.df <- five.highest.wind[ , c("JulDate", "time", "airTemp", "precipitation", "windSpeed")]
# add a column to track days with rain
hourly.df$hasRain <- hourly.df$precipitation > 0
# get the highest temp from a function for a given Julian date
highest.temp.Jul.date <- function(jul.date){
specific.jul.date.df <- hourly.df[hourly.df$JulDate == jul.date, ]
return(max(specific.jul.date.df$airTemp))
}
print(highest.temp.Jul.date(121))
# get min and max of Julian dates
min.Jul.date <- min(hourly.df$JulDate)
max.Jul.date <- max(hourly.df$JulDate)
# vector for a range of min to max Julian date
Jul.range.vector <- c (min.Jul.date:max.Jul.date)
# get the highest temp for each Julian date and put them in a data frame
high.temp.each.day.vector <- sapply(Jul.range.vector, highest.temp.Jul.date)
high.temp.days.df <- data.frame(Jul.range.vector, high.temp.each.day.vector)
colnames(high.temp.days.df) <- c("Day", "Temp")
# function to get the total precipitaition for a given Julian date
total.rain.specific.day <- function(jul.date){
temp.date.df <- hourly.df[hourly.df$JulDate == jul.date, ]
return(sum(temp.date.df$precipitation))
}
total.rain.each.day.vector <- sapply(Jul.range.vector, total.rain.specific.day)
total.rain.days.df <- data.frame(Jul.range.vector, total.rain.each.day.vector)
colnames(total.rain.days.df) <- c("Day", "TotalRain")
# get number of days there was rain
summary(total.rain.days.df$TotalRain > 0)
# plot high air temp against Julian date
plot(high.temp.days.df$Day, high.temp.days.df$Temp)
# add best fit line for the high temperature
abline(lsfit(high.temp.days.df$Day, high.temp.days.df$Temp), col = "red")
# get quick look at data
# summary(HF.data.frame)
# head(HF.data.frame) #default: 6 first lines
# head(HF.data.frame, n = 1L) #get the first line
# head(HF.data.frame, n = -14700L) #get all but 14700 last lines
# tail(HF.data.frame)
# str(HF.data.frame)
# # end provenance
# prov.quit()
Any scripts or data that you put into this service are public.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.