Replace missing values with NA (doesn't work well with POSIXlt format)

Hi R friends,

I'm a beginner and I really can't find the way to convert all missing values to NA (I'm running it on Kaggle)

I tried the following function :
library(dplyr)
merged_tripdata %>% mutate_all(na_if,"")

But it returns the following error:
Error in mutate():
! Problem while computing started_at = (function (x, y) ....
Caused by error in as.POSIXlt.character():
! character string is not in a standard unambiguous format
Traceback:

I tried it on a specific column
I have selected a specific column , but even there something goes wrong:
merged_tripdata$start_station_name[merged_tripdata$start_station_name == ""] <- NA

But then R even doesn't run the function.

How can I fix this?

Thank you!
Sharon

I would not use scoped variants of dplyr functions since they've been superseded by across. I would probably do what you are trying to do this way:

library(dplyr)

merged_tripdata %>% 
    mutate(
        across(
            .cols = everything(),
            .fns = function(col) {
                na_if(col, "")
            }
        )
    )

If that doesn't work for you, can you please post a sample of your data?

Thank you very much!
I will check it in a few minutes and tell you
Thanks again
Sharon

I have run it now, but got the following error (forgive me, it's long)

Error in mutate():
! Problem while computing ..1 = across(...).
Caused by error in across():
! Problem while computing column started_at.
Caused by error in as.POSIXlt.character():
! character string is not in a standard unambiguous format
Traceback:

  1. merged_tripdata %>% mutate(across(.cols = everything(), .fns = function(col) {
    . na_if(col, "")
    . }))
  2. mutate(., across(.cols = everything(), .fns = function(col) {
    . na_if(col, "")
    . }))
  3. mutate.data.frame(., across(.cols = everything(), .fns = function(col) {
    . na_if(col, "")
    . }))
  4. mutate_cols(.data, dplyr_quosures(...), caller_env = caller_env())
  5. withCallingHandlers({
    . for (i in seq_along(dots)) {
    . context_poke("column", old_current_column)
    . quosures <- expand_across(dots[[i]])
    . quosures_results <- vector(mode = "list", length = length(quosures))
    . for (k in seq_along(quosures)) {
    . quo <- quosures[[k]]
    . quo_data <- attr(quo, "dplyr:::data")
    . if (!is.null(quo_data$column)) {
    . context_poke("column", quo_data$column)
    . }
    . chunks <- NULL
    . result <- NULL
    . if (quo_is_symbol(quo)) {
    . name <- as_string(quo_get_expr(quo))
    . if (name %in% names(new_columns)) {
    . result <- new_columns[[name]]
    . chunks <- mask$resolve(name)
    . }
    . else if (name %in% names(.data)) {
    . result <- .data[[name]]
    . chunks <- mask$resolve(name)
    . }
    . if (inherits(.data, "rowwise_df") && vec_is_list(result)) {
    . sizes <- list_sizes(result)
    . wrong <- which(sizes != 1)
    . if (length(wrong)) {
    . group <- wrong[1L]
    . mask$set_current_group(group)
    . abort(class = c("dplyr:::mutate_incompatible_size",
    . "dplyr:::internal_error"), dplyr_error_data = list(result_size = sizes[group],
    . expected_size = 1))
    . }
    . }
    . }
    . else if (!quo_is_symbolic(quo) && !is.null(quo_get_expr(quo))) {
    . result <- quo_get_expr(quo)
    . result <- withCallingHandlers(vec_recycle(result,
    . vec_size(.data)), error = function(cnd) {
    . abort(class = c("dplyr:::mutate_constant_recycle_error",
    . "dplyr:::internal_error"), constant_size = vec_size(result),
    . data_size = vec_size(.data))
    . })
    . chunks <- vec_chop(result, rows)
    . }
    . if (is.null(chunks)) {
    . if (is.null(quo_data$column)) {
    . chunks <- mask$eval_all_mutate(quo)
    . }
    . else {
    . chunks <- withCallingHandlers(mask$eval_all_mutate(quo),
    . error = function(cnd) {
    . msg <- glue("Problem while computing column {quo_data$name_auto}.")
    . abort(msg, call = call("across"), parent = cnd)
    . })
    . }
    . }
    . if (is.null(chunks)) {
    . next
    . }
    . if (is.null(result)) {
    . if (length(rows) == 1) {
    . result <- chunks[[1]]
    . }
    . else {
    . chunks <- dplyr_vec_cast_common(chunks, quo_data$name_auto)
    . result <- vec_unchop(chunks, rows)
    . }
    . }
    . quosures_results[[k]] <- list(result = result, chunks = chunks)
    . }
    . for (k in seq_along(quosures)) {
    . quo <- quosures[[k]]
    . quo_data <- attr(quo, "dplyr:::data")
    . quo_result <- quosures_results[[k]]
    . if (is.null(quo_result)) {
    . if (quo_data$is_named) {
    . name <- quo_data$name_given
    . new_columns[[name]] <- zap()
    . mask$remove(name)
    . }
    . next
    . }
    . result <- quo_result$result
    . chunks <- quo_result$chunks
    . if (!quo_data$is_named && is.data.frame(result)) {
    . types <- vec_ptype(result)
    . types_names <- names(types)
    . chunks_extracted <- .Call(dplyr_extract_chunks,
    . chunks, types)
    . for (j in seq_along(types)) {
    . mask$add_one(types_names[j], chunks_extracted[[j]],
    . result = result[[j]])
    . }
    . new_columns[types_names] <- result
    . }
    . else {
    . name <- quo_data$name_auto
    . mask$add_one(name = name, chunks = chunks, result = result)
    . new_columns[[name]] <- result
    . }
    . }
    . }
    . }, error = function(e) {
    . local_error_context(dots = dots, .index = i, mask = mask)
    . bullets <- c(cnd_bullet_header("computing"), mutate_bullets(e))
    . abort(bullets, class = "dplyr:::mutate_error", parent = skip_internal_condition(e),
    . bullets = bullets, call = error_call)
    . }, warning = function(w) {
    . if (check_muffled_warning(w)) {
    . maybe_restart("muffleWarning")
    . }
    . local_error_context(dots = dots, .index = i, mask = mask)
    . warn(c(cnd_bullet_header("computing"), i = cnd_header(w),
    . i = cnd_bullet_cur_group_label(what = "warning")))
    . maybe_restart("muffleWarning")
    . })
  6. withCallingHandlers(mask$eval_all_mutate(quo), error = function(cnd) {
    . msg <- glue("Problem while computing column {quo_data$name_auto}.")
    . abort(msg, call = call("across"), parent = cnd)
    . })
  7. mask$eval_all_mutate(quo)
  8. (function (col)
    . {
    . na_if(col, "")
    . })(started_at)
  9. na_if(col, "") # at line 8 of file
  10. [<-(*tmp*, x == y, value = NA)
  11. [<-.POSIXlt(*tmp*, x == y, value = NA)
  12. ==.POSIXt(x, y)
  13. as.POSIXct(e2)
  14. as.POSIXct.default(e2)
  15. as.POSIXct(as.POSIXlt(x, tz, ...), tz, ...)
  16. as.POSIXlt(x, tz, ...)
  17. as.POSIXlt.character(x, tz, ...)
  18. stop("character string is not in a standard unambiguous format")
  19. .handleSimpleError(function (cnd)
    . {
    . msg <- glue("Problem while computing column {quo_data$name_auto}.")
    . abort(msg, call = call("across"), parent = cnd)
    . }, "character string is not in a standard unambiguous format",
    . base::quote(as.POSIXlt.character(x, tz, ...)))
  20. h(simpleError(msg, call))
  21. abort(msg, call = call("across"), parent = cnd)
  22. signal_abort(cnd, .file)
  23. signalCondition(cnd)
  24. (function (e)
    . {
    . local_error_context(dots = dots, .index = i, mask = mask)
    . bullets <- c(cnd_bullet_header("computing"), mutate_bullets(e))
    . abort(bullets, class = "dplyr:::mutate_error", parent = skip_internal_condition(e),
    . bullets = bullets, call = error_call)
    . })(structure(list(message = structure("Problem while computing column started_at.", class = c("glue",
    . "character")), trace = structure(list(call = list(IRkernel::main(),
    . kernel$run(), handle_shell(), executor$execute(msg), tryCatch(evaluate(request$content$code,
    . envir = .GlobalEnv, output_handler = oh, stop_on_error = 1L),
    . interrupt = function(cond) {
    . log_debug("Interrupt during execution")
    . interrupted <<- TRUE
    . }, error = .self$handle_error), tryCatchList(expr, classes,
    . parentenv, handlers), tryCatchOne(tryCatchList(expr,
    . names[-nh], parentenv, handlers[-nh]), names[nh], parentenv,
    . handlers[[nh]]), doTryCatch(return(expr), name, parentenv,
    . handler), tryCatchList(expr, names[-nh], parentenv, handlers[-nh]),
    . tryCatchOne(expr, names, parentenv, handlers[[1L]]), doTryCatch(return(expr),
    . name, parentenv, handler), evaluate(request$content$code,
    . envir = .GlobalEnv, output_handler = oh, stop_on_error = 1L),
    . evaluate_call(expr, parsed$src[[i]], envir = envir, enclos = enclos,
    . debug = debug, last = i == length(out), use_try = stop_on_error !=
    . 2L, keep_warning = keep_warning, keep_message = keep_message,
    . output_handler = output_handler, include_timing = include_timing),
    . timing_fn(handle(ev <- withCallingHandlers(withVisible(eval_with_user_handlers(expr,
    . envir, enclos, user_handlers)), warning = wHandler, error = eHandler,
    . message = mHandler))), handle(ev <- withCallingHandlers(withVisible(eval_with_user_handlers(expr,
    . envir, enclos, user_handlers)), warning = wHandler, error = eHandler,
    . message = mHandler)), try(f, silent = TRUE), tryCatch(expr,
    . error = function(e) {
    . call <- conditionCall(e)
    . if (!is.null(call)) {
    . if (identical(call[[1L]], quote(doTryCatch)))
    . call <- sys.call(-4L)
    . dcall <- deparse(call)[1L]
    . prefix <- paste("Error in", dcall, ": ")
    . LONG <- 75L
    . sm <- strsplit(conditionMessage(e), "\n")[[1L]]
    . w <- 14L + nchar(dcall, type = "w") + nchar(sm[1L],
    . type = "w")
    . if (is.na(w))
    . w <- 14L + nchar(dcall, type = "b") + nchar(sm[1L],
    . type = "b")
    . if (w > LONG)
    . prefix <- paste0(prefix, "\n ")
    . }
    . else prefix <- "Error : "
    . msg <- paste0(prefix, conditionMessage(e), "\n")
    . .Internal(seterrmessage(msg[1L]))
    . if (!silent && isTRUE(getOption("show.error.messages"))) {
    . cat(msg, file = outFile)
    . .Internal(printDeferredWarnings())
    . }
    . invisible(structure(msg, class = "try-error", condition = e))
    . }), tryCatchList(expr, classes, parentenv, handlers),
    . tryCatchOne(expr, names, parentenv, handlers[[1L]]), doTryCatch(return(expr),
    . name, parentenv, handler), withCallingHandlers(withVisible(eval_with_user_handlers(expr,
    . envir, enclos, user_handlers)), warning = wHandler, error = eHandler,
    . message = mHandler), withVisible(eval_with_user_handlers(expr,
    . envir, enclos, user_handlers)), eval_with_user_handlers(expr,
    . envir, enclos, user_handlers), eval(expr, envir, enclos),
    . eval(expr, envir, enclos), merged_tripdata %>% mutate(across(.cols = everything(),
    . .fns = function(col) {
    . na_if(col, "")
    . })), mutate(., across(.cols = everything(), .fns = function(col) {
    . na_if(col, "")
    . })), mutate.data.frame(., across(.cols = everything(), .fns = function(col) {
    . na_if(col, "")
    . })), mutate_cols(.data, dplyr_quosures(...), caller_env = caller_env()),
    . withCallingHandlers({
    . for (i in seq_along(dots)) {
    . context_poke("column", old_current_column)
    . quosures <- expand_across(dots[[i]])
    . quosures_results <- vector(mode = "list", length = length(quosures))
    . for (k in seq_along(quosures)) {
    . quo <- quosures[[k]]
    . quo_data <- attr(quo, "dplyr:::data")
    . if (!is.null(quo_data$column)) {
    . context_poke("column", quo_data$column)
    . }
    . chunks <- NULL
    . result <- NULL
    . if (quo_is_symbol(quo)) {
    . name <- as_string(quo_get_expr(quo))
    . if (name %in% names(new_columns)) {
    . result <- new_columns[[name]]
    . chunks <- mask$resolve(name)
    . }
    . else if (name %in% names(.data)) {
    . result <- .data[[name]]
    . chunks <- mask$resolve(name)
    . }
    . if (inherits(.data, "rowwise_df") && vec_is_list(result)) {
    . sizes <- list_sizes(result)
    . wrong <- which(sizes != 1)
    . if (length(wrong)) {
    . group <- wrong[1L]
    . mask$set_current_group(group)
    . abort(class = c("dplyr:::mutate_incompatible_size",
    . "dplyr:::internal_error"), dplyr_error_data = list(result_size = sizes[group],
    . expected_size = 1))
    . }
    . }
    . }
    . else if (!quo_is_symbolic(quo) && !is.null(quo_get_expr(quo))) {
    . result <- quo_get_expr(quo)
    . result <- withCallingHandlers(vec_recycle(result,
    . vec_size(.data)), error = function(cnd) {
    . abort(class = c("dplyr:::mutate_constant_recycle_error",
    . "dplyr:::internal_error"), constant_size = vec_size(result),
    . data_size = vec_size(.data))
    . })
    . chunks <- vec_chop(result, rows)
    . }
    . if (is.null(chunks)) {
    . if (is.null(quo_data$column)) {
    . chunks <- mask$eval_all_mutate(quo)
    . }
    . else {
    . chunks <- withCallingHandlers(mask$eval_all_mutate(quo),
    . error = function(cnd) {
    . msg <- glue("Problem while computing column {quo_data$name_auto}.")
    . abort(msg, call = call("across"), parent = cnd)
    . })
    . }
    . }
    . if (is.null(chunks)) {
    . next
    . }
    . if (is.null(result)) {
    . if (length(rows) == 1) {
    . result <- chunks[[1]]
    . }
    . else {
    . chunks <- dplyr_vec_cast_common(chunks, quo_data$name_auto)
    . result <- vec_unchop(chunks, rows)
    . }
    . }
    . quosures_results[[k]] <- list(result = result,
    . chunks = chunks)
    . }
    . for (k in seq_along(quosures)) {
    . quo <- quosures[[k]]
    . quo_data <- attr(quo, "dplyr:::data")
    . quo_result <- quosures_results[[k]]
    . if (is.null(quo_result)) {
    . if (quo_data$is_named) {
    . name <- quo_data$name_given
    . new_columns[[name]] <- zap()
    . mask$remove(name)
    . }
    . next
    . }
    . result <- quo_result$result
    . chunks <- quo_result$chunks
    . if (!quo_data$is_named && is.data.frame(result)) {
    . types <- vec_ptype(result)
    . types_names <- names(types)
    . chunks_extracted <- .Call(dplyr_extract_chunks,
    . chunks, types)
    . for (j in seq_along(types)) {
    . mask$add_one(types_names[j], chunks_extracted[[j]],
    . result = result[[j]])
    . }
    . new_columns[types_names] <- result
    . }
    . else {
    . name <- quo_data$name_auto
    . mask$add_one(name = name, chunks = chunks,
    . result = result)
    . new_columns[[name]] <- result
    . }
    . }
    . }
    . }, error = function(e) {
    . local_error_context(dots = dots, .index = i, mask = mask)
    . bullets <- c(cnd_bullet_header("computing"), mutate_bullets(e))
    . abort(bullets, class = "dplyr:::mutate_error", parent = skip_internal_condition(e),
    . bullets = bullets, call = error_call)
    . }, warning = function(w) {
    . if (check_muffled_warning(w)) {
    . maybe_restart("muffleWarning")
    . }
    . local_error_context(dots = dots, .index = i, mask = mask)
    . warn(c(cnd_bullet_header("computing"), i = cnd_header(w),
    . i = cnd_bullet_cur_group_label(what = "warning")))
    . maybe_restart("muffleWarning")
    . }), withCallingHandlers(mask$eval_all_mutate(quo), error = function(cnd) {
    . msg <- glue("Problem while computing column {quo_data$name_auto}.")
    . abort(msg, call = call("across"), parent = cnd)
    . }), mask$eval_all_mutate(quo), <fn>(started_at), na_if(col,
    . ""), [<-(*tmp*, x == y, value = <lgl>), [<-.POSIXlt(*tmp*,
    . x == y, value = <lgl>), ==.POSIXt(x, y), as.POSIXct(e2),
    . as.POSIXct.default(e2), as.POSIXct(as.POSIXlt(x, tz, ...),
    . tz, ...), as.POSIXlt(x, tz, ...), as.POSIXlt.character(x,
    . tz, ...), stop("character string is not in a standard unambiguous format"),
    . .handleSimpleError(<fn>, "character string is not in a standard unambiguous format",
    . base::quote(as.POSIXlt.character(x, tz, ...))), h(simpleError(msg,
    . call)), abort(msg, call = call("across"), parent = cnd)),
    . parent = c(0L, 1L, 2L, 3L, 4L, 5L, 6L, 7L, 6L, 9L, 10L, 4L,
    . 12L, 13L, 13L, 15L, 16L, 17L, 18L, 19L, 13L, 13L, 13L, 23L,
    . 24L, 0L, 0L, 0L, 28L, 29L, 29L, 29L, 0L, 33L, 34L, 34L, 34L,
    . 37L, 37L, 39L, 39L, 39L, 42L, 0L, 44L, 45L), visible = c(TRUE,
    . TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE,
    . TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE,
    . TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE,
    . TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE,
    . TRUE, TRUE, FALSE, FALSE, FALSE), namespace = c("IRkernel",
    . NA, "IRkernel", NA, "base", "base", "base", "base", "base",
    . "base", "base", "evaluate", "evaluate", "evaluate", "evaluate",
    . "base", "base", "base", "base", "base", "base", "base", "evaluate",
    . "base", "base", NA, "dplyr", "dplyr", "dplyr", "base", "base",
    . NA, NA, "dplyr", "base", "base", "lubridate", "base", "base",
    . "base", "base", "base", "base", "base", "dplyr", "rlang"),
    . scope = c("::", NA, "local", NA, "::", "local", "local",
    . "local", "local", "local", "local", "::", ":::", "local",
    . "local", "::", "::", "local", "local", "local", "::", "::",
    . ":::", "::", "::", NA, "::", ":::", ":::", "::", "::", NA,
    . NA, "::", "::", "::", "local", "::", "::", "::", "::", "::",
    . "::", "::", "local", "::")), row.names = c(NA, -46L), version = 2L, class = c("rlang_trace",
    . "rlib_trace", "tbl", "data.frame")), parent = structure(list(
    . message = "character string is not in a standard unambiguous format",
    . call = as.POSIXlt.character(x, tz, ...)), class = c("simpleError",
    . "error", "condition")), call = across(), use_cli_format = TRUE), class = c("rlang_error",
    . "error", "condition")))
  25. abort(bullets, class = "dplyr:::mutate_error", parent = skip_internal_condition(e),
    . bullets = bullets, call = error_call)
  26. signal_abort(cnd, .file)

Head(df) or str(df) is good?
it a huge dataset...

dput(head(df, 100)) is usually sufficient.

Thank you!

structure(list(ride_id = c("C2F7DD78E82EC875", "A6CF8980A652D272",
"BD0F91DFF741C66D", "CBB80ED419105406", "DDC963BFDDA51EEA", "A39C6F6CC0586C0B",
"BDC4AB637EDF981B", "81751A3186E59A6B", "154222B86A338ABD", "72DC25B2DD467EEF",
"F20394FE09C63DB2", "006D3F363CF9600B", "FB258EEBE89F4E17", "2EF51270B08DEE03",
"E119D4E6BF686601", "7DD70C4AA0F3EA7B", "0AA241497B970400", "F5E6D97D85BE8039",
"78168928DF06A497", "15C176B55C2BC059", "12D2B5AA545EF922", "1A185AF405E7B2DB",
"9D4AAF43A011FC59", "A209F8E0E84D49B4", "6D6B462903DCB23F", "DC809CD3B3F3BFC9",
"1C2362DAD4090D8A", "AB4032C2B151D137", "E6B6D4531ADC9F52", "81B423963BA2C10C",
"EC80F318604595AE", "80F0735AD7F23AD9", "59E50C91451F529C", "2A23ED3FECB72E5B",
"88543D9BC6760955", "E38E5318BDBC139A", "A184D11FDF48937A", "1EFB6377FE801DEF",
"0A5CD4848EB8CFE8", "74D8B5BC10B9E223", "3C07A7C383512251", "40C9DFE4CFB178A3",
"04EC503AB7123CCE", "ABA3DE288B9D9A10", "007070F5088EB3C0", "7117CF2AEFF29287",
"A3DCFB423064F830", "145739172978E774", "1EBF95B25BB5091A", "060598F8DA7E017B",
"9A7CC85A0C99CD19", "4498EE1461DCF780", "ED582A16A84658F3", "E65FE8D6EF398BAF",
"96EE9C6CBAB01FF5", "4C82D05AEAB243A2", "1060D99FAF5F5479", "9946705113D42A72",
"34C7E20D7F43EC1C", "4E79B5C58A342D04", "3505407FC37505BB", "E4C578629FD75DE6",
"DE75C65E97762100", "F26E4F5F00769CB6", "91DF55B30E0F8F30", "3D340D186F24FFA2",
"AAD4F48B225F73CD", "1D42868A4784FC60", "38A42898ED51CB39", "15D6F84CCB902A27"
), rideable_type = c("electric_bike", "electric_bike", "classic_bike",
"classic_bike", "classic_bike", "classic_bike", "classic_bike",
"classic_bike", "electric_bike", "classic_bike", "classic_bike",
"electric_bike", "classic_bike", "classic_bike", "electric_bike",
"classic_bike", "classic_bike", "classic_bike", "classic_bike",
"classic_bike", "classic_bike", "classic_bike", "electric_bike",
"classic_bike", "electric_bike", "classic_bike", "electric_bike",
"classic_bike", "classic_bike", "classic_bike", "electric_bike",
"electric_bike", "classic_bike", "electric_bike", "classic_bike",
"classic_bike", "classic_bike", "classic_bike", "electric_bike",
"classic_bike", "classic_bike", "classic_bike", "classic_bike",
"classic_bike", "classic_bike", "classic_bike", "classic_bike",
"classic_bike", "classic_bike", "classic_bike", "classic_bike",
"classic_bike", "electric_bike", "electric_bike", "classic_bike",
"classic_bike", "electric_bike", "electric_bike", "electric_bike",
"classic_bike", "classic_bike", "electric_bike", "classic_bike",
"electric_bike", "classic_bike", "classic_bike", "classic_bike",
"electric_bike", "classic_bike", "electric_bike"), started_at = structure(list(
sec = c(47, 56, 40, 4, 10, 9, 52, 2, 41, 53, 59, 43, 18,
6, 40, 7, 13, 45, 59, 40, 37, 10, 16, 24, 21, 32, 42, 30,
15, 53, 41, 46, 14, 14, 38, 2, 28, 53, 48, 28, 21, 41, 10,
49, 39, 30, 40, 21, 26, 41, 2, 13, 28, 57, 18, 24, 20, 38,
35, 12, 40, 21, 55, 35, 47, 45, 46, 0, 24, 38), min = c(59L,
41L, 53L, 18L, 31L, 48L, 32L, 20L, 34L, 27L, 27L, 30L, 56L,
3L, 36L, 47L, 9L, 7L, 21L, 0L, 19L, 47L, 3L, 46L, 44L, 14L,
12L, 58L, 41L, 15L, 54L, 52L, 58L, 52L, 14L, 41L, 39L, 29L,
32L, 31L, 8L, 56L, 33L, 49L, 16L, 39L, 5L, 54L, 53L, 53L,
59L, 43L, 21L, 5L, 40L, 52L, 29L, 48L, 28L, 59L, 58L, 41L,
36L, 32L, 39L, 57L, 2L, 8L, 17L, 0L), hour = c(11L, 8L, 4L,
0L, 1L, 18L, 18L, 12L, 7L, 15L, 18L, 12L, 17L, 22L, 5L, 5L,
14L, 12L, 17L, 21L, 15L, 12L, 8L, 14L, 6L, 15L, 0L, 18L,
17L, 10L, 17L, 17L, 11L, 12L, 10L, 16L, 16L, 6L, 22L, 12L,
15L, 16L, 15L, 9L, 9L, 16L, 16L, 12L, 10L, 15L, 19L, 10L,
7L, 14L, 11L, 8L, 10L, 21L, 12L, 16L, 12L, 0L, 16L, 10L,
11L, 10L, 12L, 14L, 23L, 10L), mday = c(13L, 10L, 25L, 4L,
20L, 11L, 30L, 22L, 17L, 28L, 11L, 29L, 2L, 20L, 8L, 14L,
12L, 31L, 28L, 19L, 24L, 13L, 18L, 25L, 10L, 22L, 3L, 31L,
15L, 24L, 27L, 18L, 27L, 15L, 14L, 13L, 12L, 29L, 12L, 19L,
4L, 20L, 22L, 12L, 4L, 19L, 2L, 13L, 17L, 26L, 31L, 11L,
4L, 31L, 3L, 28L, 22L, 27L, 1L, 15L, 1L, 1L, 13L, 8L, 8L,
5L, 8L, 4L, 12L, 5L), mon = c(0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L), year = c(122L, 122L, 122L, 122L, 122L, 122L,
122L, 122L, 122L, 122L, 122L, 122L, 122L, 122L, 122L, 122L,
122L, 122L, 122L, 122L, 122L, 122L, 122L, 122L, 122L, 122L,
122L, 122L, 122L, 122L, 122L, 122L, 122L, 122L, 122L, 122L,
122L, 122L, 122L, 122L, 122L, 122L, 122L, 122L, 122L, 122L,
122L, 122L, 122L, 122L, 122L, 122L, 122L, 122L, 122L, 122L,
122L, 122L, 122L, 122L, 122L, 122L, 122L, 122L, 122L, 122L,
122L, 122L, 122L, 122L), wday = c(4L, 1L, 2L, 2L, 4L, 2L,
0L, 6L, 1L, 5L, 2L, 6L, 0L, 4L, 6L, 5L, 3L, 1L, 5L, 3L, 1L,
4L, 2L, 2L, 1L, 6L, 1L, 1L, 6L, 1L, 4L, 2L, 4L, 6L, 5L, 4L,
3L, 6L, 3L, 3L, 2L, 4L, 6L, 3L, 2L, 3L, 0L, 4L, 1L, 3L, 1L,
2L, 2L, 1L, 1L, 5L, 6L, 4L, 6L, 6L, 6L, 6L, 4L, 6L, 6L, 3L,
6L, 2L, 3L, 3L), yday = c(12L, 9L, 24L, 3L, 19L, 10L, 29L,
21L, 16L, 27L, 10L, 28L, 1L, 19L, 7L, 13L, 11L, 30L, 27L,
18L, 23L, 12L, 17L, 24L, 9L, 21L, 2L, 30L, 14L, 23L, 26L,
17L, 26L, 14L, 13L, 12L, 11L, 28L, 11L, 18L, 3L, 19L, 21L,
11L, 3L, 18L, 1L, 12L, 16L, 25L, 30L, 10L, 3L, 30L, 2L, 27L,
21L, 26L, 0L, 14L, 0L, 0L, 12L, 7L, 7L, 4L, 7L, 3L, 11L,
4L), isdst = c(0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L),
zone = c("UTC", "UTC", "UTC", "UTC", "UTC", "UTC", "UTC",
"UTC", "UTC", "UTC", "UTC", "UTC", "UTC", "UTC", "UTC", "UTC",
"UTC", "UTC", "UTC", "UTC", "UTC", "UTC", "UTC", "UTC", "UTC",
"UTC", "UTC", "UTC", "UTC", "UTC", "UTC", "UTC", "UTC", "UTC",
"UTC", "UTC", "UTC", "UTC", "UTC", "UTC", "UTC", "UTC", "UTC",
"UTC", "UTC", "UTC", "UTC", "UTC", "UTC", "UTC", "UTC", "UTC",
"UTC", "UTC", "UTC", "UTC", "UTC", "UTC", "UTC", "UTC", "UTC",
"UTC", "UTC", "UTC", "UTC", "UTC", "UTC", "UTC", "UTC", "UTC"
), gmtoff = c(NA_integer_, NA_integer_, NA_integer_, NA_integer_,
NA_integer_, NA_integer_, NA_integer_, NA_integer_, NA_integer_,
NA_integer_, NA_integer_, NA_integer_, NA_integer_, NA_integer_,
NA_integer_, NA_integer_, NA_integer_, NA_integer_, NA_integer_,
NA_integer_, NA_integer_, NA_integer_, NA_integer_, NA_integer_,
NA_integer_, NA_integer_, NA_integer_, NA_integer_, NA_integer_,
NA_integer_, NA_integer_, NA_integer_, NA_integer_, NA_integer_,
NA_integer_, NA_integer_, NA_integer_, NA_integer_, NA_integer_,
NA_integer_, NA_integer_, NA_integer_, NA_integer_, NA_integer_,
NA_integer_, NA_integer_, NA_integer_, NA_integer_, NA_integer_,
NA_integer_, NA_integer_, NA_integer_, NA_integer_, NA_integer_,
NA_integer_, NA_integer_, NA_integer_, NA_integer_, NA_integer_,
NA_integer_, NA_integer_, NA_integer_, NA_integer_, NA_integer_,
NA_integer_, NA_integer_, NA_integer_, NA_integer_, NA_integer_,
NA_integer_)), class = c("POSIXlt", "POSIXt"), tzone = c("Etc/UTC",
"UTC", "UTC")), ended_at = structure(list(sec = c(44, 17, 1,
0, 12, 31, 26, 6, 8, 16, 20, 4, 38, 59, 40, 39, 53, 48, 54, 56,
27, 20, 0, 27, 28, 21, 50, 17, 54, 53, 24, 40, 43, 42, 7, 49,
0, 32, 56, 8, 6, 38, 54, 50, 27, 41, 5, 50, 48, 12, 53, 14, 36,
49, 41, 33, 37, 44, 41, 5, 35, 30, 14, 6, 58, 45, 0, 13, 55,
17), min = c(2L, 46L, 58L, 33L, 37L, 51L, 49L, 32L, 0L, 35L,
34L, 43L, 5L, 9L, 46L, 47L, 10L, 12L, 26L, 9L, 45L, 10L, 8L,
0L, 51L, 25L, 17L, 5L, 48L, 39L, 5L, 18L, 7L, 59L, 27L, 55L,
53L, 32L, 41L, 34L, 11L, 13L, 48L, 28L, 24L, 46L, 19L, 58L, 5L,
55L, 5L, 49L, 34L, 14L, 46L, 8L, 39L, 55L, 33L, 7L, 7L, 57L,
41L, 43L, 59L, 3L, 7L, 19L, 30L, 2L), hour = c(12L, 8L, 4L, 0L,
1L, 18L, 18L, 12L, 8L, 15L, 18L, 12L, 18L, 22L, 5L, 5L, 14L,
12L, 17L, 21L, 15L, 13L, 8L, 15L, 6L, 15L, 0L, 19L, 17L, 10L,
18L, 18L, 12L, 12L, 10L, 16L, 16L, 6L, 22L, 12L, 15L, 17L, 15L,
10L, 9L, 16L, 16L, 12L, 11L, 15L, 20L, 10L, 7L, 14L, 11L, 9L,
10L, 21L, 12L, 17L, 13L, 0L, 16L, 10L, 11L, 11L, 12L, 14L, 23L,
10L), mday = c(13L, 10L, 25L, 4L, 20L, 11L, 30L, 22L, 17L, 28L,
11L, 29L, 2L, 20L, 8L, 14L, 12L, 31L, 28L, 19L, 24L, 13L, 18L,
25L, 10L, 22L, 3L, 31L, 15L, 24L, 27L, 18L, 27L, 15L, 14L, 13L,
12L, 29L, 12L, 19L, 4L, 20L, 22L, 12L, 4L, 19L, 2L, 13L, 17L,
26L, 31L, 11L, 4L, 31L, 3L, 28L, 22L, 27L, 1L, 15L, 1L, 1L, 13L,
8L, 8L, 5L, 8L, 4L, 12L, 5L), mon = c(0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L
), year = c(122L, 122L, 122L, 122L, 122L, 122L, 122L, 122L, 122L,
122L, 122L, 122L, 122L, 122L, 122L, 122L, 122L, 122L, 122L, 122L,
122L, 122L, 122L, 122L, 122L, 122L, 122L, 122L, 122L, 122L, 122L,
122L, 122L, 122L, 122L, 122L, 122L, 122L, 122L, 122L, 122L, 122L,
122L, 122L, 122L, 122L, 122L, 122L, 122L, 122L, 122L, 122L, 122L,
122L, 122L, 122L, 122L, 122L, 122L, 122L, 122L, 122L, 122L, 122L,
122L, 122L, 122L, 122L, 122L, 122L), wday = c(4L, 1L, 2L, 2L,
4L, 2L, 0L, 6L, 1L, 5L, 2L, 6L, 0L, 4L, 6L, 5L, 3L, 1L, 5L, 3L,
1L, 4L, 2L, 2L, 1L, 6L, 1L, 1L, 6L, 1L, 4L, 2L, 4L, 6L, 5L, 4L,
3L, 6L, 3L, 3L, 2L, 4L, 6L, 3L, 2L, 3L, 0L, 4L, 1L, 3L, 1L, 2L,
2L, 1L, 1L, 5L, 6L, 4L, 6L, 6L, 6L, 6L, 4L, 6L, 6L, 3L, 6L, 2L,
3L, 3L), yday = c(12L, 9L, 24L, 3L, 19L, 10L, 29L, 21L, 16L,
27L, 10L, 28L, 1L, 19L, 7L, 13L, 11L, 30L, 27L, 18L, 23L, 12L,
17L, 24L, 9L, 21L, 2L, 30L, 14L, 23L, 26L, 17L, 26L, 14L, 13L,
12L, 11L, 28L, 11L, 18L, 3L, 19L, 21L, 11L, 3L, 18L, 1L, 12L,
16L, 25L, 30L, 10L, 3L, 30L, 2L, 27L, 21L, 26L, 0L, 14L, 0L,
0L, 12L, 7L, 7L, 4L, 7L, 3L, 11L, 4L), isdst = c(0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L), zone = c("UTC", "UTC", "UTC", "UTC", "UTC", "UTC",
"UTC", "UTC", "UTC", "UTC", "UTC", "UTC", "UTC", "UTC", "UTC",
"UTC", "UTC", "UTC", "UTC", "UTC", "UTC", "UTC", "UTC", "UTC",
"UTC", "UTC", "UTC", "UTC", "UTC", "UTC", "UTC", "UTC", "UTC",
"UTC", "UTC", "UTC", "UTC", "UTC", "UTC", "UTC", "UTC", "UTC",
"UTC", "UTC", "UTC", "UTC", "UTC", "UTC", "UTC", "UTC", "UTC",
"UTC", "UTC", "UTC", "UTC", "UTC", "UTC", "UTC", "UTC", "UTC",
"UTC", "UTC", "UTC", "UTC", "UTC", "UTC", "UTC", "UTC", "UTC",
"UTC"), gmtoff = c(NA_integer_, NA_integer_, NA_integer_, NA_integer_,
NA_integer_, NA_integer_, NA_integer_, NA_integer_, NA_integer_,
NA_integer_, NA_integer_, NA_integer_, NA_integer_, NA_integer_,
NA_integer_, NA_integer_, NA_integer_, NA_integer_, NA_integer_,
NA_integer_, NA_integer_, NA_integer_, NA_integer_, NA_integer_,
NA_integer_, NA_integer_, NA_integer_, NA_integer_, NA_integer_,
NA_integer_, NA_integer_, NA_integer_, NA_integer_, NA_integer_,
NA_integer_, NA_integer_, NA_integer_, NA_integer_, NA_integer_,
NA_integer_, NA_integer_, NA_integer_, NA_integer_, NA_integer_,
NA_integer_, NA_integer_, NA_integer_, NA_integer_, NA_integer_,
NA_integer_, NA_integer_, NA_integer_, NA_integer_, NA_integer_,
NA_integer_, NA_integer_, NA_integer_, NA_integer_, NA_integer_,
NA_integer_, NA_integer_, NA_integer_, NA_integer_, NA_integer_,
NA_integer_, NA_integer_, NA_integer_, NA_integer_, NA_integer_,
NA_integer_)), class = c("POSIXlt", "POSIXt"), tzone = c("Etc/UTC",
"UTC", "UTC")), start_station_name = c("Glenwood Ave & Touhy Ave",
"Glenwood Ave & Touhy Ave", "Sheffield Ave & Fullerton Ave",
"Clark St & Bryn Mawr Ave", "Michigan Ave & Jackson Blvd", "Wood St & Chicago Ave",
"Oakley Ave & Irving Park Rd", "Sheffield Ave & Fullerton Ave",
"Racine Ave & 15th St", "LaSalle St & Jackson Blvd", "LaSalle St & Jackson Blvd",
"Clarendon Ave & Leland Ave", "Sheffield Ave & Fullerton Ave",
"Rush St & Superior St", "Michigan Ave & Jackson Blvd", "Lincoln Park Conservatory",
"LaSalle St & Jackson Blvd", "Michigan Ave & Jackson Blvd", "Michigan Ave & Jackson Blvd",
"Clark St & Bryn Mawr Ave", "Lincoln Park Conservatory", "Sedgwick St & North Ave",
"California Ave & Altgeld St", "Sheffield Ave & Fullerton Ave",
"Racine Ave & 15th St", "Indiana Ave & 31st St", "Indiana Ave & 31st St",
"Lake Park Ave & 56th St", "Sheffield Ave & Fullerton Ave", "Lincoln Park Conservatory",
"Sheridan Rd & Montrose Ave", "Clark St & Bryn Mawr Ave", "State St & Harrison St",
"Halsted St & North Branch St", "Michigan Ave & Jackson Blvd",
"Glenwood Ave & Touhy Ave", "Glenwood Ave & Touhy Ave", "Glenwood Ave & Touhy Ave",
"Washtenaw Ave & Lawrence Ave", "Glenwood Ave & Touhy Ave", "Glenwood Ave & Touhy Ave",
"State St & Harrison St", "University Ave & 57th St", "Glenwood Ave & Touhy Ave",
"Michigan Ave & Jackson Blvd", "LaSalle St & Jackson Blvd", "Halsted St & Clybourn Ave",
"Clinton St & Lake St", "Racine Ave & 15th St", "Evanston Civic Center",
"Clinton St & Roosevelt Rd", "Indiana Ave & 31st St", "Damen Ave & Cortland St",
"Halsted St & North Branch St", "Damen Ave & Cortland St", "Wood St & Chicago Ave",
"Winthrop Ave & Lawrence Ave", "Wilton Ave & Belmont Ave", "Southport Ave & Waveland Ave",
"Sheridan Rd & Montrose Ave", "Paulina Ave & North Ave", "Halsted St & Willow St",
"Clark St & Lake St", "Halsted St & Maxwell St", "Sheffield Ave & Waveland Ave",
"Glenwood Ave & Touhy Ave", "Clark St & Bryn Mawr Ave", "LaSalle St & Jackson Blvd",
"Clark St & Bryn Mawr Ave", "LaSalle St & Jackson Blvd"), start_station_id = c("525",
"525", "TA1306000016", "KA1504000151", "TA1309000002", "637",
"KA1504000158", "TA1306000016", "13304", "TA1309000004", "TA1309000004",
"TA1307000119", "TA1306000016", "15530", "TA1309000002", "LP-",
"TA1309000004", "TA1309000002", "TA1309000002", "KA1504000151",
"LP-", "TA1307000038", "15646", "TA1306000016", "13304", "TA1308000036",
"TA1308000036", "TA1309000063", "TA1306000016", "LP-", "TA1307000107",
"KA1504000151", "SL-007", "KA1504000117", "TA1309000002", "525",
"525", "525", "KA1504000080", "525", "525", "SL-007", "KA1503000071",
"525", "TA1309000002", "TA1309000004", "331", "13021", "13304",
"661", "WL-008", "TA1308000036", "13133", "KA1504000117", "13133",
"637", "TA1308000021", "TA1307000134", "13235", "TA1307000107",
"TA1305000037", "TA1307000166", "KA1503000012", "TA1309000001",
"TA1307000126", "525", "KA1504000151", "TA1309000004", "KA1504000151",
"TA1309000004"), end_station_name = c("Clark St & Touhy Ave",
"Clark St & Touhy Ave", "Greenview Ave & Fullerton Ave", "Paulina St & Montrose Ave",
"State St & Randolph St", "Honore St & Division St", "Broadway & Sheridan Rd",
"Damen Ave & Clybourn Ave", "Clinton St & Washington Blvd", "Clinton St & Washington Blvd",
"Clinton St & Washington Blvd", "Broadway & Granville Ave", "Stockton Dr & Wrightwood Ave",
"Larrabee St & Kingsbury St", "St. Clair St & Erie St", "Lincoln Park Conservatory",
"Clark St & Ida B Wells Dr", "Indiana Ave & Roosevelt Rd", "Indiana Ave & Roosevelt Rd",
"Clark St & Schreiber Ave", "Michigan Ave & Washington St", "Sedgwick St & North Ave",
"Milwaukee Ave & Rockwell St", "Halsted St & Roscoe St", "Wolcott Ave & Polk St",
"Emerald Ave & 31st St", "Indiana Ave & 40th St", "Shore Dr & 55th St",
"Ashland Ave & Wrightwood Ave", "Daley Center Plaza", "Southport Ave & Waveland Ave",
"Elston Ave & Cortland St", "Clark St & Lake St", "Clark St & Chicago Ave",
"Orleans St & Merchandise Mart Plaza", "Clark St & Bryn Mawr Ave",
"Clark St & Bryn Mawr Ave", "Greenview Ave & Jarvis Ave", "Western Ave & Granville Ave",
"Glenwood Ave & Morse Ave", "Glenwood Ave & Morse Ave", "Sedgwick St & Huron St",
"Lake Park Ave & 47th St", "Southport Ave & Clybourn Ave", "Clinton St & Jackson Blvd",
"Desplaines St & Jackson Blvd", "Greenview Ave & Fullerton Ave",
"Desplaines St & Jackson Blvd", "Clinton St & Jackson Blvd",
"Evanston Civic Center", "Desplaines St & Jackson Blvd", "State St & 35th St",
"Damen Ave & Wabansia Ave", "Peoria St & Jackson Blvd", "Paulina Ave & North Ave",
"Dearborn St & Adams St", "Broadway & Sheridan Rd", "Hampden Ct & Diversey Ave",
"Broadway & Sheridan Rd", "Broadway & Sheridan Rd", "Paulina Ave & North Ave",
"Broadway & Sheridan Rd", "Dearborn St & Adams St", "Dearborn St & Adams St",
"Broadway & Sheridan Rd", "Paulina St & Howard St", "Broadway & Ridge Ave",
"Clark St & Elm St", "Glenwood Ave & Touhy Ave", "Franklin St & Monroe St"
), end_station_id = c("RP-007", "RP-007", "TA1307000001", "TA1309000021",
"TA1305000029", "TA1305000034", "13323", "13271", "WL-012", "WL-012",
"WL-012", "15571", "13276", "TA1306000009", "13016", "LP-", "TA1305000009",
"SL-005", "SL-005", "KA1504000156", "13001", "TA1307000038",
"13242", "TA1309000025", "TA1309000064", "TA1309000055", "13083",
"TA1308000009", "13296", "TA1306000010", "13235", "TA1305000039",
"KA1503000012", "13303", "TA1305000022", "KA1504000151", "KA1504000151",
"520", "KA1504000129", "KA1504000175", "KA1504000175", "TA1307000062",
"TA1308000035", "TA1309000030", "638", "15539", "TA1307000001",
"15539", "638", "661", "15539", "TA1307000129", "20.0", "13158",
"TA1305000037", "TA1305000005", "13323", "202480.0", "13323",
"13323", "TA1305000037", "13323", "TA1305000005", "TA1305000005",
"13323", "515", "15578", "TA1307000039", "525", "TA1309000007"
), start_lat = c(42.0128005, 42.012763, 41.9256018819, 41.983593,
41.87785, 41.895634, 41.95434085219, 41.9256018819, 41.8612513333333,
41.878166, 41.878166, 41.967962, 41.9256018819, 41.89576474564,
41.8778493333333, 41.9239313113662, 41.878166, 41.87785, 41.87785,
41.983593, 41.9239313113662, 41.911386, 41.9266475, 41.9256018819,
41.86120735, 41.838842, 41.838817477, 41.793242, 41.9256018819,
41.9239313113662, 41.9616468333333, 41.9835633333333, 41.874053,
41.8993313333333, 41.87785, 42.012701, 42.012701, 42.012701,
41.9687465, 42.012701, 42.012701, 41.874053, 41.791478, 42.012701,
41.87785, 41.878166, 41.909668, 41.885637, 41.861267, 42.057044,
41.8671177825, 41.838842, 41.9159495, 41.899358034, 41.915983,
41.895634, 41.9688813333333, 41.940051, 41.9480483333333, 41.96167,
41.9098546521673, 41.9138635, 41.88602082773, 41.864876509, 41.949399,
42.012701, 41.983593, 41.877831, 41.983593, 41.8781185), start_lng = c(-87.665906,
-87.6659675, -87.6537080423, -87.669154, -87.62408, -87.672069,
-87.6860796243, -87.6537080423, -87.6565001666667, -87.631929,
-87.631929, -87.6500285, -87.6537080423, -87.6259080327, -87.624056,
-87.6358245313168, -87.631929, -87.62408, -87.62408, -87.669154,
-87.6358245313168, -87.638677, -87.6976608333333, -87.6537080423,
-87.6565998666667, -87.621857, -87.621834636, -87.587782, -87.6537080423,
-87.6358245313168, -87.6546318333333, -87.6691561666667, -87.627716,
-87.6485665, -87.62408, -87.666058, -87.666058, -87.666058, -87.696182,
-87.666058, -87.666058, -87.627716, -87.599861, -87.666058, -87.62408,
-87.631929, -87.648128, -87.641823, -87.656625, -87.686554, -87.6410879593,
-87.621857, -87.67738, -87.648486376, -87.677335, -87.672069,
-87.657706, -87.6529303333333, -87.6641906666667, -87.65464,
-87.6699301600456, -87.6487013333333, -87.6308760584, -87.647285223,
-87.654529, -87.666058, -87.669154, -87.6319111666667, -87.669154,
-87.6322086666667), end_lat = c(42.01256011541, 42.01256011541,
41.92533, 41.961507, 41.8846210725794, 41.903119, 41.952833,
41.931931, 41.88338, 41.88338, 41.88338, 41.9947796884, 41.93132,
41.897764, 41.8943451374243, 41.9239313113662, 41.8759326655,
41.867888, 41.867888, 41.99925182186, 41.8839840647265, 41.911386,
41.9201955620057, 41.94367, 41.871262, 41.838198, 41.82168, 41.795212,
41.92883, 41.884241, 41.94815, 41.9164334291265, 41.88602082773,
41.89675, 41.888243, 41.983593, 41.983593, 42.015962, 41.99416136902,
42.00797192287, 42.00797192287, 41.894666, 41.809443, 41.920771,
41.8783166118307, 41.8781189009123, 41.92533, 41.8781189009123,
41.8783166118307, 42.057044, 41.8781189009123, 41.8310363140161,
41.91, 41.8776415962753, 41.9098546521673, 41.8793563587, 41.952833,
41.93, 41.952833, 41.952833, 41.9098546521673, 41.952833, 41.8793563587,
41.8793563587, 41.952833, 42.019159, 41.9840446107, 41.902973,
42.012701, 41.880317), end_lng = c(-87.6743671152, -87.6743671152,
-87.6658, -87.671387, -87.6278342306614, -87.673935, -87.649993,
-87.677856, -87.64117, -87.64117, -87.64117, -87.6602845349,
-87.638742, -87.642884, -87.6227983832359, -87.6358245313168,
-87.6305845355, -87.623041, -87.623041, -87.6713773393, -87.6246839761734,
-87.638677, -87.6926591992378, -87.64895, -87.673688, -87.645143,
-87.6216, -87.580715, -87.668507, -87.629634, -87.66394, -87.6667463779449,
-87.6308760584, -87.63089, -87.63639, -87.669154, -87.669154,
-87.66857, -87.689438282, -87.6655023944, -87.6655023944, -87.638437,
-87.591875, -87.663712, -87.6409810781479, -87.6439476013184,
-87.6658, -87.6439476013184, -87.6409810781479, -87.686554, -87.6439476013184,
-87.6267975568771, -87.68, -87.6496177911758, -87.6699301600456,
-87.6297910363, -87.649993, -87.64, -87.649993, -87.649993, -87.6699301600456,
-87.649993, -87.6297910363, -87.6297910363, -87.649993, -87.673573,
-87.6602738295, -87.63128, -87.666058, -87.635185), member_casual = c("casual",
"casual", "member", "casual", "member", "member", "member", "member",
"member", "member", "member", "member", "member", "member", "casual",
"member", "member", "member", "member", "member", "member", "member",
"casual", "member", "member", "member", "casual", "member", "member",
"member", "casual", "member", "member", "member", "casual", "casual",
"casual", "member", "member", "member", "member", "member", "member",
"member", "member", "member", "casual", "member", "member", "member",
"member", "member", "casual", "member", "member", "casual", "member",
"member", "member", "member", "member", "member", "member", "member",
"casual", "member", "casual", "casual", "casual", "member"),
ride_duration = structure(c(2.95, 4.35, 4.35, 14.93, 6.03,
3.37, 16.57, 12.07, 25.45, 7.38, 6.35, 12.35, 9.33, 6.88,
10, 0.53, 1.67, 5.05, 4.92, 9.27, 25.83, 23.17, 4.73, 14.05,
7.12, 10.82, 5.13, 6.78, 7.65, 24, 10.72, 25.9, 9.48, 7.47,
12.48, 14.78, 13.53, 2.65, 9.13, 2.67, 2.75, 16.95, 15.73,
39.02, 7.8, 7.18, 13.42, 4.48, 12.37, 1.52, 6.85, 6.02, 13.13,
8.87, 6.38, 16.15, 10.28, 7.1, 5.1, 7.88, 8.92, 16.15, 4.32,
10.52, 20.18, 6, 4.23, 11.22, 13.52, 1.65), class = "difftime", units = "mins"),
ride_year = c("2022", "2022", "2022", "2022", "2022", "2022",
"2022", "2022", "2022", "2022", "2022", "2022", "2022", "2022",
"2022", "2022", "2022", "2022", "2022", "2022", "2022", "2022",
"2022", "2022", "2022", "2022", "2022", "2022", "2022", "2022",
"2022", "2022", "2022", "2022", "2022", "2022", "2022", "2022",
"2022", "2022", "2022", "2022", "2022", "2022", "2022", "2022",
"2022", "2022", "2022", "2022", "2022", "2022", "2022", "2022",
"2022", "2022", "2022", "2022", "2022", "2022", "2022", "2022",
"2022", "2022", "2022", "2022", "2022", "2022", "2022", "2022"
), ride_month = c("Jan", "Jan", "Jan", "Jan", "Jan", "Jan",
"Jan", "Jan", "Jan", "Jan", "Jan", "Jan", "Jan", "Jan", "Jan",
"Jan", "Jan", "Jan", "Jan", "Jan", "Jan", "Jan", "Jan", "Jan",
"Jan", "Jan", "Jan", "Jan", "Jan", "Jan", "Jan", "Jan", "Jan",
"Jan", "Jan", "Jan", "Jan", "Jan", "Jan", "Jan", "Jan", "Jan",
"Jan", "Jan", "Jan", "Jan", "Jan", "Jan", "Jan", "Jan", "Jan",
"Jan", "Jan", "Jan", "Jan", "Jan", "Jan", "Jan", "Jan", "Jan",
"Jan", "Jan", "Jan", "Jan", "Jan", "Jan", "Jan", "Jan", "Jan",
"Jan"), week_day = c("Thu", "Mon", "Tue", "Tue", "Thu", "Tue",
"Sun", "Sat", "Mon", "Fri", "Tue", "Sat", "Sun", "Thu", "Sat",
"Fri", "Wed", "Mon", "Fri", "Wed", "Mon", "Thu", "Tue", "Tue",
"Mon", "Sat", "Mon", "Mon", "Sat", "Mon", "Thu", "Tue", "Thu",
"Sat", "Fri", "Thu", "Wed", "Sat", "Wed", "Wed", "Tue", "Thu",
"Sat", "Wed", "Tue", "Wed", "Sun", "Thu", "Mon", "Wed", "Mon",
"Tue", "Tue", "Mon", "Mon", "Fri", "Sat", "Thu", "Sat", "Sat",
"Sat", "Sat", "Thu", "Sat", "Sat", "Wed", "Sat", "Tue", "Wed",
"Wed"), start_hour = c(11, 8, 4, 0, 1, 18, 18, 12, 7, 15,
18, 12, 17, 22, 5, 5, 14, 12, 17, 21, 15, 12, 8, 14, 6, 15,
0, 18, 17, 10, 17, 17, 11, 12, 10, 16, 16, 6, 22, 12, 15,
16, 15, 9, 9, 16, 16, 12, 10, 15, 19, 10, 7, 14, 11, 8, 10,
21, 12, 16, 12, 0, 16, 10, 11, 10, 12, 14, 23, 10), end_hour = c(12,
8, 4, 0, 1, 18, 18, 12, 8, 15, 18, 12, 18, 22, 5, 5, 14,
12, 17, 21, 15, 13, 8, 15, 6, 15, 0, 19, 17, 10, 18, 18,
12, 12, 10, 16, 16, 6, 22, 12, 15, 17, 15, 10, 9, 16, 16,
12, 11, 15, 20, 10, 7, 14, 11, 9, 10, 21, 12, 17, 13, 0,
16, 10, 11, 11, 12, 14, 23, 10), ride_distance = c(0.701379051638459,
0.696141384455198, 1.00345065204343, 2.46012500818485, 0.814073027467292,
0.845665751358482, 2.99665975854121, 2.12269291322711, 2.76779039259784,
0.961120448517062, 0.961120448517062, 3.09761402517743, 1.39437976361801,
1.4261370691565, 1.83517748823294, 0, 0.272008220714529,
1.10984417908423, 1.10984417908423, 1.74900408947114, 4.53226682768783,
0, 0.828061771719467, 2.04529061826145, 1.80553986458992,
1.93545499316861, 1.90355916555925, 0.626818936031316, 1.27879606936789,
4.4382834174359, 1.68610496435621, 7.45895042012762, 1.35491097235717,
1.49460496555901, 1.54160285712172, 3.24327992086163, 3.24327992086163,
0.417722018104412, 2.87769657993199, 0.52728758271979, 0.52728758271979,
2.45635414745685, 2.10285027103017, 10.2127592720333, 1.40389382540802,
0.997661505958004, 2.27496451221028, 0.853460985494749, 2.29627979159115,
0, 1.24475053030319, 0.959201231749321, 0.695651488923598,
2.41389615391511, 0.916917010539829, 3.94731899708545, 1.89374401090284,
1.54800123467883, 1.29160058660269, 1.05444972323753, 0,
4.32974537596188, 0.745687709953941, 2.16697531763979, 0.535661425871119,
0.949739398637543, 0.737622843112913, 2.79304224738829, 3.24327992086163,
0.347369798535608), ride_speed = c(14.2653366434941, 9.60195013041652,
13.8406986488749, 9.8866376752238, 8.10022912902778, 15.0563635256703,
10.8509104111329, 10.5519117476078, 6.52524257586917, 7.81398738631758,
9.08145305685414, 15.0491369644248, 8.96707243484249, 12.4372418821788,
11.0110649293976, 0, 9.77275044483339, 13.1862674742681,
13.5346851107833, 11.3204148185834, 10.5279136531657, 0,
10.5039548209658, 8.73433715983537, 15.2152235780049, 10.7326524574969,
22.2638498895819, 5.54707023036563, 10.0297730930815, 11.0957085435897,
9.43715465124743, 17.2794218226895, 8.57538590099473, 12.0048591611166,
7.41155219770058, 13.1662243066102, 14.3826160570361, 9.45785701368479,
18.9114780718422, 11.8491591622425, 11.50445635025, 8.6950589290508,
8.02104362757854, 15.7038840677088, 10.7991832723694, 8.33700422806132,
10.1712273273187, 11.4302810557332, 11.137977970531, 0, 10.9029243530207,
9.56014516693676, 3.17891007885879, 16.3284970952544, 8.62304398626799,
14.6649622182741, 11.0529806083824, 13.0817005747507, 15.1953010188552,
8.02880499927053, 0, 16.0857413348429, 10.3567737493603,
12.3591748154361, 1.59265042379917, 9.49739398637543, 10.4627353633037,
14.9360547988678, 14.3932540866641, 12.6316290376585), failed_ride = c(FALSE,
FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE,
FALSE, FALSE, FALSE, FALSE, FALSE, TRUE, FALSE, FALSE, FALSE,
FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE,
FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE,
FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE,
FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE,
FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE,
FALSE, FALSE, FALSE, FALSE, FALSE, FALSE)), row.names = c(NA,
70L), class = "data.frame")

Thanks. I’ll take a look when I can get in front of a terminal in a couple hours.

OK, thank you very much!

I run 70 rows due to message limitation...