#### SPEED MEASURE
library(data.table)
library(ggplot2)
library(scales)
library(lubridate)
library(dygraphs)
library(dplyr)
library(tidyr)
setwd("C:/Users/subas/Syncplicity/MyProjects_IMP/TxDOT_07035/7035_TMC_All")
tmc_dat= fread("7035_TMC.csv")
tmc_dat= subset(tmc_dat, speed <105)
tmc_dat1= subset(tmc_dat, tmc_code=="112-08977"|tmc_code=="111-08371"|tmc_code=="112+07700"| tmc_code=="112-08496")
dim(tmc_dat1)
## [1] 857077 7
### time
tmc_dat1$ts= ydm_hms(tmc_dat1$measurement_tstamp)
tmc_dat1$date= date(tmc_dat1$measurement_tstamp)
tmc_dat1$year= year(tmc_dat1$measurement_tstamp)
tmc_dat1$year= month(tmc_dat1$measurement_tstamp)
tmc_dat1$day= day(tmc_dat1$measurement_tstamp)
tmc_dat1$wday= wday(tmc_dat1$measurement_tstamp, label = TRUE)
tmc_dat1$hour= hour(tmc_dat1$measurement_tstamp)
tmc_dat1$minute= minute(tmc_dat1$measurement_tstamp)
tmc_dat1$Epoch5=as.integer(tmc_dat1$hour*12+tmc_dat1$minute/5+1)
tmc_dat1$Epoch15=as.integer(ceiling(tmc_dat1$Epoch5/3))
wday1= tmc_dat1 %>% group_by(tmc_code, wday, hour) %>% summarize(Count=n(), Hourly_AvSpd=mean(speed, na.rm=TRUE),
Hourly_StdSpd=sd(speed, na.rm=TRUE))
ggplot(wday1, aes(x=hour, y=Hourly_AvSpd, fill=wday)) +
geom_point(size=.5, alpha = 0.1) +
facet_grid(wday ~.) +geom_smooth(col="black")+
theme(legend.position="none") +theme_bw()

