Goal of this markdown: to set up air temperature data for analysis keeping air temperature only when fucus is exposed

Air temperature: I have air temperature data from EOS research pier in Tiburon and from Golden Gate bridge. I downloaded data (both recorded every 6 min) from 1/1/2017 - 12/31/2019. I’m wrangling the data the same way as the other environmental data. EOS has QC tests so I was able to use that. GG Bridge does not but they did have data points at 999 so I removed those instead. I then removed data points 2 standard deviations away from a 4 hour rolling median and used the remaining points to calculate hourly median.

Tidal height: For now I have tidal height from Chevron Pier in Richmond but Karina suggested using predictions from SF (which makes more sense given how water flows through the bay). For now I’m keeping the Richmond one but this will be an easy swap. I want to look into another R program becasue I found tidal heigh info at Point Chauncy but it’s not recognizing it for some reason. Something I need to look into more. I’m using a height of 1m for when Fucus is exposed (need to follow up with Ryan about tidal height of fucus). I remove air temeperature data when the tidal height is greater than 1 m for now.

Linking with environmental data: I summarize the data the same way I did for the other environment data with median of air temperature between survey dates, median of daily medians, median of daily mins, median of daily max, and median of daily ranges. I am adding the air temperature data to that data frame I’ve already created. I use the GG bridge temeprature for Horseshoe Bay and Brickyard Park and use EOS pier data for Point Chauncy and Paradise Cay.

Downloaded Golden Gate Bridge air temperature data on 5/5/2021
Data collected every 6 min
Temp in C
https://www.ndbc.noaa.gov/station_history.php?station=ftpc1

Downloaded air temperature data 2/1/2021 data collected every 6 min from eos pier https://tidesandcurrents.noaa.gov/waterlevels.html?id=9414290&units=standard&bdate=20170101&edate=20191231&timezone=GMT&datum=MLLW&interval=6&action=data

Links from searches:
https://tidesandcurrents.noaa.gov/map/index.shtml?lat=37.88157000000007&lng=-122.46661999999998&zoom=10
https://search.usa.gov/search?utf8=%E2%9C%93&affiliate=noaa.gov&query=tidal+height+data&commit=

Links from Karina
https://www.rdocumentation.org/packages/TideHarmonics/versions/0.1-1/topics/predict.tide
https://cran.r-project.org/web/packages/TideTables/TideTables.pdf
https://lukemiller.org/index.php/tag/tide-height/
https://rdrr.io/cran/oce/man/predict.tidem.html
https://lukemiller.org/index.php/2013/05/more-tide-prediction-with-r/

rm(list=ls())

library(tidyverse)
library(ggpubr)
library(scales)
library(chron)
library(plotly)
library(taRifx)
library(aweek)
library(easypackages)
library(renv)
library(here)
library(ggthemes)
library(gridExtra)
library(patchwork)
library(tidyquant)
library(recipes) 
library(cranlogs)
library(knitr)
library(openair)
library(data.table)

Custom function

custom_stat_fun_2<-function(x, na.rm=TRUE){
  m<-median(x, na.rm=TRUE)
  s<- sd(x, na.rm=TRUE)
  hi<-m+2*s
  lo<-m-2*s
  ret<-c(median=m, stdev=s, hi.95=hi, lo.95=lo)
}

####Air Temperature EOS#### Read in data

eos.air<-read.csv(
      "https://raw.githubusercontent.com/Cmwegener/thesis/master/data/environmental/raw/eos_air_temp.csv",
    header = TRUE
  )
eos.air$date<-as.POSIXct(eos.air$date, format = c("%Y-%m-%d"))
eos.air$datetime<-as.POSIXct(eos.air$datetime, format = c("%Y-%m-%dT%H:%M:%SZ"))


eos.air%>%
  ggplot(aes(x=date, y=air_temperature, color=air_temperature))+
  geom_point(alpha=0.5)+
  labs(title="Air temperature(C) data from Tiburon: all data",
       subtitle="01/01/2017 - 12/31/2019",
       caption= "data courtesy of CeNCOOS")

Looks pretty goo except for that point at zero. Looks like there’s a little data gap in spring 2018

Removed failed QC points

eos.air<-eos.air[- grep("4", eos.air$air_temperature_qc_agg),]

eos.air%>%
  ggplot(aes(x=date, y=air_temperature, color=air_temperature))+
  geom_point(alpha=0.5)+
  labs(title="Air temperature(C) data from Tiburon: failed qc removed",
       subtitle="01/01/2017 - 12/31/2019",
       caption= "data courtesy of CeNCOOS")

Only removed one data point but it was the one that looked wrong at least

Rolling average 4 hours. This needs a column named “date” with no time stamp in order to work.

eos.air<-
  eos.air%>%
    tq_mutate(
      select= air_temperature,
      mutate_fun= rollapply,
      width= 40,
      align= "right",
      by.column= FALSE,
      FUN= custom_stat_fun_2,
      na.rm= TRUE)
## Warning in zoo(y, order.by = index(x), ...): some methods for "zoo" objects do
## not work if the index entries in 'order.by' are not unique

Filter to remove values that are +/- 2 standard deviations from the rolling median

eos.air<-filter(eos.air, air_temperature <hi.95 & air_temperature >lo.95)

eos.air%>%
  ggplot(aes(x=date, y=air_temperature, color=air_temperature))+
  geom_point(alpha=0.5)+
  labs(title="Air Temperature data from EOS: Failed QC points + +/- 2sd removed",
       subtitle="01/01/2017 - 12/31/2019",
       caption= "data courtesy of CeNCOOS")

Hourly median
For timeAverage function to work, you need a date or POSIXct column named “date” but it needs the timestamp to work so we’ll add it back in. Interval = frequency of data collection, in this case the data was collected every 15 minutes.

#holder title for date column
names(eos.air)[1] <- "datex"
names(eos.air)[2] <- "date"

air.1hr.med<- timeAverage(eos.air,
            avg.time="1 hour",
            data.thresh = 0,
            statistic = "median",
            interval = "6 min",
            remove.calm = FALSE,
            type = "default")
## Warning in checkPrep(mydata, vars, type = "default", remove.calm = FALSE, :
## Detected data with Daylight Saving Time, converting to UTC/GMT
air.1hr.med<-subset(air.1hr.med, select=(-c(median, stdev, hi.95, lo.95)))


eos_air<-air.1hr.med %>% ggplot(aes(x=date, y=air_temperature, color=air_temperature))+
  geom_point(alpha=0.5)+
  labs(title="Hourly median air temperature from EOS",
       subtitle="01/01/2017 - 12/31/2019",
       caption= "data courtesy of CeNCOOS")
eos_air
## Warning: Removed 1592 rows containing missing values (geom_point).

#change back names
names(air.1hr.med)[1] <- "datetime"
names(air.1hr.med)[2] <- "date"

#write csv
write.csv(air.1hr.med, "C:/Users/chels/Box Sync/Thesis/Data/Working data/Bouy data/eos_hourly_med_air.csv")

Air Temperatue Golden Gate Bridge

Read in and set up data

# read in data
gg.air<-read.csv(
      "https://raw.githubusercontent.com/Cmwegener/thesis/master/data/environmental/raw/gg_air.csv",
    header = TRUE
  )

gg.air<-subset(gg.air, select= -c(X))

#format date columns
gg.air$date<-as.POSIXct(gg.air$date, format = c("%m/%d/%Y"))
gg.air$datetime<-as.POSIXct(gg.air$datetime, format = c("%m/%d/%Y %H:%M:%S"))

#graph data
gg.air%>%
  ggplot(aes(x=date, y=air_temp, color=air_temp))+
  geom_point(alpha=0.5)+
  labs(title="Air temperature(C) data from Golden Gate Bridge: all data",
       subtitle="01/01/2017 - 12/31/2019",
       caption= "data courtesy of (?)")

No QC tests available. Remooving data points “999” since that usually is a way of flagging faulty data. Plus air temeprature was never 999C.

gg.air <- filter(gg.air, air_temp != "999")

#graph data
gg.air%>%
  ggplot(aes(x=date, y=air_temp, color=air_temp))+
  geom_point(alpha=0.5)+
  labs(title="Air temperature(C) data from Golden Gate Bridge: 999 removed",
       subtitle="01/01/2017 - 12/31/2019",
       caption= "data courtesy of (?)")

Looks pretty good!

Rolling average 4 hours. This needs a column named “date” with no time stamp in order to work.

gg.air<-
  gg.air%>%
    tq_mutate(
      select= air_temp,
      mutate_fun= rollapply,
      width= 40,
      align= "right",
      by.column= FALSE,
      FUN= custom_stat_fun_2,
      na.rm= TRUE)
## Warning in zoo(y, order.by = index(x), ...): some methods for "zoo" objects do
## not work if the index entries in 'order.by' are not unique

Filter to remove values that are +/- 2 standard deviations from the rolling median

gg.air<-filter(gg.air, air_temp <hi.95 & air_temp >lo.95)

gg.air%>%
  ggplot(aes(x=date, y=air_temp, color=air_temp))+
  geom_point(alpha=0.5)+
  labs(title="Air Temperature data from GG Bridge: Extreme points + +/- 2sd removed",
       subtitle="01/01/2017 - 12/31/2019",
       caption= "data courtesy of (?)")

