##################day time function
daytime<- function(data4=bikedata){
  a<- strptime(data4$Start.Date,format="%d/%m/%Y %R",tz="UTC")
  b<- format(a, "%R")
  Time <- hour(hm(b))
  timeofday <- hour(hm("00:00", "5:00", "12:00", "18:00", "23:59"))
  names <- c("Night", "Morning", "Afternoon", "Evening")
  z<-cut(x=Time, breaks=timeofday, labels=names, include.lowest=TRUE)
  return(z)
}
#######################################################season 
Season <- function(data2) {
  d<- data2$Start.Date
  WS <- as.Date("21/12/2017", format = "%d/%m/%Y") # Winter 
  SE <- as.Date("20/3/2017",  format = "%d/%m/%Y") # Spring 
  SS <- as.Date("21/6/2017",  format = "%d/%m/%Y") # Summer 
  FE <- as.Date("22/9/2017",  format = "%d/%m/%Y") # Autumn
  
  ifelse (d >= WS | d < SE, "Winter",
          ifelse (d >= SE & d < SS, "Spring",
                  ifelse (d >= SS & d < FE, "Summer", "Autumn")))
}
bikedata$Daytime<- daytime(data4=bikedata)
bikedata$Start.Date<- as.Date(strptime(bikedata$Start.Date,
                                              format="%d/%m/%Y %H:%M",tz="UTC"))

bikedata$weekdays<- wday(bikedata$Start.Date,label = T)

bikedata$weekdays<- factor(bikedata$weekdays,ordered = FALSE)

bikedata$season<-as.factor(Season(data2=bikedata))

str(bikedata)
## Classes 'tbl_df', 'tbl' and 'data.frame':    8434530 obs. of  9 variables:
##  $ X1             : chr  "1:1" "1:2" "1:3" "1:4" ...
##  $ Duration       : int  660 660 600 660 600 420 420 480 540 360 ...
##  $ End.Date       : chr  "05/01/2017 07:15" "04/01/2017 16:16" "04/01/2017 07:27" "05/01/2017 16:13" ...
##  $ EndStation.Id  : int  819 217 819 217 819 246 433 162 358 427 ...
##  $ Start.Date     : Date, format: "2017-01-05" "2017-01-04" ...
##  $ StartStation.Id: int  217 819 217 273 217 433 594 246 246 66 ...
##  $ Daytime        : Factor w/ 4 levels "Night","Morning",..: 2 3 2 3 2 4 4 3 3 3 ...
##  $ weekdays       : Factor w/ 7 levels "Sun","Mon","Tues",..: 5 4 4 5 6 5 5 5 4 6 ...
##  $ season         : Factor w/ 4 levels "Autumn","Spring",..: 4 4 4 4 4 4 4 4 4 4 ...
##  - attr(*, "spec")=List of 2
##   ..$ cols   :List of 6
##   .. ..$ X1             : list()
##   .. .. ..- attr(*, "class")= chr  "collector_character" "collector"
##   .. ..$ Duration       : list()
##   .. .. ..- attr(*, "class")= chr  "collector_integer" "collector"
##   .. ..$ End.Date       : list()
##   .. .. ..- attr(*, "class")= chr  "collector_character" "collector"
##   .. ..$ EndStation.Id  : list()
##   .. .. ..- attr(*, "class")= chr  "collector_integer" "collector"
##   .. ..$ Start.Date     : list()
##   .. .. ..- attr(*, "class")= chr  "collector_character" "collector"
##   .. ..$ StartStation.Id: list()
##   .. .. ..- attr(*, "class")= chr  "collector_integer" "collector"
##   ..$ default: list()
##   .. ..- attr(*, "class")= chr  "collector_guess" "collector"
##   ..- attr(*, "class")= chr "col_spec"
head(bikedata,20)
## # A tibble: 20 x 9
##       X1 Duration         End.Date EndStation.Id Start.Date
##    <chr>    <int>            <chr>         <int>     <date>
##  1   1:1      660 05/01/2017 07:15           819 2017-01-05
##  2   1:2      660 04/01/2017 16:16           217 2017-01-04
##  3   1:3      600 04/01/2017 07:27           819 2017-01-04
##  4   1:4      660 05/01/2017 16:13           217 2017-01-05
##  5   1:5      600 06/01/2017 07:26           819 2017-01-06
##  6   1:6      420 05/01/2017 21:12           246 2017-01-05
##  7   1:7      420 05/01/2017 20:52           433 2017-01-05
##  8   1:8      480 05/01/2017 13:08           162 2017-01-05
##  9   1:9      540 04/01/2017 14:31           358 2017-01-04
## 10  1:10      360 06/01/2017 14:07           427 2017-01-06
## 11  1:11      360 06/01/2017 12:46            66 2017-01-06
## 12  1:12      180 04/01/2017 18:16           674 2017-01-04
## 13  1:13      300 06/01/2017 08:51           804 2017-01-06
## 14  1:14      300 05/01/2017 19:43           674 2017-01-05
## 15  1:15      240 06/01/2017 17:09           674 2017-01-06
## 16  1:16      180 06/01/2017 23:39           128 2017-01-06
## 17  1:17      300 06/01/2017 19:13           589 2017-01-06
## 18  1:18      180 05/01/2017 07:53           127 2017-01-05
## 19  1:19      300 04/01/2017 18:16           537 2017-01-04
## 20  1:20      900 04/01/2017 17:54           506 2017-01-04
## # ... with 4 more variables: StartStation.Id <int>, Daytime <fctr>,
## #   weekdays <fctr>, season <fctr>
sjp.frq(bikedata$weekdays)

