Read in data and Inspect original values of the last 4 Columns

bikeshare <- read.csv(
  file = "NYC-2016-Summary.csv",
  header = TRUE,
  stringsAsFactors = FALSE
)

str(bikeshare)
## 'data.frame':    276798 obs. of  5 variables:
##  $ duration   : num  13.98 11.43 5.25 12.32 20.88 ...
##  $ month      : int  1 1 1 1 1 1 1 1 1 1 ...
##  $ hour       : int  0 0 0 0 0 0 0 1 1 1 ...
##  $ day_of_week: chr  "Friday" "Friday" "Friday" "Friday" ...
##  $ user_type  : chr  "Customer" "Subscriber" "Subscriber" "Subscriber" ...
unique(bikeshare$month)
##  [1]  1  2  3  4  5  6  7  8  9 10 11 12
unique(bikeshare$hour)
##  [1]  0  1  2  3  4  5  6  7  8  9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
unique(bikeshare$day_of_week)
## [1] "Friday"    "Saturday"  "Sunday"    "Monday"    "Tuesday"   "Wednesday"
## [7] "Thursday"
unique(bikeshare$user_type)
## [1] "Customer"   "Subscriber" ""

Convert month into a Factor with 3-letter Labels and Check

bikeshare$month <- factor(
  bikeshare$month,
  levels = 1:12,
  labels = c(
    "Jan", "Feb", "Mar", "Apr",
    "May", "Jun", "Jul", "Aug",
    "Sep", "Oct", "Nov", "Dec"
  )
)

levels(bikeshare$month)
##  [1] "Jan" "Feb" "Mar" "Apr" "May" "Jun" "Jul" "Aug" "Sep" "Oct" "Nov" "Dec"

Convert Hour to Time of Day and Check

hour_labels <- c(
  "12 AM", "1 AM", "2 AM", "3 AM",
  "4 AM", "5 AM", "6 AM", "7 AM",
  "8 AM", "9 AM", "10 AM", "11 AM",
  "12 PM", "1 PM", "2 PM", "3 PM",
  "4 PM", "5 PM", "6 PM", "7 PM",
  "8 PM", "9 PM", "10 PM", "11 PM"
)

bikeshare$hour <- factor(
  bikeshare$hour,
  levels = 0:23,
  labels = hour_labels
)

levels(bikeshare$hour)
##  [1] "12 AM" "1 AM"  "2 AM"  "3 AM"  "4 AM"  "5 AM"  "6 AM"  "7 AM"  "8 AM" 
## [10] "9 AM"  "10 AM" "11 AM" "12 PM" "1 PM"  "2 PM"  "3 PM"  "4 PM"  "5 PM" 
## [19] "6 PM"  "7 PM"  "8 PM"  "9 PM"  "10 PM" "11 PM"

Convert Day of the Week to Factor and Check

bikeshare$day_of_week <- factor(
  bikeshare$day_of_week,
  levels = c(
    "Monday",
    "Tuesday",
    "Wednesday",
    "Thursday",
    "Friday",
    "Saturday",
    "Sunday"
  )
)

levels(bikeshare$day_of_week)
## [1] "Monday"    "Tuesday"   "Wednesday" "Thursday"  "Friday"    "Saturday" 
## [7] "Sunday"

Convert User Type to Factor and Check

bikeshare$user_type <- factor(
  bikeshare$user_type
)

levels(bikeshare$user_type)
## [1] ""           "Customer"   "Subscriber"
str(bikeshare)
## 'data.frame':    276798 obs. of  5 variables:
##  $ duration   : num  13.98 11.43 5.25 12.32 20.88 ...
##  $ month      : Factor w/ 12 levels "Jan","Feb","Mar",..: 1 1 1 1 1 1 1 1 1 1 ...
##  $ hour       : Factor w/ 24 levels "12 AM","1 AM",..: 1 1 1 1 1 1 1 2 2 2 ...
##  $ day_of_week: Factor w/ 7 levels "Monday","Tuesday",..: 5 5 5 5 5 5 5 5 5 5 ...
##  $ user_type  : Factor w/ 3 levels "","Customer",..: 2 3 3 3 2 3 3 3 3 2 ...