Hourly median
For timeAverage function to work, you need a date or POSIXct column named “date” but it needs the timestamp to work so we’ll add it back in. Interval = frequency of data collection, in this case the data was collected every 6 minutes.

#holder title for date column
names(gg.air)[2] <- "datex"
names(gg.air)[3] <- "date"

air.1hr.med<- timeAverage(gg.air,
            avg.time="1 hour",
            data.thresh = 0,
            statistic = "median",
            interval = "6 min",
            remove.calm = FALSE,
            type = "default")
## Warning: Missing dates detected, removing 15 lines
## Warning in checkPrep(mydata, vars, type = "default", remove.calm = FALSE, :
## Detected data with Daylight Saving Time, converting to UTC/GMT
air.1hr.med<-subset(air.1hr.med, select=(-c(median, stdev, hi.95, lo.95)))

#changing column names back
names(air.1hr.med)[1] <- "datetime"
names(air.1hr.med)[3] <- "date"

gg_air<-air.1hr.med %>% ggplot(aes(x=date, y=air_temp, color=air_temp))+
  geom_point(alpha=0.5)+
  labs(title="Hourly median air temperature from GG Bridge",
       subtitle="01/01/2017 - 12/31/2019",
       caption= "data courtesy of (?)")
gg_air
## Warning: Removed 1592 rows containing missing values (geom_point).

#write csv
write.csv(air.1hr.med, "C:/Users/chels/Box Sync/Thesis/Data/Working data/Bouy data/gg_hourly_med_air.csv")

####Tides#### Now I need to filter it so that the only air temperature that remains are during low tides (how many meters?)

References: https://lukemiller.org/index.php/2013/05/more-tide-prediction-with-r/
https://www.r-bloggers.com/2016/09/rtide-a-r-package-for-predicting-tide-heights-us-locations-only-currently/

#package
library(rtide)
## Warning: package 'rtide' was built under R version 4.0.5
## rtide is not suitable for navigation
#clear environment
rm(list=ls())
#station I'm using at Point Chauncy 
#SFB1309_1  Point Chauncey, 1.3 mi east of (depth 40 ft), San Francisco Bay, California Current Ref 37.8908° N  122.4188° W

#Couldn't specify just Point Chauncey even though it's listed as a station on the website. The closest is Chevron Pier in Richmond 
#downloaded timestep estimate in 1hr incriments so that I can align it with the hourly median air temeperature data
tide = tide_height(stations="Chevron Oil Company Pier",from = as.Date('2017-01-01'), 
        to = as.Date('2019-12-31'), minutes = 60, tz ='PST8PDT')

#view data
ggplot(data = tide, aes(x = DateTime, y = TideHeight)) + 
        geom_line() 

#Read in hourly median data
eos.air<-read.csv("C:/Users/chels/Box Sync/Thesis/Data/Working data/Bouy data/eos_hourly_med_air.csv", header = TRUE, sep=",", fileEncoding="UTF-8-BOM", stringsAsFactors = FALSE)

gg.air<-read.csv("C:/Users/chels/Box Sync/Thesis/Data/Working data/Bouy data/gg_hourly_med_air.csv", header = TRUE, sep=",", fileEncoding="UTF-8-BOM", stringsAsFactors = FALSE)

#format data
eos.air$date<-as.POSIXct(eos.air$date, format = c("%Y-%m-%d"))
eos.air$datetime<-as.POSIXct(eos.air$datetime, format = c("%Y-%m-%d %H:%M:%S"))

gg.air$date<-as.POSIXct(gg.air$date, format = c("%Y-%m-%d"))
gg.air$datetime<-as.POSIXct(gg.air$datetime, format = c("%Y-%m-%d %H:%M:%S"))




#align hourly median df and tide by datetime
#need same column name to do so
names(tide)[2] <- "datetime"
eos.air.tide<-merge(eos.air, tide, by="datetime", all=TRUE)
gg.air.tide<-merge(gg.air, tide, by="datetime", all=TRUE)

#for some reason there's 8 NA values now at the beginning of the data set for tidal height but this isn't during my survey dates so it should be ok but still odd

#Next I can filter out based on tide height (in meters)
#Not sure what height to do/at what height they're exposed at. I'll get rid of anything greater than 1m for now
#instead of removing, I'm going to replace TideHeight >1 with NA

eos.air.tide$air_temperature[eos.air.tide$TideHeight > 1] <- NA
gg.air.tide$air_temp[gg.air.tide$TideHeight > 1] <- NA

Now I have air temperature only when fucus is exposed (less than 1m, may need to change). Next is to link it with field data.

####Linking with field data####

Read in field and environmental data. The monthly field and environmental summaries have already been calculated and merged. I’m adding air temperature summaries to it. I’m using Golden Gate air temperature for Horseshoe Bay and Brickyard park and EOS data for Point Chauncy and Paradise Cay.

Read in field and enironmental data

field<-
read.csv(
      "https://raw.githubusercontent.com/Cmwegener/thesis/master/data/environment_field/envi.field.noair.csv",
    header = TRUE
  )

pc.cc = paradise cay
nd.eos = point chauncy
by.rb = brickyard park
hs.fp = horseshoe bay

Paradise Cay field work and EOS air.tide

Median air temperature between field surveys

#subset site
pc<-subset(field, field$site == "pc.cc")
pc$date<-as.Date(pc$date, format=c("%Y-%m-%d"))

#Subset air data by dates between surveys
a1<- eos.air[eos.air$date >= "2018-05-14" & eos.air$date < "2018-06-14",]
a2<- eos.air[eos.air$date >= "2018-06-14" & eos.air$date < "2018-07-17",]
a3<- eos.air[eos.air$date >= "2018-07-17" & eos.air$date < "2018-08-07",]
a4<- eos.air[eos.air$date >= "2018-08-07" & eos.air$date < "2018-09-11",]
a5<- eos.air[eos.air$date >= "2018-09-11" & eos.air$date < "2018-12-05",]
a6<- eos.air[eos.air$date >= "2018-12-05" & eos.air$date < "2019-01-30",]
a7<- eos.air[eos.air$date >= "2019-01-30" & eos.air$date < "2019-02-20",]
a8<- eos.air[eos.air$date >= "2019-02-20" & eos.air$date < "2019-03-15",]
a9<- eos.air[eos.air$date >= "2019-03-15" & eos.air$date < "2019-04-11",]
a10<- eos.air[eos.air$date >= "2019-04-11" & eos.air$date < "2019-05-09",]
a11<- eos.air[eos.air$date >= "2019-05-09" & eos.air$date < "2019-06-09",]
a12<- eos.air[eos.air$date >= "2019-06-09" & eos.air$date < "2019-07-21",]
a13<- eos.air[eos.air$date >= "2019-07-21" & eos.air$date < "2019-08-04",]
a14<- eos.air[eos.air$date >= "2019-08-04" & eos.air$date < "2019-09-12",]

#median air temp between field surveys
aa1<-median(a1$air_temperature, na.rm=TRUE)
aa2<-median(a2$air_temperature, na.rm=TRUE)
aa3<-median(a3$air_temperature, na.rm=TRUE)
aa4<-median(a4$air_temperature, na.rm=TRUE)
aa5<-median(a5$air_temperature, na.rm=TRUE)
aa6<-median(a6$air_temperature, na.rm=TRUE)
aa7<-median(a7$air_temperature, na.rm=TRUE)
aa8<-median(a8$air_temperature, na.rm=TRUE)
aa9<-median(a9$air_temperature, na.rm=TRUE)
aa10<-median(a10$air_temperature, na.rm=TRUE)
aa11<-median(a11$air_temperature, na.rm=TRUE)
aa12<-median(a12$air_temperature, na.rm=TRUE)
aa13<-median(a13$air_temperature, na.rm=TRUE)
aa14<-median(a14$air_temperature, na.rm=TRUE)

#string these values to a data frame
pc.mon.air<-list(c('2018-06-14','2018-07-17','2018-08-07', '2018-09-11', '2018-12-05','2019-01-30','2019-02-20',            '2019-03-15','2019-04-11','2019-05-09','2019-06-09','2019-07-21', '2019-08-04','2019-09-12'), c(aa1, aa2, aa3, aa4, aa5, aa6, aa7, aa8, aa9, aa10, aa11, aa12, aa13,aa14))
pc.mon.air<-as.data.frame(pc.mon.air)

#change column names
names(pc.mon.air)[1] <- "date"
names(pc.mon.air)[2] <- "air.temp"
pc.mon.air$date<-as.Date(pc.mon.air$date, format=c("%Y-%m-%d"))

#merge dfs
pc.eos<-merge(pc, pc.mon.air[,c("date", "air.temp")], by="date")

Daily median, range, minimum, and maximum air temperaure

#table summary saved as a df. Finds the daily median and daily max and min values bases on date column
#tried to do daily range here but it didn't seem to work. I'll just take the difference between the max and min columns
eos.daily.sum<-as.data.frame(setDT(eos.air)[, .(max.daily.air = max(air_temperature), min.daily.air = min(air_temperature), daily.med.air=median(air_temperature)), .(date)])

