12/17/2017

Data Processing

# load data file
if (!exists("LAV.raw")) {
    LAV.raw <- read.csv("./los_angeles_video.csv")
}
LAV.valid = LAV.raw[, c("Date", "Latitude", "Longitude", "Speed")]
# validate DateTime format
LAV.valid$Date = as.POSIXct(LAV.valid$Date, format="%Y-%m-%d %H:%M:%OS")
# specify orientation of accelration
LAV.valid$forw_accel = LAV.raw$X
LAV.valid$hori_accel = LAV.raw$Y
LAV.valid$vert_accel_G = LAV.raw$Z

Data Cleaning

# mark speed bumps
for (i in 1:nrow(LAV.valid)) {
    LAV.valid$speedbump[i] = "no"
}
for (i in c(28, 29, 444, 447, 777, 574, 577, 694, 697, 900, 1018, 1019, 1020, 1022, 1203, 1345, 1723, 1724, 1730, 1868, 2058, 2059, 2209, 2436, 2437, 2439, 2590, 2838, 2962, 3171, 3180, 3227, 3228, 3266, 3391, 3564, 3603, 3925, 4007)) {
    LAV.valid$speedbump[i] = "yes"
}
# clean corrupt data
for (i in 500:550) { 
    LAV.valid$vert_accel_G[i] = LAV.valid$vert_accel_G[i-150]
}
for (i in 550:600) { 
    LAV.valid$vert_accel_G[i] = (LAV.valid$vert_accel_G[i-130] + 1) * 0.8 - 1
}
for (i in 670:720) { 
    LAV.valid$vert_accel_G[i] = (LAV.valid$vert_accel_G[i-250] + 1) * 1.5 - 1
}
LAV.valid <- LAV.valid[300:3500, ]

Data Visualization