library(maps)
library(readr)
graphics.off()
rm(list=ls())
malinhead = read.csv(file.path(getwd(),'malin_head.csv'),skip = 1,header=TRUE)
names(malinhead)<-c("lon","lat","time","name","h","flag")
malin.lat <- malinhead$lat[1]
malin.lon <- malinhead$lon[1]
map("world",c("ireland","uk"),fill=TRUE,xlim=c(-12,-4),ylim=c(51,56))
map.axes(cex.axis=1)
title(main="Location of Malin Head Tide Gauge",xlab="Longitude",ylab="Latitude")
points(malin.lon,malin.lat,pch=21,col="gray",bg="red")
text(malin.lon-.5,malin.lat,"Malin.",col="red")
head(malinhead$time)
## [1] 2008-11-13T15:06:00Z 2008-11-13T15:12:00Z 2008-11-13T15:18:00Z
## [4] 2008-11-13T15:24:00Z 2008-11-13T15:30:00Z 2008-11-13T15:36:00Z
## 745330 Levels: 2008-11-13T15:06:00Z ... 2019-02-20T15:50:00Z
malin.time<-as.POSIXlt(malinhead$time, format="%Y-%m-%dT%H:%M:%SZ",tz='UTC')
head(malin.time)
## [1] "2008-11-13 15:06:00 UTC" "2008-11-13 15:12:00 UTC"
## [3] "2008-11-13 15:18:00 UTC" "2008-11-13 15:24:00 UTC"
## [5] "2008-11-13 15:30:00 UTC" "2008-11-13 15:36:00 UTC"
malin <- data.frame("time"=malin.time,
"year"=malin.time$year+1900,
"month"=malin.time$mon+1,
"day"=malin.time$mday,
"hour"=malin.time$hour+1,
"min"=malin.time$min,
"sec"=malin.time$sec,
"h"=malinhead$h,
"flag"=malinhead$flag)
New time series, starting on the hour
head(malin,30)
## time year month day hour min sec h flag
## 1 2008-11-13 15:06:00 2008 11 13 16 6 0 0.348 1
## 2 2008-11-13 15:12:00 2008 11 13 16 12 0 0.434 1
## 3 2008-11-13 15:18:00 2008 11 13 16 18 0 0.532 1
## 4 2008-11-13 15:24:00 2008 11 13 16 24 0 0.638 1
## 5 2008-11-13 15:30:00 2008 11 13 16 30 0 0.701 1
## 6 2008-11-13 15:36:00 2008 11 13 16 36 0 0.758 1
## 7 2008-11-13 15:42:00 2008 11 13 16 42 0 0.847 1
## 8 2008-11-13 15:48:00 2008 11 13 16 48 0 0.927 1
## 9 2008-11-13 15:54:00 2008 11 13 16 54 0 0.955 1
## 10 2008-11-13 16:00:00 2008 11 13 17 0 0 1.066 1
## 11 2008-11-13 16:06:00 2008 11 13 17 6 0 1.131 1
## 12 2008-11-13 16:12:00 2008 11 13 17 12 0 1.223 1
## 13 2008-11-13 16:18:00 2008 11 13 17 18 0 1.239 1
## 14 2008-11-13 16:24:00 2008 11 13 17 24 0 1.334 1
## 15 2008-11-13 16:30:00 2008 11 13 17 30 0 1.356 1
## 16 2008-11-13 16:36:00 2008 11 13 17 36 0 1.448 1
## 17 2008-11-13 16:42:00 2008 11 13 17 42 0 1.496 1
## 18 2008-11-13 16:48:00 2008 11 13 17 48 0 1.547 1
## 19 2008-11-13 16:54:00 2008 11 13 17 54 0 1.563 1
## 20 2008-11-13 17:00:00 2008 11 13 18 0 0 1.585 1
## 21 2008-11-13 17:06:00 2008 11 13 18 6 0 1.645 1
## 22 2008-11-13 17:12:00 2008 11 13 18 12 0 1.643 1
## 23 2008-11-13 17:18:00 2008 11 13 18 18 0 1.706 1
## 24 2008-11-13 17:24:00 2008 11 13 18 24 0 1.736 1
## 25 2008-11-13 17:30:00 2008 11 13 18 30 0 1.743 1
## 26 2008-11-13 17:36:00 2008 11 13 18 36 0 1.749 1
## 27 2008-11-13 17:42:00 2008 11 13 18 42 0 1.782 1
## 28 2008-11-13 17:48:00 2008 11 13 18 48 0 1.790 1
## 29 2008-11-13 17:54:00 2008 11 13 18 54 0 1.786 1
## 30 2008-11-13 18:00:00 2008 11 13 19 0 0 1.755 1
tail(malin,n=11)
## time year month day hour min sec h flag
## 745320 2019-02-20 15:00:00 2019 2 20 16 0 0 -0.709 0
## 745321 2019-02-20 15:05:00 2019 2 20 16 5 0 -0.662 0
## 745322 2019-02-20 15:10:00 2019 2 20 16 10 0 -0.546 0
## 745323 2019-02-20 15:15:00 2019 2 20 16 15 0 -0.538 0
## 745324 2019-02-20 15:20:00 2019 2 20 16 20 0 -0.402 0
## 745325 2019-02-20 15:25:00 2019 2 20 16 25 0 -0.332 0
## 745326 2019-02-20 15:30:00 2019 2 20 16 30 0 -0.221 0
## 745327 2019-02-20 15:35:00 2019 2 20 16 35 0 -0.164 0
## 745328 2019-02-20 15:40:00 2019 2 20 16 40 0 -0.069 0
## 745329 2019-02-20 15:45:00 2019 2 20 16 45 0 -0.003 0
## 745330 2019-02-20 15:50:00 2019 2 20 16 50 0 0.069 0
malin.sub <- malin[10:745320,]
malin.hour <- aggregate(h~hour+day+month+year,malin.sub,mean)
malin.hour <- cbind(malin.hour, NA)
names(malin.hour) <- c("hour","day","month", "year", "h", "time")
malin.hour$time <- as.POSIXlt(sprintf("%s/%s/%s %s",
malin.hour$year, malin.hour$month,
malin.hour$day, malin.hour$hour),
format="%Y/%m/%d %H",tz='UTC')
summary(malin.hour)
## hour day month year
## Min. : 1.00 Min. : 1.00 Min. : 1.000 Min. :2008
## 1st Qu.: 7.00 1st Qu.: 8.00 1st Qu.: 3.000 1st Qu.:2011
## Median :13.00 Median :16.00 Median : 6.000 Median :2013
## Mean :12.51 Mean :15.78 Mean : 6.469 Mean :2013
## 3rd Qu.:19.00 3rd Qu.:23.00 3rd Qu.:10.000 3rd Qu.:2016
## Max. :24.00 Max. :31.00 Max. :12.000 Max. :2019
## h time
## Min. :-2.25990 Min. :2008-11-13 17:00:00
## 1st Qu.:-0.67800 1st Qu.:2011-01-01 09:45:00
## Median : 0.04070 Median :2013-04-11 07:30:00
## Mean : 0.01898 Mean :2013-07-08 01:10:54
## 3rd Qu.: 0.71790 3rd Qu.:2016-05-20 00:15:00
## Max. : 2.70610 Max. :2019-02-20 16:00:00
head(malin.hour)
## hour day month year h time
## 1 17 13 11 2008 1.3403 2008-11-13 17:00:00
## 2 18 13 11 2008 1.7165 2008-11-13 18:00:00
## 3 19 13 11 2008 1.6967 2008-11-13 19:00:00
## 4 20 13 11 2008 1.2760 2008-11-13 20:00:00
## 5 21 13 11 2008 0.5830 2008-11-13 21:00:00
## 6 22 13 11 2008 -0.2266 2008-11-13 22:00:00
tail(malin.hour)
## hour day month year h time
## 74175 11 20 2 2019 -0.435250 2019-02-20 11:00:00
## 74176 12 20 2 2019 -1.201000 2019-02-20 12:00:00
## 74177 13 20 2 2019 -1.613750 2019-02-20 13:00:00
## 74178 14 20 2 2019 -1.599182 2019-02-20 14:00:00
## 74179 15 20 2 2019 -1.169417 2019-02-20 15:00:00
## 74180 16 20 2 2019 -0.709000 2019-02-20 16:00:00
New time series, starting with the first full month and ending with the last.
min(which(malin.hour$year==2008&malin.hour$month==12))
## [1] 417
max(which(malin.hour$year==2019&malin.hour$month==1))
## [1] 73708
malin.sub2 <- malin.hour[417:73708,]
malin.mon <- aggregate(h~month+year,malin.sub2,mean)
malin.mon <- cbind(malin.mon, NA)
names(malin.mon) <- c("month", "year", "h", "time")
malin.mon$time <- as.POSIXlt(sprintf("%s/%s/15", malin.mon$year, malin.mon$month),tz="UTC")
malin.mon <- cbind(malin.mon, NA, NA, NA, NA)
names(malin.mon) <- c("month", "year", "h", "time",
"mhw","mlw","mtl","n")
plot(malin.mon$time, malin.mon$h, type="o", col="red", main="Monthly Tide Gauge", xlab="Years", ylab="Tide")
legend("topleft",
legend=c("Malin Head"),
fill=c("red"), lty=1, lwd=1, bty="n")
install.packages(“devtools”) devtools::install_github(“troyhill/VulnToolkit”, force = TRUE) library(VulnToolkit)
for(j in 1:length(malin.mon\(month)){ ind <- which(malin.hour\)year == malin.mon\(year[j] & malin.hour\)month==malin.mon$month[j])
t <- malin.hour\(time[ind] h <- malin.hour\)h[ind]
hl<-HL(h,t) HL.plot(h,t)
cat(“you are on index”, j, " of “, length(malin.mon\(month), "\n") cat("in ", malin.mon\)year[j],”month = “, malin.mon\(month[j],"\n") cat("you have ", length(hl\)level[hl$tide == “H”]),” high tides“) cat(”you have “, length(hl\(level[hl\)tide ==”L“]),” low tides“)
HH<-hl\(level[hl\)tide == “H”] LL<-hl\(level[hl\)tide == “L”]
question1 <- readline(“Do the numbers of high tides match low (Y/N)”) if(regexpr(question1, ‘y’, ignore.case = TRUE) == 1){ malin.mon\(mhw[j] <- mean(HH) malin.mon\)mlw[j] <- mean(LL) malin.mon\(mtl[j] <- mean(c(HH,LL)) malin.mon\)n[j] <- length(LL) continue = TRUE next } else if (regexpr(question1, ‘n’, ignore.case = TRUE) == 1){ question2 <- readline(“Would you like to cut out a high or a low tide? (h/l/o)”) if(regexpr(question2, ‘h’, ignore.case = TRUE) == 1){ malin.mon\(mhw[j] <- mean(HH[1:(length(HH)-1)]) malin.mon\)mlw[j] <- mean(LL) malin.mon\(mtl[j] <- mean(c(HH[1:(length(HH)-1)],LL)) malin.mon\)n[j] <- length(LL) cat(“in”, malin.mon\(year[j], "month = ", malin.mon\)month[j],“”) cat(“you now have”, length(HH)-1," high tides“) cat(”you now have “, length(LL),” low tides“) continue = TRUE
} else if (regexpr(question2, ‘l’, ignore.case = TRUE) == 1){ malin.mon\(mhw[j] <- mean(HH) malin.mon\)mlw[j] <- mean(LL[1:(length(LL)-1)]) malin.mon\(mtl[j] <- mean(c(LL[1:(length(LL)-1)],HH)) malin.mon\)n[j] <- length(LL) cat(“in”, malin.mon\(year[j], "month = ", malin.mon\)month[j],“”) cat(“you now have”, length(HH)," high tides“) cat(”you now have “, length(LL)-1,” low tides“) continue = TRUE }else {malin.mon\(mhw[j] <- NA malin.mon\)mlw[j] <- NA malin.mon\(mtl[j] <- NA malin.mon\)n[j] <- length(LL)}
} }
write.csv(malin.mon, file="malin_mon.csv")