#daily range
eos.daily.sum$daily.air.range<-eos.daily.sum$max.daily.air - eos.daily.sum$min.daily.air

#Daily min 
#subset dates 
a1<- eos.daily.sum[eos.daily.sum$date >= "2018-05-14" & eos.daily.sum$date < "2018-06-14",]
a2<- eos.daily.sum[eos.daily.sum$date >= "2018-06-14" & eos.daily.sum$date < "2018-07-17",]
a3<- eos.daily.sum[eos.daily.sum$date >= "2018-07-17" & eos.daily.sum$date < "2018-08-07",]
a4<- eos.daily.sum[eos.daily.sum$date >= "2018-08-07" & eos.daily.sum$date < "2018-09-11",]
a5<- eos.daily.sum[eos.daily.sum$date >= "2018-09-11" & eos.daily.sum$date < "2018-12-05",]
a6<- eos.daily.sum[eos.daily.sum$date >= "2018-12-05" & eos.daily.sum$date < "2019-01-30",]
a7<- eos.daily.sum[eos.daily.sum$date >= "2019-01-30" & eos.daily.sum$date < "2019-02-20",]
a8<- eos.daily.sum[eos.daily.sum$date >= "2019-02-20" & eos.daily.sum$date < "2019-03-15",]
a9<- eos.daily.sum[eos.daily.sum$date >= "2019-03-15" & eos.daily.sum$date < "2019-04-11",]
a10<- eos.daily.sum[eos.daily.sum$date >= "2019-04-11" & eos.daily.sum$date < "2019-05-09",]
a11<- eos.daily.sum[eos.daily.sum$date >= "2019-05-09" & eos.daily.sum$date < "2019-06-09",]
a12<- eos.daily.sum[eos.daily.sum$date >= "2019-06-09" & eos.daily.sum$date < "2019-07-21",]
a13<- eos.daily.sum[eos.daily.sum$date >= "2019-07-21" & eos.daily.sum$date < "2019-08-04",]
a14<- eos.daily.sum[eos.daily.sum$date >= "2019-08-04" & eos.daily.sum$date < "2019-09-12",]

#median
aa1<-median(a1$min.daily.air, na.rm=TRUE)
aa2<-median(a2$min.daily.air, na.rm=TRUE)
aa3<-median(a3$min.daily.air, na.rm=TRUE)
aa4<-median(a4$min.daily.air, na.rm=TRUE)
aa5<-median(a5$min.daily.air, na.rm=TRUE)
aa6<-median(a6$min.daily.air, na.rm=TRUE)
aa7<-median(a7$min.daily.air, na.rm=TRUE)
aa8<-median(a8$min.daily.air, na.rm=TRUE)
aa9<-median(a9$min.daily.air, na.rm=TRUE)
aa10<-median(a10$min.daily.air, na.rm=TRUE)
aa11<-median(a11$min.daily.air, na.rm=TRUE)
aa12<-median(a12$min.daily.air, na.rm=TRUE)
aa13<-median(a13$min.daily.air, na.rm=TRUE)
aa14<-median(a14$min.daily.air, na.rm=TRUE)

#string these values to a data frame
eos.daily.min.air<-list(c('2018-06-14','2018-07-17','2018-08-07', '2018-09-11', '2018-12-05','2019-01-30','2019-02-20',             '2019-03-15','2019-04-11','2019-05-09','2019-06-09','2019-07-21', '2019-08-04','2019-09-12'), c(aa1, aa2, aa3, aa4, aa5, aa6, aa7, aa8, aa9, aa10, aa11, aa12, aa13,aa14))
eos.daily.min.air<-as.data.frame(eos.daily.min.air)

#change column names
names(eos.daily.min.air)[1] <- "date"
names(eos.daily.min.air)[2] <- "daily.min.air"
eos.daily.min.air$date<-as.Date(eos.daily.min.air$date, format=c("%Y-%m-%d"))

#merge dfs
pc.eos<-merge(pc.eos, eos.daily.min.air[,c("date", "daily.min.air")], by="date")


#Same thing but for daily maximum values
#median 
aa1<-median(a1$max.daily.air, na.rm=TRUE)
aa2<-median(a2$max.daily.air, na.rm=TRUE)
aa3<-median(a3$max.daily.air, na.rm=TRUE)
aa4<-median(a4$max.daily.air, na.rm=TRUE)
aa5<-median(a5$max.daily.air, na.rm=TRUE)
aa6<-median(a6$max.daily.air, na.rm=TRUE)
aa7<-median(a7$max.daily.air, na.rm=TRUE)
aa8<-median(a8$max.daily.air, na.rm=TRUE)
aa9<-median(a9$max.daily.air, na.rm=TRUE)
aa10<-median(a10$max.daily.air, na.rm=TRUE)
aa11<-median(a11$max.daily.air, na.rm=TRUE)
aa12<-median(a12$max.daily.air, na.rm=TRUE)
aa13<-median(a13$max.daily.air, na.rm=TRUE)
aa14<-median(a14$max.daily.air, na.rm=TRUE)

#string these values to a data frame
eos.daily.max.air<-list(c('2018-06-14','2018-07-17','2018-08-07', '2018-09-11', '2018-12-05','2019-01-30','2019-02-20',             '2019-03-15','2019-04-11','2019-05-09','2019-06-09','2019-07-21', '2019-08-04','2019-09-12'), c(aa1, aa2, aa3, aa4, aa5, aa6, aa7, aa8, aa9, aa10, aa11, aa12, aa13,aa14))
eos.daily.max.air<-as.data.frame(eos.daily.max.air)

#change column names
names(eos.daily.max.air)[1] <- "date"
names(eos.daily.max.air)[2] <- "daily.max.air"
eos.daily.max.air$date<-as.Date(eos.daily.max.air$date, format=c("%Y-%m-%d"))

#merge dfs
pc.eos<-merge(pc.eos, eos.daily.max.air[,c("date", "daily.max.air")], by="date")


#daily range
#mean 
aa1<-median(a1$daily.air.range, na.rm=TRUE)
aa2<-median(a2$daily.air.range, na.rm=TRUE)
aa3<-median(a3$daily.air.range, na.rm=TRUE)
aa4<-median(a4$daily.air.range, na.rm=TRUE)
aa5<-median(a5$daily.air.range, na.rm=TRUE)
aa6<-median(a6$daily.air.range, na.rm=TRUE)
aa7<-median(a7$daily.air.range, na.rm=TRUE)
aa8<-median(a8$daily.air.range, na.rm=TRUE)
aa9<-median(a9$daily.air.range, na.rm=TRUE)
aa10<-median(a10$daily.air.range, na.rm=TRUE)
aa11<-median(a11$daily.air.range, na.rm=TRUE)
aa12<-median(a12$daily.air.range, na.rm=TRUE)
aa13<-median(a13$daily.air.range, na.rm=TRUE)
aa14<-median(a14$daily.air.range, na.rm=TRUE)

#string these values to a data frame
eos.daily.air.range<-list(c('2018-06-14','2018-07-17','2018-08-07', '2018-09-11', '2018-12-05','2019-01-30','2019-02-20',           '2019-03-15','2019-04-11','2019-05-09','2019-06-09','2019-07-21', '2019-08-04','2019-09-12'), c(aa1, aa2, aa3, aa4, aa5, aa6, aa7, aa8, aa9, aa10, aa11, aa12, aa13,aa14))
eos.daily.air.range<-as.data.frame(eos.daily.air.range)

#change column names
names(eos.daily.air.range)[1] <- "date"
names(eos.daily.air.range)[2] <- "daily.air.range"
eos.daily.air.range$date<-as.Date(eos.daily.air.range$date, format=c("%Y-%m-%d"))

#merge dfs
pc.eos<-merge(pc.eos, eos.daily.air.range[,c("date", "daily.air.range")], by="date")


#daily median
#mean of these periods (mean of daily means)
aa1<-median(a1$daily.med.air, na.rm=TRUE)
aa2<-median(a2$daily.med.air, na.rm=TRUE)
aa3<-median(a3$daily.med.air, na.rm=TRUE)
aa4<-median(a4$daily.med.air, na.rm=TRUE)
aa5<-median(a5$daily.med.air, na.rm=TRUE)
aa6<-median(a6$daily.med.air, na.rm=TRUE)
aa7<-median(a7$daily.med.air, na.rm=TRUE)
aa8<-median(a8$daily.med.air, na.rm=TRUE)
aa9<-median(a9$daily.med.air, na.rm=TRUE)
aa10<-median(a10$daily.med.air, na.rm=TRUE)
aa11<-median(a11$daily.med.air, na.rm=TRUE)
aa12<-median(a12$daily.med.air, na.rm=TRUE)
aa13<-median(a13$daily.med.air, na.rm=TRUE)
aa14<-median(a14$daily.med.air, na.rm=TRUE)

#string these values to a data frame
eos.daily.med.air<-list(c('2018-06-14','2018-07-17','2018-08-07', '2018-09-11', '2018-12-05','2019-01-30','2019-02-20',             '2019-03-15','2019-04-11','2019-05-09','2019-06-09','2019-07-21', '2019-08-04','2019-09-12'), c(aa1, aa2, aa3, aa4, aa5, aa6, aa7, aa8, aa9, aa10, aa11, aa12, aa13,aa14))
eos.daily.med.air<-as.data.frame(eos.daily.med.air)