sjp.frq(bikedata$Daytime)

sjp.frq(bikedata$season)

x<-plyr::count(bikedata,vars = c("Start.Date","Daytime","weekdays","season"))
colnames(x)[5]<- c("ntrips")
bikedata<-join(x,bikedata)
## Joining by: Start.Date, Daytime, weekdays, season
bikedata<- bikedata%>% dplyr::select("Start.Date","Daytime","weekdays","season","ntrips")

head(bikedata,20)
##    Start.Date Daytime weekdays season ntrips
## 1  2017-01-04   Night      Wed Winter    292
## 2  2017-01-04   Night      Wed Winter    292
## 3  2017-01-04   Night      Wed Winter    292
## 4  2017-01-04   Night      Wed Winter    292
## 5  2017-01-04   Night      Wed Winter    292
## 6  2017-01-04   Night      Wed Winter    292
## 7  2017-01-04   Night      Wed Winter    292
## 8  2017-01-04   Night      Wed Winter    292
## 9  2017-01-04   Night      Wed Winter    292
## 10 2017-01-04   Night      Wed Winter    292
## 11 2017-01-04   Night      Wed Winter    292
## 12 2017-01-04   Night      Wed Winter    292
## 13 2017-01-04   Night      Wed Winter    292
## 14 2017-01-04   Night      Wed Winter    292
## 15 2017-01-04   Night      Wed Winter    292
## 16 2017-01-04   Night      Wed Winter    292
## 17 2017-01-04   Night      Wed Winter    292
## 18 2017-01-04   Night      Wed Winter    292
## 19 2017-01-04   Night      Wed Winter    292
## 20 2017-01-04   Night      Wed Winter    292
bikedata<- bikedata[!duplicated(bikedata),]
bikedata<- bikedata%>% dplyr::select("ntrips","weekdays","season","Daytime")


bikedata<- na.omit(bikedata)
str(bikedata)
## 'data.frame':    1148 obs. of  4 variables:
##  $ ntrips  : int  292 9487 9366 2810 325 10244 9752 3029 392 9950 ...
##  $ weekdays: Factor w/ 7 levels "Sun","Mon","Tues",..: 4 4 4 4 5 5 5 5 6 6 ...
##  $ season  : Factor w/ 4 levels "Autumn","Spring",..: 4 4 4 4 4 4 4 4 4 4 ...
##  $ Daytime : Factor w/ 4 levels "Night","Morning",..: 1 2 3 4 1 2 3 4 1 2 ...
head(bikedata,20)
##       ntrips weekdays season   Daytime
## 1        292      Wed Winter     Night
## 293     9487      Wed Winter   Morning
## 9780    9366      Wed Winter Afternoon
## 19146   2810      Wed Winter   Evening
## 21956    325    Thurs Winter     Night
## 22281  10244    Thurs Winter   Morning
## 32525   9752    Thurs Winter Afternoon
## 42277   3029    Thurs Winter   Evening
## 45306    392      Fri Winter     Night
## 45698   9950      Fri Winter   Morning
## 55648   6701      Fri Winter Afternoon
## 62349   1767      Fri Winter   Evening
## 64116    453      Sat Winter     Night
## 64569   4230      Sat Winter   Morning
## 68799   6711      Sat Winter Afternoon
## 75510   2328      Sat Winter   Evening
## 77838    925      Sun Winter     Night
## 78763   4166      Sun Winter   Morning
## 82929   6491      Sun Winter Afternoon
## 89420   1753      Sun Winter   Evening
sjp.frq(bikedata$weekdays)
## Warning: This function will be removed in future versions of sjmisc and
## has been moved to package 'sjlabelled'. Please use sjlabelled::get_labels()
## instead.
## Warning: This function will be removed in future versions of sjmisc and
## has been moved to package 'sjlabelled'. Please use sjlabelled::get_label()
## instead.
## Warning: This function will be removed in future versions of sjmisc and
## has been moved to package 'sjlabelled'. Please use sjlabelled::get_labels()
## instead.

sjp.frq(bikedata$Daytime)
## Warning: This function will be removed in future versions of sjmisc and
## has been moved to package 'sjlabelled'. Please use sjlabelled::get_labels()
## instead.
## Warning: This function will be removed in future versions of sjmisc and
## has been moved to package 'sjlabelled'. Please use sjlabelled::get_label()
## instead.
## Warning: This function will be removed in future versions of sjmisc and
## has been moved to package 'sjlabelled'. Please use sjlabelled::get_labels()
## instead.

sjp.frq(bikedata$season)
## Warning: This function will be removed in future versions of sjmisc and
## has been moved to package 'sjlabelled'. Please use sjlabelled::get_labels()
## instead.
## Warning: This function will be removed in future versions of sjmisc and
## has been moved to package 'sjlabelled'. Please use sjlabelled::get_label()
## instead.
## Warning: This function will be removed in future versions of sjmisc and
## has been moved to package 'sjlabelled'. Please use sjlabelled::get_labels()
## instead.