wday2= tmc_dat1 %>% group_by(date) %>% summarize(Count=n(), AvSpd=mean(speed, na.rm=TRUE),
StdSpd=sd(speed, na.rm=TRUE))
head(wday2,24)
## # A tibble: 24 x 4
## date Count AvSpd StdSpd
## <date> <int> <dbl> <dbl>
## 1 2017-01-01 458 65.6 8.28
## 2 2017-01-02 554 66.4 6.60
## 3 2017-01-03 735 65.5 6.70
## 4 2017-01-04 753 65.9 6.97
## 5 2017-01-05 771 65.1 6.96
## 6 2017-01-06 756 64.6 7.15
## 7 2017-01-07 579 65.6 7.07
## 8 2017-01-08 535 65.6 7.84
## 9 2017-01-09 706 66.3 6.55
## 10 2017-01-10 745 65.6 6.34
## # ... with 14 more rows
dygraph(data=data.table::data.table(wday2[c(1, 3)])) %>%
dyRangeSelector()
wday2= tmc_dat1 %>% group_by(hour) %>% summarize(Count=n(), AvSpd=mean(speed, na.rm=TRUE),
StdSpd=sd(speed, na.rm=TRUE))
head(wday2,24)
## # A tibble: 24 x 4
## hour Count AvSpd StdSpd
## <int> <int> <dbl> <dbl>
## 1 0 23445 65.1 7.24
## 2 1 22475 65.1 7.37
## 3 2 23674 64.8 6.95
## 4 3 24049 64.7 6.93
## 5 4 27437 65.1 7.49
## 6 5 33630 65.6 7.53
## 7 6 38669 65.4 7.81
## 8 7 40769 64.7 7.97
## 9 8 43270 64.5 7.73
## 10 9 44210 64.4 7.51
## # ... with 14 more rows
dygraph(data=data.table::data.table(wday2[c(1, 3)])) %>%
dyRangeSelector()
wday2= tmc_dat1 %>% group_by(Epoch5) %>% summarize(Count=n(), AvSpd=mean(speed, na.rm=TRUE),
StdSpd=sd(speed, na.rm=TRUE))
head(wday2,24)
## # A tibble: 24 x 4
## Epoch5 Count AvSpd StdSpd
## <int> <int> <dbl> <dbl>
## 1 1 2015 64.9 7.34
## 2 2 1995 65.2 7.24
## 3 3 1986 65.0 7.67
## 4 4 1978 64.9 7.72
## 5 5 1980 65.1 7.26
## 6 6 1926 65.1 7.10
## 7 7 1977 65.3 6.92
## 8 8 1954 65.1 7.19
## 9 9 1917 65.4 7.29
## 10 10 1919 65.1 6.92
## # ... with 14 more rows
dygraph(data=data.table::data.table(wday2[c(1, 3)])) %>%
dyRangeSelector()
wday2= tmc_dat1 %>% group_by(Epoch15) %>% summarize(Count=n(), AvSpd=mean(speed, na.rm=TRUE),
StdSpd=sd(speed, na.rm=TRUE))
head(wday2,24)
## # A tibble: 24 x 4
## Epoch15 Count AvSpd StdSpd
## <int> <int> <dbl> <dbl>
## 1 1 5996 65.0 7.42
## 2 2 5884 65.0 7.36
## 3 3 5848 65.3 7.14
## 4 4 5717 65.2 7.03
## 5 5 5645 65.0 7.48
## 6 6 5568 65.1 7.37
## 7 7 5644 65.1 7.24
## 8 8 5618 65.1 7.38
## 9 9 5936 64.6 7.22
## 10 10 5930 64.9 6.78
## # ... with 14 more rows
dygraph(data=data.table::data.table(wday2[c(1, 3)])) %>%
dyRangeSelector()
## Warning: package 'xts' was built under R version 3.6.3
## Loading required package: zoo
## Warning: package 'zoo' was built under R version 3.6.2
##
## Attaching package: 'zoo'
## The following objects are masked from 'package:base':
##
## as.Date, as.Date.numeric
##
## Attaching package: 'xts'
## The following objects are masked from 'package:dplyr':
##
## first, last
## The following objects are masked from 'package:data.table':
##
## first, last
wday2= tmc_dat1 %>% group_by(hour, date) %>% summarize(Count=n(), AvSpd=mean(speed, na.rm=TRUE),
StdSpd=sd(speed, na.rm=TRUE))
head(wday2,24)
## # A tibble: 24 x 5
## # Groups: hour [1]
## hour date Count AvSpd StdSpd
## <int> <date> <int> <dbl> <dbl>
## 1 0 2017-01-01 10 67.5 4.93
## 2 0 2017-01-02 14 67.4 4.48
## 3 0 2017-01-03 14 66.4 4.70
## 4 0 2017-01-04 16 70.2 6.53
## 5 0 2017-01-05 25 64.5 6.30
## 6 0 2017-01-06 26 61.7 7.86
## 7 0 2017-01-07 25 66.6 5.61
## 8 0 2017-01-08 15 66 6.11
## 9 0 2017-01-09 16 66.9 5.85
## 10 0 2017-01-10 26 65.7 5.78
## # ... with 14 more rows
dat2 <- spread(wday2[, c(2, 1, 4)],hour, AvSpd)
timeseries <-xts(dat2 , order.by = dat2$date)
dygraph(timeseries) %>%
dyRangeSelector()
wday2= tmc_dat1 %>% group_by(tmc_code, date) %>% summarize(Count=n(), AvSpd=mean(speed, na.rm=TRUE),
StdSpd=sd(speed, na.rm=TRUE))
head(wday2)
## # A tibble: 6 x 5
## # Groups: tmc_code [1]
## tmc_code date Count AvSpd StdSpd
## <chr> <date> <int> <dbl> <dbl>
## 1 111-08371 2017-01-01 159 65.5 5.15
## 2 111-08371 2017-01-02 208 65.7 4.02
## 3 111-08371 2017-01-03 229 66.2 3.94
## 4 111-08371 2017-01-04 261 65.3 4.07
## 5 111-08371 2017-01-05 271 65.0 3.95
## 6 111-08371 2017-01-06 258 64.8 4.58
dat2 <- spread(wday2[, c(2, 1, 4)],tmc_code, AvSpd)
timeseries <-xts(dat2 , order.by = dat2$date)
dygraph(timeseries) %>%
dyRangeSelector()