#change column names
names(eos.daily.med.air)[1] <- "date"
names(eos.daily.med.air)[2] <- "daily.med.air"
eos.daily.med.air$date<-as.Date(eos.daily.med.air$date, format=c("%Y-%m-%d"))

#merge dfs
pc.eos<-merge(pc.eos, eos.daily.med.air[,c("date", "daily.med.air")], by="date")

Point Chauncy field data and EOS air temp data Median air temperature between field surveys

#subset site
nd<-subset(field, field$site == "nd.eos")
nd$date<-as.Date(nd$date, format=c("%Y-%m-%d"))

#Subset air data by dates between surveys
a1<- eos.air[eos.air$date >= "2018-05-14" & eos.air$date < "2018-06-14",]
a2<- eos.air[eos.air$date >= "2018-06-14" & eos.air$date < "2018-07-17",]
a3<- eos.air[eos.air$date >= "2018-07-17" & eos.air$date < "2018-08-07",]
a4<- eos.air[eos.air$date >= "2018-08-07" & eos.air$date < "2018-09-11",]
a5<- eos.air[eos.air$date >= "2018-09-11" & eos.air$date < "2018-10-10",]
a6<- eos.air[eos.air$date >= "2018-10-10" & eos.air$date < "2018-12-05",]
a7<- eos.air[eos.air$date >= "2018-12-05" & eos.air$date < "2019-01-30",]
a8<- eos.air[eos.air$date >= "2019-01-30" & eos.air$date < "2019-02-20",]
a9<- eos.air[eos.air$date >= "2019-02-20" & eos.air$date < "2019-03-15",]
a10<- eos.air[eos.air$date >= "2019-03-15" & eos.air$date < "2019-04-11",]
a11<- eos.air[eos.air$date >= "2019-04-11" & eos.air$date < "2019-05-09",]
a12<- eos.air[eos.air$date >= "2019-05-09" & eos.air$date < "2019-06-09",]
a13<- eos.air[eos.air$date >= "2019-06-09" & eos.air$date < "2019-07-21",]
a14<- eos.air[eos.air$date >= "2019-07-21" & eos.air$date < "2019-08-04",]
a15<- eos.air[eos.air$date >= "2019-08-04" & eos.air$date < "2019-09-12",]

#median air temp between field surveys
aa1<-median(a1$air_temperature, na.rm=TRUE)
aa2<-median(a2$air_temperature, na.rm=TRUE)
aa3<-median(a3$air_temperature, na.rm=TRUE)
aa4<-median(a4$air_temperature, na.rm=TRUE)
aa5<-median(a5$air_temperature, na.rm=TRUE)
aa6<-median(a6$air_temperature, na.rm=TRUE)
aa7<-median(a7$air_temperature, na.rm=TRUE)
aa8<-median(a8$air_temperature, na.rm=TRUE)
aa9<-median(a9$air_temperature, na.rm=TRUE)
aa10<-median(a10$air_temperature, na.rm=TRUE)
aa11<-median(a11$air_temperature, na.rm=TRUE)
aa12<-median(a12$air_temperature, na.rm=TRUE)
aa13<-median(a13$air_temperature, na.rm=TRUE)
aa14<-median(a14$air_temperature, na.rm=TRUE)
aa15<-median(a15$air_temperature, na.rm=TRUE)


#string these values to a data frame
nd.mon.air<-list(c('2018-06-14','2018-07-17','2018-08-07','2018-09-11','2018-10-10','2018-12-05','2019-01-30','2019-02-20','2019-03-15', '2019-04-11', '2019-05-09', '2019-06-09', '2019-07-21', '2019-08-04', '2019-09-12'), c(aa1, aa2, aa3, aa4, aa5, aa6, aa7, aa8, aa9, aa10, aa11, aa12, aa13, aa14, aa15))
nd.mon.air<-as.data.frame(nd.mon.air)

#change column names
names(nd.mon.air)[1] <- "date"
names(nd.mon.air)[2] <- "air.temp"
nd.mon.air$date<-as.Date(nd.mon.air$date, format=c("%Y-%m-%d"))

#merge dfs
nd.eos<-merge(nd, nd.mon.air[,c("date", "air.temp")], by="date")

Daily median, range, minimum, and maximum air temperaure

#table summary saved as a df. Finds the daily median and daily max and min values bases on date column
#tried to do daily range here but it didn't seem to work. I'll just take the difference between the max and min columns
eos.daily.sum<-as.data.frame(setDT(eos.air)[, .(max.daily.air = max(air_temperature), min.daily.air = min(air_temperature), daily.med.air=median(air_temperature)), .(date)])

#daily range
eos.daily.sum$daily.air.range<-eos.daily.sum$max.daily.air - eos.daily.sum$min.daily.air

#Daily min 
#subset dates 
a1<- eos.daily.sum[eos.daily.sum$date >= "2018-05-14" & eos.daily.sum$date < "2018-06-14",]
a2<- eos.daily.sum[eos.daily.sum$date >= "2018-06-14" & eos.daily.sum$date < "2018-07-17",]
a3<- eos.daily.sum[eos.daily.sum$date >= "2018-07-17" & eos.daily.sum$date < "2018-08-07",]
a4<- eos.daily.sum[eos.daily.sum$date >= "2018-08-07" & eos.daily.sum$date < "2018-09-11",]
a5<- eos.daily.sum[eos.daily.sum$date >= "2018-09-11" & eos.daily.sum$date < "2018-10-10",]
a6<- eos.daily.sum[eos.daily.sum$date >= "2018-10-10" & eos.daily.sum$date < "2018-12-05",]
a7<- eos.daily.sum[eos.daily.sum$date >= "2018-12-05" & eos.daily.sum$date < "2019-01-30",]
a8<- eos.daily.sum[eos.daily.sum$date >= "2019-01-30" & eos.daily.sum$date < "2019-02-20",]
a9<- eos.daily.sum[eos.daily.sum$date >= "2019-02-20" & eos.daily.sum$date < "2019-03-15",]
a10<- eos.daily.sum[eos.daily.sum$date >= "2019-03-15" & eos.daily.sum$date < "2019-04-11",]
a11<- eos.daily.sum[eos.daily.sum$date >= "2019-04-11" & eos.daily.sum$date < "2019-05-09",]
a12<- eos.daily.sum[eos.daily.sum$date >= "2019-05-09" & eos.daily.sum$date < "2019-06-09",]
a13<- eos.daily.sum[eos.daily.sum$date >= "2019-06-09" & eos.daily.sum$date < "2019-07-21",]
a14<- eos.daily.sum[eos.daily.sum$date >= "2019-07-21" & eos.daily.sum$date < "2019-08-04",]
a15<- eos.daily.sum[eos.daily.sum$date >= "2019-08-04" & eos.daily.sum$date < "2019-09-12",]

#median
aa1<-median(a1$min.daily.air, na.rm=TRUE)
aa2<-median(a2$min.daily.air, na.rm=TRUE)
aa3<-median(a3$min.daily.air, na.rm=TRUE)
aa4<-median(a4$min.daily.air, na.rm=TRUE)
aa5<-median(a5$min.daily.air, na.rm=TRUE)
aa6<-median(a6$min.daily.air, na.rm=TRUE)
aa7<-median(a7$min.daily.air, na.rm=TRUE)
aa8<-median(a8$min.daily.air, na.rm=TRUE)
aa9<-median(a9$min.daily.air, na.rm=TRUE)
aa10<-median(a10$min.daily.air, na.rm=TRUE)
aa11<-median(a11$min.daily.air, na.rm=TRUE)
aa12<-median(a12$min.daily.air, na.rm=TRUE)
aa13<-median(a13$min.daily.air, na.rm=TRUE)
aa14<-median(a14$min.daily.air, na.rm=TRUE)
aa15<-median(a15$min.daily.air, na.rm=TRUE)

#string these values to a data frame
eos.daily.min.air<-list(c('2018-06-14','2018-07-17','2018-08-07','2018-09-11','2018-10-10','2018-12-05','2019-01-30','2019-02-20','2019-03-15', '2019-04-11', '2019-05-09', '2019-06-09', '2019-07-21', '2019-08-04', '2019-09-12'), c(aa1, aa2, aa3, aa4, aa5, aa6, aa7, aa8, aa9, aa10, aa11, aa12, aa13, aa14, aa15))
eos.daily.min.air<-as.data.frame(eos.daily.min.air)

#change column names
names(eos.daily.min.air)[1] <- "date"
names(eos.daily.min.air)[2] <- "daily.min.air"
eos.daily.min.air$date<-as.Date(eos.daily.min.air$date, format=c("%Y-%m-%d"))


#merge dfs
nd.eos<-merge(nd.eos, eos.daily.min.air[,c("date", "daily.min.air")], by="date")


#Same thing but for daily maximum values
#median 
aa1<-median(a1$max.daily.air, na.rm=TRUE)
aa2<-median(a2$max.daily.air, na.rm=TRUE)
aa3<-median(a3$max.daily.air, na.rm=TRUE)
aa4<-median(a4$max.daily.air, na.rm=TRUE)
aa5<-median(a5$max.daily.air, na.rm=TRUE)
aa6<-median(a6$max.daily.air, na.rm=TRUE)
aa7<-median(a7$max.daily.air, na.rm=TRUE)
aa8<-median(a8$max.daily.air, na.rm=TRUE)
aa9<-median(a9$max.daily.air, na.rm=TRUE)
aa10<-median(a10$max.daily.air, na.rm=TRUE)
aa11<-median(a11$max.daily.air, na.rm=TRUE)
aa12<-median(a12$max.daily.air, na.rm=TRUE)
aa13<-median(a13$max.daily.air, na.rm=TRUE)
aa14<-median(a14$max.daily.air, na.rm=TRUE)
aa15<-median(a15$max.daily.air, na.rm=TRUE)

#string these values to a data frame
eos.daily.max.air<-list(c('2018-06-14','2018-07-17','2018-08-07','2018-09-11','2018-10-10','2018-12-05','2019-01-30','2019-02-20','2019-03-15', '2019-04-11', '2019-05-09', '2019-06-09', '2019-07-21', '2019-08-04', '2019-09-12'), c(aa1, aa2, aa3, aa4, aa5, aa6, aa7, aa8, aa9, aa10, aa11, aa12, aa13, aa14, aa15))
eos.daily.max.air<-as.data.frame(eos.daily.max.air)

#change column names
names(eos.daily.max.air)[1] <- "date"
names(eos.daily.max.air)[2] <- "daily.max.air"
eos.daily.max.air$date<-as.Date(eos.daily.max.air$date, format=c("%Y-%m-%d"))

#merge dfs
nd.eos<-merge(nd.eos, eos.daily.max.air[,c("date", "daily.max.air")], by="date")


#daily range
#mean 
aa1<-median(a1$daily.air.range, na.rm=TRUE)
aa2<-median(a2$daily.air.range, na.rm=TRUE)
aa3<-median(a3$daily.air.range, na.rm=TRUE)
aa4<-median(a4$daily.air.range, na.rm=TRUE)
aa5<-median(a5$daily.air.range, na.rm=TRUE)
aa6<-median(a6$daily.air.range, na.rm=TRUE)
aa7<-median(a7$daily.air.range, na.rm=TRUE)
aa8<-median(a8$daily.air.range, na.rm=TRUE)
aa9<-median(a9$daily.air.range, na.rm=TRUE)
aa10<-median(a10$daily.air.range, na.rm=TRUE)
aa11<-median(a11$daily.air.range, na.rm=TRUE)
aa12<-median(a12$daily.air.range, na.rm=TRUE)
aa13<-median(a13$daily.air.range, na.rm=TRUE)
aa14<-median(a14$daily.air.range, na.rm=TRUE)
aa15<-median(a15$daily.air.range, na.rm=TRUE)

#string these values to a data frame
eos.daily.air.range<-list(c('2018-06-14','2018-07-17','2018-08-07','2018-09-11','2018-10-10','2018-12-05','2019-01-30','2019-02-20','2019-03-15', '2019-04-11', '2019-05-09', '2019-06-09', '2019-07-21', '2019-08-04', '2019-09-12'), c(aa1, aa2, aa3, aa4, aa5, aa6, aa7, aa8, aa9, aa10, aa11, aa12, aa13, aa14, aa15))
eos.daily.air.range<-as.data.frame(eos.daily.air.range)

#change column names
names(eos.daily.air.range)[1] <- "date"
names(eos.daily.air.range)[2] <- "daily.air.range"
eos.daily.air.range$date<-as.Date(eos.daily.air.range$date, format=c("%Y-%m-%d"))

#merge dfs
nd.eos<-merge(nd.eos, eos.daily.air.range[,c("date", "daily.air.range")], by="date")


#daily median
#mean of these periods (mean of daily means)
aa1<-median(a1$daily.med.air, na.rm=TRUE)
aa2<-median(a2$daily.med.air, na.rm=TRUE)
aa3<-median(a3$daily.med.air, na.rm=TRUE)
aa4<-median(a4$daily.med.air, na.rm=TRUE)
aa5<-median(a5$daily.med.air, na.rm=TRUE)
aa6<-median(a6$daily.med.air, na.rm=TRUE)
aa7<-median(a7$daily.med.air, na.rm=TRUE)
aa8<-median(a8$daily.med.air, na.rm=TRUE)
aa9<-median(a9$daily.med.air, na.rm=TRUE)
aa10<-median(a10$daily.med.air, na.rm=TRUE)
aa11<-median(a11$daily.med.air, na.rm=TRUE)
aa12<-median(a12$daily.med.air, na.rm=TRUE)
aa13<-median(a13$daily.med.air, na.rm=TRUE)
aa14<-median(a14$daily.med.air, na.rm=TRUE)
aa15<-median(a15$daily.air.range, na.rm=TRUE)


#string these values to a data frame
eos.daily.med.air<-list(c('2018-06-14','2018-07-17','2018-08-07','2018-09-11','2018-10-10','2018-12-05','2019-01-30','2019-02-20','2019-03-15', '2019-04-11', '2019-05-09', '2019-06-09', '2019-07-21', '2019-08-04', '2019-09-12'), c(aa1, aa2, aa3, aa4, aa5, aa6, aa7, aa8, aa9, aa10, aa11, aa12, aa13, aa14, aa15))
eos.daily.med.air<-as.data.frame(eos.daily.med.air)


#change column names
names(eos.daily.med.air)[1] <- "date"
names(eos.daily.med.air)[2] <- "daily.med.air"
eos.daily.med.air$date<-as.Date(eos.daily.med.air$date, format=c("%Y-%m-%d"))

#merge dfs
nd.eos<-merge(nd.eos, eos.daily.med.air[,c("date", "daily.med.air")], by="date")

Brickyard Park field data and Golden Gate Bridge Data Median air temperature between field surveys

#subset site
by<-subset(field, field$site == "by.rb")
by$date<-as.Date(by$date, format=c("%Y-%m-%d"))

#Subset air data by dates between surveys
a1<- gg.air[gg.air$date >= "2018-05-15" & gg.air$date < "2018-06-15",]
a2<- gg.air[gg.air$date >= "2018-06-15" & gg.air$date < "2018-07-16",]
a3<- gg.air[gg.air$date >= "2018-07-16" & gg.air$date < "2018-08-06",]
a4<- gg.air[gg.air$date >= "2018-08-06" & gg.air$date < "2018-09-10",]
a5<- gg.air[gg.air$date >= "2018-09-10" & gg.air$date < "2018-10-09",]
a6<- gg.air[gg.air$date >= "2018-10-09" & gg.air$date < "2018-11-06",]
a7<- gg.air[gg.air$date >= "2018-11-06" & gg.air$date < "2018-12-04",]
a8<- gg.air[gg.air$date >= "2018-12-04" & gg.air$date < "2019-01-31",]
a9<- gg.air[gg.air$date >= "2019-01-31" & gg.air$date < "2019-02-21",]
a10<- gg.air[gg.air$date >= "2019-02-21" & gg.air$date < "2019-03-14",]
a11<- gg.air[gg.air$date >= "2019-03-14" & gg.air$date < "2019-04-09",]
a12<- gg.air[gg.air$date >= "2019-04-09" & gg.air$date < "2019-05-08",]
a13<- gg.air[gg.air$date >= "2019-05-08" & gg.air$date < "2019-06-08",]
a14<- gg.air[gg.air$date >= "2019-06-08" & gg.air$date < "2019-07-20",]
a15<- gg.air[gg.air$date >= "2019-07-20" & gg.air$date < "2019-08-04",]
a16<- gg.air[gg.air$date >= "2019-08-04" & gg.air$date < "2019-09-12",]

#median air temp between field surveys
aa1<-median(a1$air_temp, na.rm=TRUE)
aa2<-median(a2$air_temp, na.rm=TRUE)
aa3<-median(a3$air_temp, na.rm=TRUE)
aa4<-median(a4$air_temp, na.rm=TRUE)
aa5<-median(a5$air_temp, na.rm=TRUE)
aa6<-median(a6$air_temp, na.rm=TRUE)
aa7<-median(a7$air_temp, na.rm=TRUE)
aa8<-median(a8$air_temp, na.rm=TRUE)
aa9<-median(a9$air_temp, na.rm=TRUE)
aa10<-median(a10$air_temp, na.rm=TRUE)
aa11<-median(a11$air_temp, na.rm=TRUE)
aa12<-median(a12$air_temp, na.rm=TRUE)
aa13<-median(a13$air_temp, na.rm=TRUE)
aa14<-median(a14$air_temp, na.rm=TRUE)
aa15<-median(a15$air_temp, na.rm=TRUE)
aa16<-median(a16$air_temp, na.rm=TRUE)

#string these values to a data frame
by.mon.air<-list(c('2018-06-15','2018-07-16', '2018-08-06', '2018-09-10', '2018-10-09', '2018-11-06', '2018-12-04', '2019-01-31', '2019-02-21',  '2019-03-14', '2019-04-09', '2019-05-08', '2019-06-08', '2019-07-20', '2019-08-04','2019-09-12'), c(aa1, aa2, aa3, aa4, aa5, aa6, aa7, aa8, aa9, aa10, aa11, aa12, aa13,aa14,aa15,aa16))
by.mon.air<-as.data.frame(by.mon.air)

#change column names
names(by.mon.air)[1] <- "date"
names(by.mon.air)[2] <- "air.temp"
by.mon.air$date<-as.Date(by.mon.air$date, format=c("%Y-%m-%d"))

#merge dfs
by.gg<-merge(by, by.mon.air[,c("date", "air.temp")], by="date")

Daily median, range, minimum, aby maximum air temperaure

#table summary saved as a df. Fibys the daily median aby daily max aby min values bases on date column
#tried to do daily range here but it didn't seem to work. I'll just take the difference between the max aby min columns
gg.daily.sum<-as.data.frame(setDT(gg.air)[, .(max.daily.air = max(air_temp), min.daily.air = min(air_temp), daily.med.air=median(air_temp)), .(date)])

#daily range
gg.daily.sum$daily.air.range<-gg.daily.sum$max.daily.air - gg.daily.sum$min.daily.air

#Daily min 
#subset dates 
a1<- gg.daily.sum[gg.daily.sum$date >= "2018-05-15" & gg.daily.sum$date < "2018-06-15",]
a2<- gg.daily.sum[gg.daily.sum$date >= "2018-06-15" & gg.daily.sum$date < "2018-07-16",]
a3<- gg.daily.sum[gg.daily.sum$date >= "2018-07-16" & gg.daily.sum$date < "2018-08-06",]
a4<- gg.daily.sum[gg.daily.sum$date >= "2018-08-06" & gg.daily.sum$date < "2018-09-10",]
a5<- gg.daily.sum[gg.daily.sum$date >= "2018-09-10" & gg.daily.sum$date < "2018-10-09",]
a6<- gg.daily.sum[gg.daily.sum$date >= "2018-10-09" & gg.daily.sum$date < "2018-11-06",]
a7<- gg.daily.sum[gg.daily.sum$date >= "2018-11-06" & gg.daily.sum$date < "2018-12-04",]
a8<- gg.daily.sum[gg.daily.sum$date >= "2018-12-04" & gg.daily.sum$date < "2019-01-31",]
a9<- gg.daily.sum[gg.daily.sum$date >= "2019-01-31" & gg.daily.sum$date < "2019-02-21",]
a10<- gg.daily.sum[gg.daily.sum$date >= "2019-02-21" & gg.daily.sum$date < "2019-03-14",]
a11<- gg.daily.sum[gg.daily.sum$date >= "2019-03-14" & gg.daily.sum$date < "2019-04-09",]
a12<- gg.daily.sum[gg.daily.sum$date >= "2019-04-09" & gg.daily.sum$date < "2019-05-08",]
a13<- gg.daily.sum[gg.daily.sum$date >= "2019-05-08" & gg.daily.sum$date < "2019-06-08",]
a14<- gg.daily.sum[gg.daily.sum$date >= "2019-06-08" & gg.daily.sum$date < "2019-07-20",]
a15<- gg.daily.sum[gg.daily.sum$date >= "2019-07-20" & gg.daily.sum$date < "2019-08-04",]
a16<- gg.daily.sum[gg.daily.sum$date >= "2019-08-04" & gg.daily.sum$date < "2019-09-12",]

#median
aa1<-median(a1$min.daily.air, na.rm=TRUE)
aa2<-median(a2$min.daily.air, na.rm=TRUE)
aa3<-median(a3$min.daily.air, na.rm=TRUE)
aa4<-median(a4$min.daily.air, na.rm=TRUE)
aa5<-median(a5$min.daily.air, na.rm=TRUE)
aa6<-median(a6$min.daily.air, na.rm=TRUE)
aa7<-median(a7$min.daily.air, na.rm=TRUE)
aa8<-median(a8$min.daily.air, na.rm=TRUE)
aa9<-median(a9$min.daily.air, na.rm=TRUE)
aa10<-median(a10$min.daily.air, na.rm=TRUE)
aa11<-median(a11$min.daily.air, na.rm=TRUE)
aa12<-median(a12$min.daily.air, na.rm=TRUE)
aa13<-median(a13$min.daily.air, na.rm=TRUE)
aa14<-median(a14$min.daily.air, na.rm=TRUE)
aa15<-median(a15$min.daily.air, na.rm=TRUE)
aa16<-median(a16$min.daily.air, na.rm=TRUE)


#string these values to a data frame
gg.daily.min.air<-list(c('2018-06-15','2018-07-16', '2018-08-06', '2018-09-10', '2018-10-09', '2018-11-06', '2018-12-04', '2019-01-31', '2019-02-21',  '2019-03-14', '2019-04-09', '2019-05-08', '2019-06-08', '2019-07-20', '2019-08-04','2019-09-12'), c(aa1, aa2, aa3, aa4, aa5, aa6, aa7, aa8, aa9, aa10, aa11, aa12, aa13,aa14,aa15,aa16))
gg.daily.min.air<-as.data.frame(gg.daily.min.air)

#change column names
names(gg.daily.min.air)[1] <- "date"
names(gg.daily.min.air)[2] <- "daily.min.air"
gg.daily.min.air$date<-as.Date(gg.daily.min.air$date, format=c("%Y-%m-%d"))


#merge dfs
by.gg<-merge(by.gg, gg.daily.min.air[,c("date", "daily.min.air")], by="date")


#Same thing but for daily maximum values
#median 
aa1<-median(a1$max.daily.air, na.rm=TRUE)
aa2<-median(a2$max.daily.air, na.rm=TRUE)
aa3<-median(a3$max.daily.air, na.rm=TRUE)
aa4<-median(a4$max.daily.air, na.rm=TRUE)
aa5<-median(a5$max.daily.air, na.rm=TRUE)
aa6<-median(a6$max.daily.air, na.rm=TRUE)
aa7<-median(a7$max.daily.air, na.rm=TRUE)
aa8<-median(a8$max.daily.air, na.rm=TRUE)
aa9<-median(a9$max.daily.air, na.rm=TRUE)
aa10<-median(a10$max.daily.air, na.rm=TRUE)
aa11<-median(a11$max.daily.air, na.rm=TRUE)
aa12<-median(a12$max.daily.air, na.rm=TRUE)
aa13<-median(a13$max.daily.air, na.rm=TRUE)
aa14<-median(a14$max.daily.air, na.rm=TRUE)
aa15<-median(a15$max.daily.air, na.rm=TRUE)
aa16<-median(a16$max.daily.air, na.rm=TRUE)

#string these values to a data frame
gg.daily.max.air<-list(c('2018-06-15','2018-07-16', '2018-08-06', '2018-09-10', '2018-10-09', '2018-11-06', '2018-12-04', '2019-01-31', '2019-02-21',  '2019-03-14', '2019-04-09', '2019-05-08', '2019-06-08', '2019-07-20', '2019-08-04','2019-09-12'), c(aa1, aa2, aa3, aa4, aa5, aa6, aa7, aa8, aa9, aa10, aa11, aa12, aa13,aa14,aa15,aa16))
gg.daily.max.air<-as.data.frame(gg.daily.max.air)

#change column names
names(gg.daily.max.air)[1] <- "date"
names(gg.daily.max.air)[2] <- "daily.max.air"
gg.daily.max.air$date<-as.Date(gg.daily.max.air$date, format=c("%Y-%m-%d"))

#merge dfs
by.gg<-merge(by.gg, gg.daily.max.air[,c("date", "daily.max.air")], by="date")


#daily range
#mean 
aa1<-median(a1$daily.air.range, na.rm=TRUE)
aa2<-median(a2$daily.air.range, na.rm=TRUE)
aa3<-median(a3$daily.air.range, na.rm=TRUE)
aa4<-median(a4$daily.air.range, na.rm=TRUE)
aa5<-median(a5$daily.air.range, na.rm=TRUE)
aa6<-median(a6$daily.air.range, na.rm=TRUE)
aa7<-median(a7$daily.air.range, na.rm=TRUE)
aa8<-median(a8$daily.air.range, na.rm=TRUE)
aa9<-median(a9$daily.air.range, na.rm=TRUE)
aa10<-median(a10$daily.air.range, na.rm=TRUE)
aa11<-median(a11$daily.air.range, na.rm=TRUE)
aa12<-median(a12$daily.air.range, na.rm=TRUE)
aa13<-median(a13$daily.air.range, na.rm=TRUE)
aa14<-median(a14$daily.air.range, na.rm=TRUE)
aa15<-median(a15$daily.air.range, na.rm=TRUE)
aa16<-median(a16$daily.air.range, na.rm=TRUE)

#string these values to a data frame
gg.daily.air.range<-list(c('2018-06-15','2018-07-16', '2018-08-06', '2018-09-10', '2018-10-09', '2018-11-06', '2018-12-04', '2019-01-31', '2019-02-21',  '2019-03-14', '2019-04-09', '2019-05-08', '2019-06-08', '2019-07-20', '2019-08-04','2019-09-12'), c(aa1, aa2, aa3, aa4, aa5, aa6, aa7, aa8, aa9, aa10, aa11, aa12, aa13,aa14,aa15,aa16))
gg.daily.air.range<-as.data.frame(gg.daily.air.range)

#change column names
names(gg.daily.air.range)[1] <- "date"
names(gg.daily.air.range)[2] <- "daily.air.range"
gg.daily.air.range$date<-as.Date(gg.daily.air.range$date, format=c("%Y-%m-%d"))

#merge dfs
by.gg<-merge(by.gg, gg.daily.air.range[,c("date", "daily.air.range")], by="date")


#daily median
#mean of these periods (mean of daily means)
aa1<-median(a1$daily.med.air, na.rm=TRUE)
aa2<-median(a2$daily.med.air, na.rm=TRUE)
aa3<-median(a3$daily.med.air, na.rm=TRUE)
aa4<-median(a4$daily.med.air, na.rm=TRUE)
aa5<-median(a5$daily.med.air, na.rm=TRUE)
aa6<-median(a6$daily.med.air, na.rm=TRUE)
aa7<-median(a7$daily.med.air, na.rm=TRUE)
aa8<-median(a8$daily.med.air, na.rm=TRUE)
aa9<-median(a9$daily.med.air, na.rm=TRUE)
aa10<-median(a10$daily.med.air, na.rm=TRUE)
aa11<-median(a11$daily.med.air, na.rm=TRUE)
aa12<-median(a12$daily.med.air, na.rm=TRUE)
aa13<-median(a13$daily.med.air, na.rm=TRUE)
aa14<-median(a14$daily.med.air, na.rm=TRUE)
aa15<-median(a15$daily.air.range, na.rm=TRUE)
aa16<-median(a16$daily.air.range, na.rm=TRUE)


#string these values to a data frame
gg.daily.med.air<-list(c('2018-06-15','2018-07-16', '2018-08-06', '2018-09-10', '2018-10-09', '2018-11-06', '2018-12-04', '2019-01-31', '2019-02-21',  '2019-03-14', '2019-04-09', '2019-05-08', '2019-06-08', '2019-07-20', '2019-08-04','2019-09-12'), c(aa1, aa2, aa3, aa4, aa5, aa6, aa7, aa8, aa9, aa10, aa11, aa12, aa13,aa14,aa15,aa16))
gg.daily.med.air<-as.data.frame(gg.daily.med.air)


#change column names
names(gg.daily.med.air)[1] <- "date"
names(gg.daily.med.air)[2] <- "daily.med.air"
gg.daily.med.air$date<-as.Date(gg.daily.med.air$date, format=c("%Y-%m-%d"))

#merge dfs
by.gg<-merge(by.gg, gg.daily.med.air[,c("date", "daily.med.air")], by="date")

Horseshoe Bay field data and Golden Gate Bridge Data Median air temperature between field surveys

#subset site
hs<-subset(field, field$site == "hs.fp")
hs$date<-as.Date(hs$date, format=c("%Y-%m-%d"))

#Subset air data hs dates between surveys
a1<-gg.air[gg.air$date >= "2018-05-15" & gg.air$date < "2018-06-15",]
a2<- gg.air[gg.air$date >= "2018-06-15" & gg.air$date < "2018-07-16",]
a3<- gg.air[gg.air$date >= "2018-07-16" & gg.air$date < "2018-08-06",]
a4<- gg.air[gg.air$date >= "2018-08-06" & gg.air$date < "2018-09-10",]
a5<- gg.air[gg.air$date >= "2018-09-10" & gg.air$date < "2018-10-09",]
a6<- gg.air[gg.air$date >= "2018-10-09" & gg.air$date < "2018-11-06",]
a7<- gg.air[gg.air$date >= "2018-11-06" & gg.air$date < "2018-12-04",]
a8<- gg.air[gg.air$date >= "2018-12-04" & gg.air$date < "2019-01-31",]
a9<- gg.air[gg.air$date >= "2019-01-31" & gg.air$date < "2019-02-21",]
a10<- gg.air[gg.air$date >= "2019-02-21" & gg.air$date < "2019-03-14",]
a11<- gg.air[gg.air$date >= "2019-03-14" & gg.air$date < "2019-04-09",]
a12<- gg.air[gg.air$date >= "2019-04-09" & gg.air$date < "2019-05-08",]
a13<- gg.air[gg.air$date >= "2019-05-08" & gg.air$date < "2019-06-08",]
a14<- gg.air[gg.air$date >= "2019-06-08" & gg.air$date < "2019-07-20",]
a15<- gg.air[gg.air$date >= "2019-07-20" & gg.air$date < "2019-08-04",]
a16<-gg.air[gg.air$date >= "2019-08-04" & gg.air$date < "2019-09-12",]


#median air temp between field surveys
aa1<-median(a1$air_temp, na.rm=TRUE)
aa2<-median(a2$air_temp, na.rm=TRUE)
aa3<-median(a3$air_temp, na.rm=TRUE)
aa4<-median(a4$air_temp, na.rm=TRUE)
aa5<-median(a5$air_temp, na.rm=TRUE)
aa6<-median(a6$air_temp, na.rm=TRUE)
aa7<-median(a7$air_temp, na.rm=TRUE)
aa8<-median(a8$air_temp, na.rm=TRUE)
aa9<-median(a9$air_temp, na.rm=TRUE)
aa10<-median(a10$air_temp, na.rm=TRUE)
aa11<-median(a11$air_temp, na.rm=TRUE)
aa12<-median(a12$air_temp, na.rm=TRUE)
aa13<-median(a13$air_temp, na.rm=TRUE)
aa14<-median(a14$air_temp, na.rm=TRUE)
aa15<-median(a15$air_temp, na.rm=TRUE)
aa16<-median(a16$air_temp, na.rm=TRUE)

#string these values to a data frame
hs.mon.air<-list(c('2018-06-15','2018-07-16', '2018-08-06', '2018-09-10', '2018-10-09', '2018-11-06', '2018-12-04', '2019-01-31', '2019-02-21',  '2019-03-14', '2019-04-09', '2019-05-08', '2019-06-08', '2019-07-20', '2019-08-04','2019-09-12'), c(aa1, aa2, aa3, aa4, aa5, aa6, aa7, aa8, aa9, aa10, aa11, aa12, aa13,aa14,aa15,aa16))
hs.mon.air<-as.data.frame(hs.mon.air)

#change column names
names(hs.mon.air)[1] <- "date"
names(hs.mon.air)[2] <- "air.temp"
hs.mon.air$date<-as.Date(hs.mon.air$date, format=c("%Y-%m-%d"))

#merge dfs
hs.gg<-merge(hs, hs.mon.air[,c("date", "air.temp")], hs="date")

Daily median, range, minimum, ahs maximum air temperaure

#table summary saved as a df. Fihss the daily median ahs daily max ahs min values bases on date column
#tried to do daily range here but it didn't seem to work. I'll just take the difference between the max ahs min columns
gg.daily.sum<-as.data.frame(setDT(gg.air)[, .(max.daily.air = max(air_temp), min.daily.air = min(air_temp), daily.med.air=median(air_temp)), .(date)])

#daily range
gg.daily.sum$daily.air.range<-gg.daily.sum$max.daily.air - gg.daily.sum$min.daily.air

#Daily min 
#subset dates 
a1<-gg.daily.sum[gg.daily.sum$date >= "2018-05-15" & gg.daily.sum$date < "2018-06-15",]
a2<- gg.daily.sum[gg.daily.sum$date >= "2018-06-15" & gg.daily.sum$date < "2018-07-16",]
a3<- gg.daily.sum[gg.daily.sum$date >= "2018-07-16" & gg.daily.sum$date < "2018-08-06",]
a4<- gg.daily.sum[gg.daily.sum$date >= "2018-08-06" & gg.daily.sum$date < "2018-09-10",]
a5<- gg.daily.sum[gg.daily.sum$date >= "2018-09-10" & gg.daily.sum$date < "2018-10-09",]
a6<- gg.daily.sum[gg.daily.sum$date >= "2018-10-09" & gg.daily.sum$date < "2018-11-06",]
a7<- gg.daily.sum[gg.daily.sum$date >= "2018-11-06" & gg.daily.sum$date < "2018-12-04",]
a8<- gg.daily.sum[gg.daily.sum$date >= "2018-12-04" & gg.daily.sum$date < "2019-01-31",]
a9<- gg.daily.sum[gg.daily.sum$date >= "2019-01-31" & gg.daily.sum$date < "2019-02-21",]
a10<- gg.daily.sum[gg.daily.sum$date >= "2019-02-21" & gg.daily.sum$date < "2019-03-14",]
a11<- gg.daily.sum[gg.daily.sum$date >= "2019-03-14" & gg.daily.sum$date < "2019-04-09",]
a12<- gg.daily.sum[gg.daily.sum$date >= "2019-04-09" & gg.daily.sum$date < "2019-05-08",]
a13<- gg.daily.sum[gg.daily.sum$date >= "2019-05-08" & gg.daily.sum$date < "2019-06-08",]
a14<- gg.daily.sum[gg.daily.sum$date >= "2019-06-08" & gg.daily.sum$date < "2019-07-20",]
a15<- gg.daily.sum[gg.daily.sum$date >= "2019-07-20" & gg.daily.sum$date < "2019-08-04",]
a16<-gg.daily.sum[gg.daily.sum$date >= "2019-08-04" & gg.daily.sum$date < "2019-09-12",]

#median
aa1<-median(a1$min.daily.air, na.rm=TRUE)
aa2<-median(a2$min.daily.air, na.rm=TRUE)
aa3<-median(a3$min.daily.air, na.rm=TRUE)
aa4<-median(a4$min.daily.air, na.rm=TRUE)
aa5<-median(a5$min.daily.air, na.rm=TRUE)
aa6<-median(a6$min.daily.air, na.rm=TRUE)
aa7<-median(a7$min.daily.air, na.rm=TRUE)
aa8<-median(a8$min.daily.air, na.rm=TRUE)
aa9<-median(a9$min.daily.air, na.rm=TRUE)
aa10<-median(a10$min.daily.air, na.rm=TRUE)
aa11<-median(a11$min.daily.air, na.rm=TRUE)
aa12<-median(a12$min.daily.air, na.rm=TRUE)
aa13<-median(a13$min.daily.air, na.rm=TRUE)
aa14<-median(a14$min.daily.air, na.rm=TRUE)
aa15<-median(a15$min.daily.air, na.rm=TRUE)
aa16<-median(a16$min.daily.air, na.rm=TRUE)


#string these values to a data frame
gg.daily.min.air<-list(c('2018-06-15','2018-07-16', '2018-08-06', '2018-09-10', '2018-10-09', '2018-11-06', '2018-12-04', '2019-01-31', '2019-02-21',  '2019-03-14', '2019-04-09', '2019-05-08', '2019-06-08', '2019-07-20', '2019-08-04','2019-09-12'), c(aa1, aa2, aa3, aa4, aa5, aa6, aa7, aa8, aa9, aa10, aa11, aa12, aa13,aa14,aa15,aa16))
gg.daily.min.air<-as.data.frame(gg.daily.min.air)

#change column names
names(gg.daily.min.air)[1] <- "date"
names(gg.daily.min.air)[2] <- "daily.min.air"
gg.daily.min.air$date<-as.Date(gg.daily.min.air$date, format=c("%Y-%m-%d"))


#merge dfs
hs.gg<-merge(hs.gg, gg.daily.min.air[,c("date", "daily.min.air")], hs="date")


#Same thing but for daily maximum values
#median 
aa1<-median(a1$max.daily.air, na.rm=TRUE)
aa2<-median(a2$max.daily.air, na.rm=TRUE)
aa3<-median(a3$max.daily.air, na.rm=TRUE)
aa4<-median(a4$max.daily.air, na.rm=TRUE)
aa5<-median(a5$max.daily.air, na.rm=TRUE)
aa6<-median(a6$max.daily.air, na.rm=TRUE)
aa7<-median(a7$max.daily.air, na.rm=TRUE)
aa8<-median(a8$max.daily.air, na.rm=TRUE)
aa9<-median(a9$max.daily.air, na.rm=TRUE)
aa10<-median(a10$max.daily.air, na.rm=TRUE)
aa11<-median(a11$max.daily.air, na.rm=TRUE)
aa12<-median(a12$max.daily.air, na.rm=TRUE)
aa13<-median(a13$max.daily.air, na.rm=TRUE)
aa14<-median(a14$max.daily.air, na.rm=TRUE)
aa15<-median(a15$max.daily.air, na.rm=TRUE)
aa16<-median(a16$max.daily.air, na.rm=TRUE)

#string these values to a data frame
gg.daily.max.air<-list(c('2018-06-15','2018-07-16', '2018-08-06', '2018-09-10', '2018-10-09', '2018-11-06', '2018-12-04', '2019-01-31', '2019-02-21',  '2019-03-14', '2019-04-09', '2019-05-08', '2019-06-08', '2019-07-20', '2019-08-04','2019-09-12'), c(aa1, aa2, aa3, aa4, aa5, aa6, aa7, aa8, aa9, aa10, aa11, aa12, aa13,aa14,aa15,aa16))
gg.daily.max.air<-as.data.frame(gg.daily.max.air)

#change column names
names(gg.daily.max.air)[1] <- "date"
names(gg.daily.max.air)[2] <- "daily.max.air"
gg.daily.max.air$date<-as.Date(gg.daily.max.air$date, format=c("%Y-%m-%d"))

#merge dfs
hs.gg<-merge(hs.gg, gg.daily.max.air[,c("date", "daily.max.air")], hs="date")


#daily range
#mean 
aa1<-median(a1$daily.air.range, na.rm=TRUE)
aa2<-median(a2$daily.air.range, na.rm=TRUE)
aa3<-median(a3$daily.air.range, na.rm=TRUE)
aa4<-median(a4$daily.air.range, na.rm=TRUE)
aa5<-median(a5$daily.air.range, na.rm=TRUE)
aa6<-median(a6$daily.air.range, na.rm=TRUE)
aa7<-median(a7$daily.air.range, na.rm=TRUE)
aa8<-median(a8$daily.air.range, na.rm=TRUE)
aa9<-median(a9$daily.air.range, na.rm=TRUE)
aa10<-median(a10$daily.air.range, na.rm=TRUE)
aa11<-median(a11$daily.air.range, na.rm=TRUE)
aa12<-median(a12$daily.air.range, na.rm=TRUE)
aa13<-median(a13$daily.air.range, na.rm=TRUE)
aa14<-median(a14$daily.air.range, na.rm=TRUE)
aa15<-median(a15$daily.air.range, na.rm=TRUE)
aa16<-median(a16$daily.air.range, na.rm=TRUE)

#string these values to a data frame
gg.daily.air.range<-list(c('2018-06-15','2018-07-16', '2018-08-06', '2018-09-10', '2018-10-09', '2018-11-06', '2018-12-04', '2019-01-31', '2019-02-21',  '2019-03-14', '2019-04-09', '2019-05-08', '2019-06-08', '2019-07-20', '2019-08-04','2019-09-12'), c(aa1, aa2, aa3, aa4, aa5, aa6, aa7, aa8, aa9, aa10, aa11, aa12, aa13,aa14,aa15,aa16))
gg.daily.air.range<-as.data.frame(gg.daily.air.range)

#change column names
names(gg.daily.air.range)[1] <- "date"
names(gg.daily.air.range)[2] <- "daily.air.range"
gg.daily.air.range$date<-as.Date(gg.daily.air.range$date, format=c("%Y-%m-%d"))

#merge dfs
hs.gg<-merge(hs.gg, gg.daily.air.range[,c("date", "daily.air.range")], hs="date")


#daily median
#mean of these periods (mean of daily means)
aa1<-median(a1$daily.med.air, na.rm=TRUE)
aa2<-median(a2$daily.med.air, na.rm=TRUE)
aa3<-median(a3$daily.med.air, na.rm=TRUE)
aa4<-median(a4$daily.med.air, na.rm=TRUE)
aa5<-median(a5$daily.med.air, na.rm=TRUE)
aa6<-median(a6$daily.med.air, na.rm=TRUE)
aa7<-median(a7$daily.med.air, na.rm=TRUE)
aa8<-median(a8$daily.med.air, na.rm=TRUE)
aa9<-median(a9$daily.med.air, na.rm=TRUE)
aa10<-median(a10$daily.med.air, na.rm=TRUE)
aa11<-median(a11$daily.med.air, na.rm=TRUE)
aa12<-median(a12$daily.med.air, na.rm=TRUE)
aa13<-median(a13$daily.med.air, na.rm=TRUE)
aa14<-median(a14$daily.med.air, na.rm=TRUE)
aa15<-median(a15$daily.air.range, na.rm=TRUE)
aa16<-median(a16$daily.air.range, na.rm=TRUE)


#string these values to a data frame
gg.daily.med.air<-list(c('2018-06-15','2018-07-16', '2018-08-06', '2018-09-10', '2018-10-09', '2018-11-06', '2018-12-04', '2019-01-31', '2019-02-21',  '2019-03-14', '2019-04-09', '2019-05-08', '2019-06-08', '2019-07-20', '2019-08-04','2019-09-12'), c(aa1, aa2, aa3, aa4, aa5, aa6, aa7, aa8, aa9, aa10, aa11, aa12, aa13,aa14,aa15,aa16))
gg.daily.med.air<-as.data.frame(gg.daily.med.air)


#change column names
names(gg.daily.med.air)[1] <- "date"
names(gg.daily.med.air)[2] <- "daily.med.air"
gg.daily.med.air$date<-as.Date(gg.daily.med.air$date, format=c("%Y-%m-%d"))

#merge dfs
hs.gg<-merge(hs.gg, gg.daily.med.air[,c("date", "daily.med.air")], hs="date")

####Combine dfs####

#adding site name
pc.eos$site<-"pc.cc"
nd.eos$site<-"nd.eos"
by.gg$site<-"by.rb"
hs.gg$site<-"hs.fp"

#combine
all<-dplyr::bind_rows(pc.eos, nd.eos, by.gg, hs.gg)

#save csv
write.csv(all, "C:/Users/chels/Box Sync/Thesis/Data/Working data/Bouy data/envi.field.all.csv")

final combined df for analysis:https://github.com/Cmwegener/thesis/blob/master/data/environment_field/envi.field.all.csv