La directora de marketing cree que el éxito futuro de la empresa depende de maximizar la cantidad de membresías anuales. el objetivo del análisis consiste en entender las diferencias existen en el uso de las bicicletas Cyclistic entre los ciclistas ocasionales y los miembros anuales. Para diseñar nueva estrategia de marketing que permita convertir a los ciclistas ocasionales en miembros anuales.
Es un programa de bicicletas compartidas que incluye 5,800 bicicletas y 600 estaciones. Cyclistic, ofrece también bicicletas reclinadas, triciclos manuales y bicicletas de carga con la idea de proporcionar mayor inclusividad al servicio de bicicletas compartidas incluye algunas adaptadas para el uso por parte de personas con discapacidad y aquellos que no pueden utilizar una bicicleta estándar de dos ruedas.
La mayoría de los ciclistas eligen las bicicletas tradicionales, alrededor de un 8% de los ciclistas usan las opciones asistidas. Los usuarios de Cyclistic son más propensos a utilizar la bicicleta para recreación, pero alrededor del 30% la utiliza para ir al trabajo cada día
Es el área responsable del desarrollo de campañas e iniciativas para promover el programa de bicicletas compartidas. Las campañas pueden incluir correo electrónico, redes sociales y otros canales.
Encargado de recopilar, analizar e informar datos que ayudan a conducir la estrategia de marketing de Cyclistic.
Encargados de tomar la decisión de aprobar o rechazar el el programa de marketing recomendado.
¿En qué se diferencian los socios anuales y los ciclistas ocasionales con respecto al uso de las bicicletas de Cyclistic? Adicionalmente nuestro trabajo deberá guiar a otros equipos para encontrar la respuesta a las siguientes preguntas: ¿Por qué los ciclistas ocasionales comprarían membresías anuales de Cyclistic? ¿Cómo puede usar Cyclistic los medios digitales para influenciar a los ciclistas ocasionales a convertirse en miembros?
La tarea de este análisis consiste en determinar la respuesta a la primer pregunta. para lo cual haremos uso de los datos relativos a la actividad de los clientes entre los meses de febrero 2023 a enero 2024.
Determinar los rasgos que distinguen a los usuarios casuales de los usuarios con membresía para encontrar similitudes o diferencias clave que emplearse para introducir cambios en la estrategía de mercadeo que los animen a adquirir membresias anuales.
Para llevar a cabo este análisis se tomaran como fuente los registros de los 12 meses previos (febrero de 2023 a enero de 2024) disponibles en https://divvy-tripdata.s3.amazonaws.com/index.html Tomaremos los 12 archivos más recientes dado que se nos ha instruido hacer el análisis sobre el último año de operaciones.
Los datos se encuentran organizados en archivos csv, con 14 columnas comunes de datos, aunque a través del tiempo se han dado cambios en los formatos de almacenamiento de la información y en algunos datos se han dejado de registrar en diferentes periodos.
Los datos son originales, y en su mayría consistentes, aunque algunos presentan inconsistencias, el conjunto de datos es público, se encuentra actualizado al mes inmediato anterior, y se permite su uso por parte de la empresa Motivate Internacional Inc. en los siguientes términos:
Una licencia no exclusiva, libre de regalías, limitada y perpetua para acceder, reproducir, analizar, copiar, modificar, distribuir en su producto o servicio y utilizar los Datos para cualquier propósito legal (“Licencia”).
no autoriza a realizar o ayudar a otros a realizar, las siguientes:
Utilizar los Datos de cualquier manera ilegal o para cualquier propósito ilegal;
Alojar, transmitir, publicar, distribuir, sublicenciar o vender los Datos como un conjunto de datos independiente; siempre que, sin embargo, pueda incluir los Datos como material fuente, según corresponda, en análisis, informes o estudios publicados o distribuidos con fines no comerciales;
Acceder a los Datos por medios distintos a la interfaz que se proporciona o autoriza para tal fin;
Eludir cualquier restricción de acceso relacionada con los Datos;
Usar minería de datos u otros métodos de extracción en relación con el sitio web o los Datos;
Intentar correlacionar los Datos con nombres, direcciones u otra información de clientes o Miembros;
Indicar o dar a entender que está afiliado, aprobado, respaldado o patrocinado.
Usar o autorizar a otros a usar, sin el permiso por escrito de los propietarios correspondientes, las marcas comerciales o nombres comerciales, la ciudad de Chicago o cualquier patrocinador del servicio.
Una vez descargados los datos se ordenan y revisan con una hoja de cálculo para determinar los pasos necesarios de limpieza que requeriran los mismos antes de su procesamiento.
La tarea de limpieza de datos la realizaremos con la Hoja de cálculo de Microsoft Excel, ya que los archivos individuales tienen un tamaño que Excel puede manejar, pero si unimos el conjunto de todos los datos la capaidad de manejo de datos de Excel queda sobrepasada.
Se cambia la nomeclatura de los archivos para reducir la complejidad
de sus nombres con la siguiente nomenclatura
Realizamos un proceso de limpieza de datos en Hoja de Cálculo, y de càlculo de nuevas columnas relevantes para el análisis de datos que nos indiquen tiempo en días, horas, minutos, día de la semana, año, mes y día del inicio del viaje, estos datos nos permitiran realizar los agrupamientos y clasificar los datos. se eliminaran los datos que muestran gran cantidad de valores núlos start_station_name start_station_id end_station_name end_station_id ya que debido a la cantidad de valores faltantes no serán útiles para el análisis.
Las fórmulas empleadas para obtener los valores antes mencionados son:
*Para calcular los días del viaje
time_day_trip =SI(SI.ERROR(DIAS(D2,C2), 0)=0, 0, SI.ERROR(DIAS(D2, C2), 0)-1)
*Para calcular las horas del viaje
time_hr-trip =SI.ERROR(HORA(D2-C2), 0)
*Para calcular los minutos del viaje
time_mn_trip =MINUTO(D2-C2)
*Para calcular los minutos totales de viaje
time_trip = H2 * 24 * 60 + I2 * 60 + J2
*Para determinar el día de la semana en que se realizó el viaje weekday_trip =SI(DIASEM(C3, 1)=1, “1Domingo”, SI(DIASEM(C3, 1)=2, “2Lunes”, SI(DIASEM(C3, 1)=3, “3Martes”, SI(DIASEM(C3, 1)=4, “4Miercoles”, SI(DIASEM(C3, 1)=5, “5Jueves”, SI(DIASEM(C3, 1)=6, “6Viernes”, “7Sabado”))))))
*Para determinar el año del viaje year_trip =AÑO(C2)
*Para determinar el mes del viaje month_trip =MES(C2)
Para determinar el día del viaje day_trip =DIA(C2)
Se analizan los conjuntos de datos y se eliminan aquellos que son incoherentes (viajes con tiempo de recorrido cero).Posteriormente se procede a la creación de las nuevas columnas de datos, y finalmente a la eliminación de las columnas started_at ended_at, así como de las columnas con muchos valores nulos o irrelevantes para este análisis como son start_lat start_lng end_lat end_lng start_station_name end_station_name start_station_id end_station_id ya que la información generada a partir de estas columnas basta para reconstruir los datos eliminados acerca de de la duración de los viajes, las fechas de inicio y los días de la semana, con esta acciones el tamaño de los archivos a analizar disminuye.
Posteriormente a la generación de las nuevas columnas de datos, se procede a buscar y eliminar filas duplicadas, para esta tarea se utilizan el formato condicional la opción marcar duplicados y los filtros por color.
Al inicio del proceso el número total de filas era de 5,674,449, al final del proceso quedaban 5,586,781 filas, es decir se depuraron un total de 87,668 filas con viajes de duración cero, lo que representa el 1.55% del total de los datos.Variando entre el 2.23% para el mes de marzo de 2023 y el 1.18% para el mes de diciembre el rango de filas eliminadas por conjunto de datos mensual.
Para este paso se procedió a la descarga de los datos a partir de un sitio Web de la empresa que ha puesto a disposición sus datos para realizar análisis, los datos ya se encuentran anonimizados, aunque no se encuentran estándarizados en su totalidad, así mismo se proporcionan licenciados en los terminos ya mencionados.
Elegimos utilizar el lenguaje R con el IDE RStudio para el análisis de los conjuntos de datos y la elaboración de los gráficos y tablas necesarios, complementariamente se empleará una software de presentaciones para realizar la presentación de las conclusiones, la metodología de análisis y las conclusiones.
## ── Attaching core tidyverse packages ──────────────────────── tidyverse 2.0.0 ──
## ✔ dplyr 1.1.4 ✔ readr 2.1.5
## ✔ forcats 1.0.0 ✔ stringr 1.5.1
## ✔ ggplot2 3.4.4 ✔ tibble 3.2.1
## ✔ lubridate 1.9.3 ✔ tidyr 1.3.1
## ✔ purrr 1.0.2
## ── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
## ✖ dplyr::filter() masks stats::filter()
## ✖ dplyr::lag() masks stats::lag()
## ℹ Use the conflicted package (<http://conflicted.r-lib.org/>) to force all conflicts to become errors
Hacemos la carga de los conjuntos de datos de los archivos csv a marcos de datos con read_csv con la opción show_col_types = FALSE y los asignamos a las variables correspondientes.
Verificamos los errores detectados con problems:
## # A tibble: 0 × 5
## # ℹ 5 variables: row <int>, col <int>, expected <chr>, actual <chr>, file <chr>
## # A tibble: 0 × 5
## # ℹ 5 variables: row <int>, col <int>, expected <chr>, actual <chr>, file <chr>
## # A tibble: 0 × 5
## # ℹ 5 variables: row <int>, col <int>, expected <chr>, actual <chr>, file <chr>
## # A tibble: 0 × 5
## # ℹ 5 variables: row <int>, col <int>, expected <chr>, actual <chr>, file <chr>
## # A tibble: 0 × 5
## # ℹ 5 variables: row <int>, col <int>, expected <chr>, actual <chr>, file <chr>
## # A tibble: 0 × 5
## # ℹ 5 variables: row <int>, col <int>, expected <chr>, actual <chr>, file <chr>
## # A tibble: 0 × 5
## # ℹ 5 variables: row <int>, col <int>, expected <chr>, actual <chr>, file <chr>
## # A tibble: 0 × 5
## # ℹ 5 variables: row <int>, col <int>, expected <chr>, actual <chr>, file <chr>
## # A tibble: 0 × 5
## # ℹ 5 variables: row <int>, col <int>, expected <chr>, actual <chr>, file <chr>
## # A tibble: 0 × 5
## # ℹ 5 variables: row <int>, col <int>, expected <chr>, actual <chr>, file <chr>
## # A tibble: 0 × 5
## # ℹ 5 variables: row <int>, col <int>, expected <chr>, actual <chr>, file <chr>
## # A tibble: 0 × 5
## # ℹ 5 variables: row <int>, col <int>, expected <chr>, actual <chr>, file <chr>
Utilizando la función dim checamos los tamaños de los conjuntos de datos mensuales.
## [1] 186663 11
## [1] 252915 11
## [1] 417353 11
## [1] 594103 11
## [1] 708494 11
## [1] 755955 11
## [1] 760971 11
## [1] 657924 11
## [1] 530391 11
## [1] 358207 11
## [1] 221438 11
## [1] 142367 11
En el marco de datos se observa que hay valores nulos en las columnas de fechas y horas de algunos viajes, vamos a contar cuantos valores nulos hay por columna de datos. Para localizar los valores nulos por columna usaremos la función sapply:
## ride_id rideable_type member_casual time_dy_trip time_hr_trip
## 0 0 0 0 0
## time_mn_trip time_trip weekday_trip year_trip month_trip
## 0 0 0 0 0
## day_trip
## 0
## ride_id rideable_type member_casual time_dy_trip time_hr_trip
## 0 0 0 0 0
## time_mn_trip time_trip weekday_trip year_trip month_trip
## 0 0 0 0 0
## day_trip
## 0
## ride_id rideable_type member_casual time_dy_trip time_hr_trip
## 0 0 0 0 0
## time_mn_trip time_trip weekday_trip year_trip month_trip
## 0 0 0 0 0
## day_trip
## 0
## ride_id rideable_type member_casual time_dy_trip time_hr_trip
## 0 0 0 0 0
## time_mn_trip time_trip weekday_trip year_trip month_trip
## 0 0 0 0 0
## day_trip
## 0
## ride_id rideable_type member_casual time_dy_trip time_hr_trip
## 0 0 0 0 0
## time_mn_trip time_trip weekday_trip year_trip month_trip
## 0 0 0 0 0
## day_trip
## 0
## ride_id rideable_type member_casual time_dy_trip time_hr_trip
## 0 0 0 0 0
## time_mn_trip time_trip weekday_trip year_trip month_trip
## 0 0 0 0 0
## day_trip
## 0
## ride_id rideable_type member_casual time_dy_trip time_hr_trip
## 0 0 0 0 0
## time_mn_trip time_trip weekday_trip year_trip month_trip
## 0 0 0 0 0
## day_trip
## 0
## ride_id rideable_type member_casual time_dy_trip time_hr_trip
## 0 0 0 0 0
## time_mn_trip time_trip weekday_trip year_trip month_trip
## 0 0 0 0 0
## day_trip
## 0
## ride_id rideable_type member_casual time_dy_trip time_hr_trip
## 0 0 0 0 0
## time_mn_trip time_trip weekday_trip year_trip month_trip
## 0 0 0 0 0
## day_trip
## 0
## ride_id rideable_type member_casual time_dy_trip time_hr_trip
## 0 0 0 0 0
## time_mn_trip time_trip weekday_trip year_trip month_trip
## 0 0 0 0 0
## day_trip
## 0
## ride_id rideable_type member_casual time_dy_trip time_hr_trip
## 0 0 0 0 0
## time_mn_trip time_trip weekday_trip year_trip month_trip
## 0 0 0 0 0
## day_trip
## 0
## ride_id rideable_type member_casual time_dy_trip time_hr_trip
## 0 0 0 0 0
## time_mn_trip time_trip weekday_trip year_trip month_trip
## 0 0 0 0 0
## day_trip
## 0
Podemos observar que no existen valores nulos en la mayoría de las columnas, excepto latitudes y longitudes, pero su número no es significativo.
Usamos la función str para conocer los tipos de catos de cada columna
## spc_tbl_ [186,663 × 11] (S3: spec_tbl_df/tbl_df/tbl/data.frame)
## $ ride_id : chr [1:186663] "CBCD0D7777F0E45F" "F3EC5FCE5FF39DE9" "E54C1F27FA9354FF" "3D561E04F739CC45" ...
## $ rideable_type: chr [1:186663] "classic_bike" "electric_bike" "classic_bike" "electric_bike" ...
## $ member_casual: chr [1:186663] "casual" "casual" "member" "member" ...
## $ time_dy_trip : num [1:186663] 0 0 0 0 0 0 0 0 0 0 ...
## $ time_hr_trip : num [1:186663] 0 0 0 0 0 0 0 0 0 0 ...
## $ time_mn_trip : num [1:186663] 14 6 25 27 10 6 5 5 6 5 ...
## $ time_trip : num [1:186663] 14 6 25 27 10 6 5 5 6 5 ...
## $ weekday_trip : chr [1:186663] "3Miercoles" "7Domingo" "7Domingo" "1Lunes" ...
## $ year_trip : num [1:186663] 2023 2023 2023 2023 2023 ...
## $ month_trip : num [1:186663] 2 2 2 2 2 2 2 2 2 2 ...
## $ day_trip : num [1:186663] 14 15 19 26 20 24 28 27 8 21 ...
## - attr(*, "spec")=
## .. cols(
## .. ride_id = col_character(),
## .. rideable_type = col_character(),
## .. member_casual = col_character(),
## .. time_dy_trip = col_double(),
## .. time_hr_trip = col_double(),
## .. time_mn_trip = col_double(),
## .. time_trip = col_double(),
## .. weekday_trip = col_character(),
## .. year_trip = col_double(),
## .. month_trip = col_double(),
## .. day_trip = col_double()
## .. )
## - attr(*, "problems")=<externalptr>
## spc_tbl_ [252,915 × 11] (S3: spec_tbl_df/tbl_df/tbl/data.frame)
## $ ride_id : chr [1:252915] "6842AA605EE9FBB3" "F984267A75B99A8C" "FF7CF57CFE026D02" "6B61B916032CB6D6" ...
## $ rideable_type: chr [1:252915] "electric_bike" "electric_bike" "classic_bike" "classic_bike" ...
## $ member_casual: chr [1:252915] "member" "member" "member" "member" ...
## $ time_dy_trip : num [1:252915] 0 0 0 0 0 0 0 0 0 0 ...
## $ time_hr_trip : num [1:252915] 0 0 0 0 0 0 0 0 0 0 ...
## $ time_mn_trip : num [1:252915] 2 8 10 15 11 14 7 22 10 12 ...
## $ time_trip : num [1:252915] 2 8 10 15 11 14 7 22 10 12 ...
## $ weekday_trip : chr [1:252915] "6Sabado" "5Viernes" "3Miercoles" "4Jueves" ...
## $ year_trip : num [1:252915] 2023 2023 2023 2023 2023 ...
## $ month_trip : num [1:252915] 3 3 3 3 3 3 3 3 3 3 ...
## $ day_trip : num [1:252915] 16 4 31 22 9 22 8 22 16 16 ...
## - attr(*, "spec")=
## .. cols(
## .. ride_id = col_character(),
## .. rideable_type = col_character(),
## .. member_casual = col_character(),
## .. time_dy_trip = col_double(),
## .. time_hr_trip = col_double(),
## .. time_mn_trip = col_double(),
## .. time_trip = col_double(),
## .. weekday_trip = col_character(),
## .. year_trip = col_double(),
## .. month_trip = col_double(),
## .. day_trip = col_double()
## .. )
## - attr(*, "problems")=<externalptr>
## spc_tbl_ [417,353 × 11] (S3: spec_tbl_df/tbl_df/tbl/data.frame)
## $ ride_id : chr [1:417353] "8FE8F7D9C10E88C7" "34E4ED3ADF1D821B" "5296BF07A2F77CB5" "40759916B76D5D52" ...
## $ rideable_type: chr [1:417353] "electric_bike" "electric_bike" "electric_bike" "electric_bike" ...
## $ member_casual: chr [1:417353] "member" "member" "member" "member" ...
## $ time_dy_trip : num [1:417353] 0 0 0 0 0 0 0 0 0 0 ...
## $ time_hr_trip : num [1:417353] 0 0 0 0 0 0 0 0 0 0 ...
## $ time_mn_trip : num [1:417353] 4 23 2 4 5 4 10 5 11 1 ...
## $ time_trip : num [1:417353] 4 23 2 4 5 4 10 5 11 1 ...
## $ weekday_trip : chr [1:417353] "3Miercoles" "3Miercoles" "3Miercoles" "3Miercoles" ...
## $ year_trip : num [1:417353] 2023 2023 2023 2023 2023 ...
## $ month_trip : num [1:417353] 4 4 4 4 4 4 4 4 4 4 ...
## $ day_trip : num [1:417353] 2 19 19 19 19 19 19 11 11 19 ...
## - attr(*, "spec")=
## .. cols(
## .. ride_id = col_character(),
## .. rideable_type = col_character(),
## .. member_casual = col_character(),
## .. time_dy_trip = col_double(),
## .. time_hr_trip = col_double(),
## .. time_mn_trip = col_double(),
## .. time_trip = col_double(),
## .. weekday_trip = col_character(),
## .. year_trip = col_double(),
## .. month_trip = col_double(),
## .. day_trip = col_double()
## .. )
## - attr(*, "problems")=<externalptr>
## spc_tbl_ [594,103 × 11] (S3: spec_tbl_df/tbl_df/tbl/data.frame)
## $ ride_id : chr [1:594103] "0D9FA920C3062031" "92485E5FB5888ACD" "FB144B3FC8300187" "DDEB93BC2CE9AA77" ...
## $ rideable_type: chr [1:594103] "electric_bike" "electric_bike" "electric_bike" "classic_bike" ...
## $ member_casual: chr [1:594103] "member" "member" "member" "member" ...
## $ time_dy_trip : num [1:594103] 0 0 0 0 0 0 0 0 0 0 ...
## $ time_hr_trip : num [1:594103] 0 0 0 0 0 0 0 0 0 0 ...
## $ time_mn_trip : num [1:594103] 5 9 4 12 9 16 34 5 13 3 ...
## $ time_trip : num [1:594103] 5 9 4 12 9 16 34 5 13 3 ...
## $ weekday_trip : chr [1:594103] "6Sabado" "7Domingo" "3Miercoles" "2Martes" ...
## $ year_trip : num [1:594103] 2023 2023 2023 2023 2023 ...
## $ month_trip : num [1:594103] 5 5 5 5 5 5 5 5 5 5 ...
## $ day_trip : num [1:594103] 7 6 21 10 9 30 9 6 15 19 ...
## - attr(*, "spec")=
## .. cols(
## .. ride_id = col_character(),
## .. rideable_type = col_character(),
## .. member_casual = col_character(),
## .. time_dy_trip = col_double(),
## .. time_hr_trip = col_double(),
## .. time_mn_trip = col_double(),
## .. time_trip = col_double(),
## .. weekday_trip = col_character(),
## .. year_trip = col_double(),
## .. month_trip = col_double(),
## .. day_trip = col_double()
## .. )
## - attr(*, "problems")=<externalptr>
## spc_tbl_ [708,494 × 11] (S3: spec_tbl_df/tbl_df/tbl/data.frame)
## $ ride_id : chr [1:708494] "6F1682AC40EB6F71" "622A1686D64948EB" "3C88859D926253B4" "EAD8A5E0259DEC88" ...
## $ rideable_type: chr [1:708494] "electric_bike" "electric_bike" "electric_bike" "electric_bike" ...
## $ member_casual: chr [1:708494] "member" "member" "member" "member" ...
## $ time_dy_trip : num [1:708494] 0 0 0 0 0 0 0 0 0 0 ...
## $ time_hr_trip : num [1:708494] 0 0 0 0 0 0 0 0 4 0 ...
## $ time_mn_trip : num [1:708494] 57 3 17 4 4 19 1 8 9 5 ...
## $ time_trip : num [1:708494] 57 3 17 4 4 19 1 8 249 5 ...
## $ weekday_trip : chr [1:708494] "1Lunes" "2Martes" "1Lunes" "1Lunes" ...
## $ year_trip : num [1:708494] 2023 2023 2023 2023 2023 ...
## $ month_trip : num [1:708494] 6 6 6 6 6 6 6 6 6 6 ...
## $ day_trip : num [1:708494] 5 5 20 19 19 9 3 2 2 23 ...
## - attr(*, "spec")=
## .. cols(
## .. ride_id = col_character(),
## .. rideable_type = col_character(),
## .. member_casual = col_character(),
## .. time_dy_trip = col_double(),
## .. time_hr_trip = col_double(),
## .. time_mn_trip = col_double(),
## .. time_trip = col_double(),
## .. weekday_trip = col_character(),
## .. year_trip = col_double(),
## .. month_trip = col_double(),
## .. day_trip = col_double()
## .. )
## - attr(*, "problems")=<externalptr>
## spc_tbl_ [755,955 × 11] (S3: spec_tbl_df/tbl_df/tbl/data.frame)
## $ ride_id : chr [1:755955] "9340B064F0AEE130" "D1460EE3CE0D8AF8" "DF41BE31B895A25E" "9624A293749EF703" ...
## $ rideable_type: chr [1:755955] "electric_bike" "classic_bike" "classic_bike" "electric_bike" ...
## $ member_casual: chr [1:755955] "member" "member" "member" "member" ...
## $ time_dy_trip : num [1:755955] 0 0 0 0 0 0 0 0 0 0 ...
## $ time_hr_trip : num [1:755955] 0 0 0 0 0 0 0 0 0 0 ...
## $ time_mn_trip : num [1:755955] 16 13 10 5 12 5 7 6 11 12 ...
## $ time_trip : num [1:755955] 16 13 10 5 12 5 7 6 11 12 ...
## $ weekday_trip : chr [1:755955] "7Domingo" "7Domingo" "5Viernes" "6Sabado" ...
## $ year_trip : num [1:755955] 2023 2023 2023 2023 2023 ...
## $ month_trip : num [1:755955] 7 7 7 7 7 7 7 7 7 7 ...
## $ day_trip : num [1:755955] 23 23 23 21 8 10 25 7 4 29 ...
## - attr(*, "spec")=
## .. cols(
## .. ride_id = col_character(),
## .. rideable_type = col_character(),
## .. member_casual = col_character(),
## .. time_dy_trip = col_double(),
## .. time_hr_trip = col_double(),
## .. time_mn_trip = col_double(),
## .. time_trip = col_double(),
## .. weekday_trip = col_character(),
## .. year_trip = col_double(),
## .. month_trip = col_double(),
## .. day_trip = col_double()
## .. )
## - attr(*, "problems")=<externalptr>
## spc_tbl_ [760,971 × 11] (S3: spec_tbl_df/tbl_df/tbl/data.frame)
## $ ride_id : chr [1:760971] "903C30C2D810A53B" "F2FB18A98E110A2B" "D0DEC7C94E4663DA" "E0DDDC5F84747ED9" ...
## $ rideable_type: chr [1:760971] "electric_bike" "electric_bike" "electric_bike" "electric_bike" ...
## $ member_casual: chr [1:760971] "member" "member" "member" "member" ...
## $ time_dy_trip : num [1:760971] 0 0 0 0 0 0 0 0 0 0 ...
## $ time_hr_trip : num [1:760971] 0 0 0 0 0 0 0 0 0 0 ...
## $ time_mn_trip : num [1:760971] 12 15 12 9 21 27 12 7 10 6 ...
## $ time_trip : num [1:760971] 12 15 12 9 21 27 12 7 10 6 ...
## $ weekday_trip : chr [1:760971] "5Viernes" "3Miercoles" "3Miercoles" "2Martes" ...
## $ year_trip : num [1:760971] 2023 2023 2023 2023 2023 ...
## $ month_trip : num [1:760971] 8 8 8 8 8 8 8 8 8 8 ...
## $ day_trip : num [1:760971] 19 18 30 30 22 24 31 17 24 28 ...
## - attr(*, "spec")=
## .. cols(
## .. ride_id = col_character(),
## .. rideable_type = col_character(),
## .. member_casual = col_character(),
## .. time_dy_trip = col_double(),
## .. time_hr_trip = col_double(),
## .. time_mn_trip = col_double(),
## .. time_trip = col_double(),
## .. weekday_trip = col_character(),
## .. year_trip = col_double(),
## .. month_trip = col_double(),
## .. day_trip = col_double()
## .. )
## - attr(*, "problems")=<externalptr>
## spc_tbl_ [657,924 × 11] (S3: spec_tbl_df/tbl_df/tbl/data.frame)
## $ ride_id : chr [1:657924] "011C1903BF4E2E28" "87DB80E048A1BF9F" "7C2EB7AF669066E3" "57D197B010269CE3" ...
## $ rideable_type: chr [1:657924] "classic_bike" "classic_bike" "electric_bike" "classic_bike" ...
## $ member_casual: chr [1:657924] "member" "member" "member" "member" ...
## $ time_dy_trip : num [1:657924] 0 0 0 0 0 0 0 0 0 0 ...
## $ time_hr_trip : num [1:657924] 0 0 0 0 0 0 0 0 0 0 ...
## $ time_mn_trip : num [1:657924] 6 12 11 9 7 11 11 6 10 14 ...
## $ time_trip : num [1:657924] 6 12 11 9 7 11 11 6 10 14 ...
## $ weekday_trip : chr [1:657924] "6Sabado" "1Lunes" "3Miercoles" "1Lunes" ...
## $ year_trip : num [1:657924] 2023 2023 2023 2023 2023 ...
## $ month_trip : num [1:657924] 9 9 9 9 9 9 9 9 9 9 ...
## $ day_trip : num [1:657924] 23 2 25 13 18 15 27 17 17 7 ...
## - attr(*, "spec")=
## .. cols(
## .. ride_id = col_character(),
## .. rideable_type = col_character(),
## .. member_casual = col_character(),
## .. time_dy_trip = col_double(),
## .. time_hr_trip = col_double(),
## .. time_mn_trip = col_double(),
## .. time_trip = col_double(),
## .. weekday_trip = col_character(),
## .. year_trip = col_double(),
## .. month_trip = col_double(),
## .. day_trip = col_double()
## .. )
## - attr(*, "problems")=<externalptr>
## spc_tbl_ [530,391 × 11] (S3: spec_tbl_df/tbl_df/tbl/data.frame)
## $ ride_id : chr [1:530391] "4449097279F8BBE7" "9CF060543CA7B439" "667F21F4D6BDE69C" "F92714CC6B019B96" ...
## $ rideable_type: chr [1:530391] "classic_bike" "electric_bike" "electric_bike" "classic_bike" ...
## $ member_casual: chr [1:530391] "member" "member" "member" "member" ...
## $ time_dy_trip : num [1:530391] 0 0 0 0 0 0 0 0 0 0 ...
## $ time_hr_trip : num [1:530391] 0 0 0 0 0 0 0 0 0 0 ...
## $ time_mn_trip : num [1:530391] 13 13 4 5 11 15 12 6 22 15 ...
## $ time_trip : num [1:530391] 13 13 4 5 11 15 12 6 22 15 ...
## $ weekday_trip : chr [1:530391] "3Miercoles" "4Jueves" "2Martes" "1Lunes" ...
## $ year_trip : num [1:530391] 2023 2023 2023 2023 2023 ...
## $ month_trip : num [1:530391] 10 10 10 10 10 10 10 10 10 10 ...
## $ day_trip : num [1:530391] 8 11 12 24 9 4 31 2 17 17 ...
## - attr(*, "spec")=
## .. cols(
## .. ride_id = col_character(),
## .. rideable_type = col_character(),
## .. member_casual = col_character(),
## .. time_dy_trip = col_double(),
## .. time_hr_trip = col_double(),
## .. time_mn_trip = col_double(),
## .. time_trip = col_double(),
## .. weekday_trip = col_character(),
## .. year_trip = col_double(),
## .. month_trip = col_double(),
## .. day_trip = col_double()
## .. )
## - attr(*, "problems")=<externalptr>
## spc_tbl_ [358,207 × 11] (S3: spec_tbl_df/tbl_df/tbl/data.frame)
## $ ride_id : chr [1:358207] "4EAD8F1AD547356B" "6322270563BF5470" "B37BDE091ECA38E0" "CF0CA5DD26E4F90E" ...
## $ rideable_type: chr [1:358207] "electric_bike" "electric_bike" "electric_bike" "classic_bike" ...
## $ member_casual: chr [1:358207] "member" "member" "member" "member" ...
## $ time_dy_trip : num [1:358207] 0 0 0 0 0 0 0 0 0 0 ...
## $ time_hr_trip : num [1:358207] 0 0 0 0 0 0 1 0 0 0 ...
## $ time_mn_trip : num [1:358207] 23 33 1 26 34 24 13 22 15 3 ...
## $ time_trip : num [1:358207] 23 33 1 26 34 24 73 22 15 3 ...
## $ weekday_trip : chr [1:358207] "5Viernes" "4Jueves" "3Miercoles" "5Viernes" ...
## $ year_trip : num [1:358207] 2023 2023 2023 2023 2023 ...
## $ month_trip : num [1:358207] 11 11 11 11 11 11 11 11 11 11 ...
## $ day_trip : num [1:358207] 30 3 30 8 3 30 9 19 19 9 ...
## - attr(*, "spec")=
## .. cols(
## .. ride_id = col_character(),
## .. rideable_type = col_character(),
## .. member_casual = col_character(),
## .. time_dy_trip = col_double(),
## .. time_hr_trip = col_double(),
## .. time_mn_trip = col_double(),
## .. time_trip = col_double(),
## .. weekday_trip = col_character(),
## .. year_trip = col_double(),
## .. month_trip = col_double(),
## .. day_trip = col_double()
## .. )
## - attr(*, "problems")=<externalptr>
## spc_tbl_ [221,438 × 11] (S3: spec_tbl_df/tbl_df/tbl/data.frame)
## $ ride_id : chr [1:221438] "C9BD54F578F57246" "CDBD92F067FA620E" "ABC0858E52CBFC84" "F44B6F0E8F76DC90" ...
## $ rideable_type: chr [1:221438] "electric_bike" "electric_bike" "electric_bike" "electric_bike" ...
## $ member_casual: chr [1:221438] "member" "member" "member" "member" ...
## $ time_dy_trip : num [1:221438] 0 0 0 0 0 0 0 0 0 0 ...
## $ time_hr_trip : num [1:221438] 0 0 0 0 0 0 0 0 0 0 ...
## $ time_mn_trip : num [1:221438] 3 6 8 5 1 11 6 6 5 1 ...
## $ time_trip : num [1:221438] 3 6 8 5 1 11 6 6 5 1 ...
## $ weekday_trip : chr [1:221438] "6Sabado" "7Domingo" "7Domingo" "7Domingo" ...
## $ year_trip : num [1:221438] 2023 2023 2023 2023 2023 ...
## $ month_trip : num [1:221438] 12 12 12 12 12 12 12 12 12 12 ...
## $ day_trip : num [1:221438] 2 2 24 24 24 24 24 24 11 3 ...
## - attr(*, "spec")=
## .. cols(
## .. ride_id = col_character(),
## .. rideable_type = col_character(),
## .. member_casual = col_character(),
## .. time_dy_trip = col_double(),
## .. time_hr_trip = col_double(),
## .. time_mn_trip = col_double(),
## .. time_trip = col_double(),
## .. weekday_trip = col_character(),
## .. year_trip = col_double(),
## .. month_trip = col_double(),
## .. day_trip = col_double()
## .. )
## - attr(*, "problems")=<externalptr>
## spc_tbl_ [142,367 × 11] (S3: spec_tbl_df/tbl_df/tbl/data.frame)
## $ ride_id : chr [1:142367] "C1D650626C8C899A" "EECD38BDB25BFCB0" "F4A9CE78061F17F7" "0A0D9E15EE50B171" ...
## $ rideable_type: chr [1:142367] "electric_bike" "electric_bike" "electric_bike" "classic_bike" ...
## $ member_casual: chr [1:142367] "member" "member" "member" "member" ...
## $ time_dy_trip : num [1:142367] 0 0 0 0 0 0 0 0 0 0 ...
## $ time_hr_trip : num [1:142367] 0 0 0 0 0 0 0 0 0 0 ...
## $ time_mn_trip : num [1:142367] 7 7 8 30 26 9 9 9 11 9 ...
## $ time_trip : num [1:142367] 7 7 8 30 26 9 9 9 11 9 ...
## $ weekday_trip : chr [1:142367] "1Lunes" "6Sabado" "1Lunes" "3Miercoles" ...
## $ year_trip : num [1:142367] 2024 2024 2024 2024 2024 ...
## $ month_trip : num [1:142367] 1 1 1 1 1 1 1 1 1 1 ...
## $ day_trip : num [1:142367] 12 8 27 29 31 7 5 4 1 3 ...
## - attr(*, "spec")=
## .. cols(
## .. ride_id = col_character(),
## .. rideable_type = col_character(),
## .. member_casual = col_character(),
## .. time_dy_trip = col_double(),
## .. time_hr_trip = col_double(),
## .. time_mn_trip = col_double(),
## .. time_trip = col_double(),
## .. weekday_trip = col_character(),
## .. year_trip = col_double(),
## .. month_trip = col_double(),
## .. day_trip = col_double()
## .. )
## - attr(*, "problems")=<externalptr>
A continuación usaremos la función head para ver los primeros datos del marco de datos:
## # A tibble: 6 × 11
## ride_id rideable_type member_casual time_dy_trip time_hr_trip time_mn_trip
## <chr> <chr> <chr> <dbl> <dbl> <dbl>
## 1 CBCD0D7777… classic_bike casual 0 0 14
## 2 F3EC5FCE5F… electric_bike casual 0 0 6
## 3 E54C1F27FA… classic_bike member 0 0 25
## 4 3D561E04F7… electric_bike member 0 0 27
## 5 0CB4B4D53B… electric_bike member 0 0 10
## 6 C67EB62172… classic_bike member 0 0 6
## # ℹ 5 more variables: time_trip <dbl>, weekday_trip <chr>, year_trip <dbl>,
## # month_trip <dbl>, day_trip <dbl>
## # A tibble: 6 × 11
## ride_id rideable_type member_casual time_dy_trip time_hr_trip time_mn_trip
## <chr> <chr> <chr> <dbl> <dbl> <dbl>
## 1 6842AA605E… electric_bike member 0 0 2
## 2 F984267A75… electric_bike member 0 0 8
## 3 FF7CF57CFE… classic_bike member 0 0 10
## 4 6B61B91603… classic_bike member 0 0 15
## 5 E55E61A5F1… electric_bike member 0 0 11
## 6 123AAD6768… classic_bike member 0 0 14
## # ℹ 5 more variables: time_trip <dbl>, weekday_trip <chr>, year_trip <dbl>,
## # month_trip <dbl>, day_trip <dbl>
## # A tibble: 6 × 11
## ride_id rideable_type member_casual time_dy_trip time_hr_trip time_mn_trip
## <chr> <chr> <chr> <dbl> <dbl> <dbl>
## 1 8FE8F7D9C1… electric_bike member 0 0 4
## 2 34E4ED3ADF… electric_bike member 0 0 23
## 3 5296BF07A2… electric_bike member 0 0 2
## 4 40759916B7… electric_bike member 0 0 4
## 5 77A96F4601… electric_bike member 0 0 5
## 6 8D6A2328E1… electric_bike member 0 0 4
## # ℹ 5 more variables: time_trip <dbl>, weekday_trip <chr>, year_trip <dbl>,
## # month_trip <dbl>, day_trip <dbl>
## # A tibble: 6 × 11
## ride_id rideable_type member_casual time_dy_trip time_hr_trip time_mn_trip
## <chr> <chr> <chr> <dbl> <dbl> <dbl>
## 1 0D9FA920C3… electric_bike member 0 0 5
## 2 92485E5FB5… electric_bike member 0 0 9
## 3 FB144B3FC8… electric_bike member 0 0 4
## 4 DDEB93BC2C… classic_bike member 0 0 12
## 5 C07B70172F… classic_bike member 0 0 9
## 6 2BA66385DF… classic_bike member 0 0 16
## # ℹ 5 more variables: time_trip <dbl>, weekday_trip <chr>, year_trip <dbl>,
## # month_trip <dbl>, day_trip <dbl>
## # A tibble: 6 × 11
## ride_id rideable_type member_casual time_dy_trip time_hr_trip time_mn_trip
## <chr> <chr> <chr> <dbl> <dbl> <dbl>
## 1 6F1682AC40… electric_bike member 0 0 57
## 2 622A1686D6… electric_bike member 0 0 3
## 3 3C88859D92… electric_bike member 0 0 17
## 4 EAD8A5E025… electric_bike member 0 0 4
## 5 5A36F21930… electric_bike member 0 0 4
## 6 CF682EA7D0… electric_bike member 0 0 19
## # ℹ 5 more variables: time_trip <dbl>, weekday_trip <chr>, year_trip <dbl>,
## # month_trip <dbl>, day_trip <dbl>
## # A tibble: 6 × 11
## ride_id rideable_type member_casual time_dy_trip time_hr_trip time_mn_trip
## <chr> <chr> <chr> <dbl> <dbl> <dbl>
## 1 9340B064F0… electric_bike member 0 0 16
## 2 D1460EE3CE… classic_bike member 0 0 13
## 3 DF41BE31B8… classic_bike member 0 0 10
## 4 9624A29374… electric_bike member 0 0 5
## 5 2F68A6A4CD… classic_bike member 0 0 12
## 6 9AEE973E6B… classic_bike member 0 0 5
## # ℹ 5 more variables: time_trip <dbl>, weekday_trip <chr>, year_trip <dbl>,
## # month_trip <dbl>, day_trip <dbl>
## # A tibble: 6 × 11
## ride_id rideable_type member_casual time_dy_trip time_hr_trip time_mn_trip
## <chr> <chr> <chr> <dbl> <dbl> <dbl>
## 1 903C30C2D8… electric_bike member 0 0 12
## 2 F2FB18A98E… electric_bike member 0 0 15
## 3 D0DEC7C94E… electric_bike member 0 0 12
## 4 E0DDDC5F84… electric_bike member 0 0 9
## 5 7797A4874B… electric_bike member 0 0 21
## 6 DF4DE734EB… electric_bike member 0 0 27
## # ℹ 5 more variables: time_trip <dbl>, weekday_trip <chr>, year_trip <dbl>,
## # month_trip <dbl>, day_trip <dbl>
## # A tibble: 6 × 11
## ride_id rideable_type member_casual time_dy_trip time_hr_trip time_mn_trip
## <chr> <chr> <chr> <dbl> <dbl> <dbl>
## 1 011C1903BF… classic_bike member 0 0 6
## 2 87DB80E048… classic_bike member 0 0 12
## 3 7C2EB7AF66… electric_bike member 0 0 11
## 4 57D197B010… classic_bike member 0 0 9
## 5 8A2CEA7C8C… classic_bike member 0 0 7
## 6 03F7044D13… electric_bike member 0 0 11
## # ℹ 5 more variables: time_trip <dbl>, weekday_trip <chr>, year_trip <dbl>,
## # month_trip <dbl>, day_trip <dbl>
## # A tibble: 6 × 11
## ride_id rideable_type member_casual time_dy_trip time_hr_trip time_mn_trip
## <chr> <chr> <chr> <dbl> <dbl> <dbl>
## 1 4449097279… classic_bike member 0 0 13
## 2 9CF060543C… electric_bike member 0 0 13
## 3 667F21F4D6… electric_bike member 0 0 4
## 4 F92714CC6B… classic_bike member 0 0 5
## 5 5E34BA5DE9… classic_bike member 0 0 11
## 6 F7D7420AFA… electric_bike member 0 0 15
## # ℹ 5 more variables: time_trip <dbl>, weekday_trip <chr>, year_trip <dbl>,
## # month_trip <dbl>, day_trip <dbl>
## # A tibble: 6 × 11
## ride_id rideable_type member_casual time_dy_trip time_hr_trip time_mn_trip
## <chr> <chr> <chr> <dbl> <dbl> <dbl>
## 1 4EAD8F1AD5… electric_bike member 0 0 23
## 2 6322270563… electric_bike member 0 0 33
## 3 B37BDE091E… electric_bike member 0 0 1
## 4 CF0CA5DD26… classic_bike member 0 0 26
## 5 EB8381AA64… classic_bike member 0 0 34
## 6 B8CF14EA42… electric_bike member 0 0 24
## # ℹ 5 more variables: time_trip <dbl>, weekday_trip <chr>, year_trip <dbl>,
## # month_trip <dbl>, day_trip <dbl>
## # A tibble: 6 × 11
## ride_id rideable_type member_casual time_dy_trip time_hr_trip time_mn_trip
## <chr> <chr> <chr> <dbl> <dbl> <dbl>
## 1 C9BD54F578… electric_bike member 0 0 3
## 2 CDBD92F067… electric_bike member 0 0 6
## 3 ABC0858E52… electric_bike member 0 0 8
## 4 F44B6F0E8F… electric_bike member 0 0 5
## 5 3C87641328… electric_bike member 0 0 1
## 6 28C0D6EFB8… electric_bike member 0 0 11
## # ℹ 5 more variables: time_trip <dbl>, weekday_trip <chr>, year_trip <dbl>,
## # month_trip <dbl>, day_trip <dbl>
## # A tibble: 6 × 11
## ride_id rideable_type member_casual time_dy_trip time_hr_trip time_mn_trip
## <chr> <chr> <chr> <dbl> <dbl> <dbl>
## 1 C1D650626C… electric_bike member 0 0 7
## 2 EECD38BDB2… electric_bike member 0 0 7
## 3 F4A9CE7806… electric_bike member 0 0 8
## 4 0A0D9E15EE… classic_bike member 0 0 30
## 5 33FFC9805E… classic_bike member 0 0 26
## 6 C96080812C… classic_bike member 0 0 9
## # ℹ 5 more variables: time_trip <dbl>, weekday_trip <chr>, year_trip <dbl>,
## # month_trip <dbl>, day_trip <dbl>
Usando la función summary obtenemos un resumen del marco de datos:
## ride_id rideable_type member_casual time_dy_trip
## Length:186663 Length:186663 Length:186663 Min. : 0.000000
## Class :character Class :character Class :character 1st Qu.: 0.000000
## Mode :character Mode :character Mode :character Median : 0.000000
## Mean : 0.001184
## 3rd Qu.: 0.000000
## Max. :13.000000
## time_hr_trip time_mn_trip time_trip weekday_trip
## Min. : 0.00000 Min. : 0.00 Min. : 1.00 Length:186663
## 1st Qu.: 0.00000 1st Qu.: 5.00 1st Qu.: 5.00 Class :character
## Median : 0.00000 Median : 8.00 Median : 8.00 Mode :character
## Mean : 0.02912 Mean :10.35 Mean : 13.81
## 3rd Qu.: 0.00000 3rd Qu.:13.00 3rd Qu.: 13.00
## Max. :23.00000 Max. :59.00 Max. :18865.00
## year_trip month_trip day_trip
## Min. :2023 Min. :2 Min. : 1.00
## 1st Qu.:2023 1st Qu.:2 1st Qu.: 8.00
## Median :2023 Median :2 Median :14.00
## Mean :2023 Mean :2 Mean :15.03
## 3rd Qu.:2023 3rd Qu.:2 3rd Qu.:21.00
## Max. :2023 Max. :2 Max. :28.00
## ride_id rideable_type member_casual time_dy_trip
## Length:252915 Length:252915 Length:252915 Min. : 0.000000
## Class :character Class :character Class :character 1st Qu.: 0.000000
## Mode :character Mode :character Mode :character Median : 0.000000
## Mean : 0.001052
## 3rd Qu.: 0.000000
## Max. :11.000000
## time_hr_trip time_mn_trip time_trip weekday_trip
## Min. : 0.000 Min. : 0.0 Min. : 1.00 Length:252915
## 1st Qu.: 0.000 1st Qu.: 5.0 1st Qu.: 5.00 Class :character
## Median : 0.000 Median : 8.0 Median : 8.00 Mode :character
## Mean : 0.026 Mean :10.3 Mean : 13.38
## 3rd Qu.: 0.000 3rd Qu.:13.0 3rd Qu.: 13.00
## Max. :23.000 Max. :59.0 Max. :16808.00
## year_trip month_trip day_trip
## Min. :2023 Min. :3 Min. : 1.00
## 1st Qu.:2023 1st Qu.:3 1st Qu.: 8.00
## Median :2023 Median :3 Median :16.00
## Mean :2023 Mean :3 Mean :16.32
## 3rd Qu.:2023 3rd Qu.:3 3rd Qu.:24.00
## Max. :2023 Max. :3 Max. :31.00
## ride_id rideable_type member_casual time_dy_trip
## Length:417353 Length:417353 Length:417353 Min. : 0.000000
## Class :character Class :character Class :character 1st Qu.: 0.000000
## Mode :character Mode :character Mode :character Median : 0.000000
## Mean : 0.001069
## 3rd Qu.: 0.000000
## Max. :12.000000
## time_hr_trip time_mn_trip time_trip weekday_trip
## Min. : 0.00000 Min. : 0.00 Min. : 1.00 Length:417353
## 1st Qu.: 0.00000 1st Qu.: 5.00 1st Qu.: 5.00 Class :character
## Median : 0.00000 Median : 9.00 Median : 9.00 Mode :character
## Mean : 0.04752 Mean :12.35 Mean : 16.74
## 3rd Qu.: 0.00000 3rd Qu.:16.00 3rd Qu.: 16.00
## Max. :23.00000 Max. :59.00 Max. :18395.00
## year_trip month_trip day_trip
## Min. :2023 Min. :4 Min. : 1.00
## 1st Qu.:2023 1st Qu.:4 1st Qu.:10.00
## Median :2023 Median :4 Median :15.00
## Mean :2023 Mean :4 Mean :15.61
## 3rd Qu.:2023 3rd Qu.:4 3rd Qu.:22.00
## Max. :2023 Max. :4 Max. :30.00
## ride_id rideable_type member_casual time_dy_trip
## Length:594103 Length:594103 Length:594103 Min. :0.00e+00
## Class :character Class :character Class :character 1st Qu.:0.00e+00
## Mode :character Mode :character Mode :character Median :0.00e+00
## Mean :9.98e-04
## 3rd Qu.:0.00e+00
## Max. :2.00e+01
## time_hr_trip time_mn_trip time_trip weekday_trip
## Min. : 0.00000 Min. : 0.00 Min. : 1.00 Length:594103
## 1st Qu.: 0.00000 1st Qu.: 6.00 1st Qu.: 6.00 Class :character
## Median : 0.00000 Median :10.00 Median : 10.00 Mode :character
## Mean : 0.05399 Mean :13.54 Mean : 18.21
## 3rd Qu.: 0.00000 3rd Qu.:18.00 3rd Qu.: 19.00
## Max. :23.00000 Max. :59.00 Max. :29210.00
## year_trip month_trip day_trip
## Min. :2023 Min. :5 Min. : 1.00
## 1st Qu.:2023 1st Qu.:5 1st Qu.: 9.00
## Median :2023 Median :5 Median :18.00
## Mean :2023 Mean :5 Mean :17.17
## 3rd Qu.:2023 3rd Qu.:5 3rd Qu.:25.00
## Max. :2023 Max. :5 Max. :31.00
## ride_id rideable_type member_casual time_dy_trip
## Length:708494 Length:708494 Length:708494 Min. : 0.000000
## Class :character Class :character Class :character 1st Qu.: 0.000000
## Mode :character Mode :character Mode :character Median : 0.000000
## Mean : 0.001369
## 3rd Qu.: 0.000000
## Max. :20.000000
## time_hr_trip time_mn_trip time_trip weekday_trip
## Min. : 0.00000 Min. : 0.00 Min. : 1.00 Length:708494
## 1st Qu.: 0.00000 1st Qu.: 6.00 1st Qu.: 6.00 Class :character
## Median : 0.00000 Median :11.00 Median : 11.00 Mode :character
## Mean : 0.05455 Mean :13.81 Mean : 19.06
## 3rd Qu.: 0.00000 3rd Qu.:18.00 3rd Qu.: 19.00
## Max. :23.00000 Max. :59.00 Max. :29466.00
## year_trip month_trip day_trip
## Min. :2023 Min. :6 Min. : 1.00
## 1st Qu.:2023 1st Qu.:6 1st Qu.: 7.00
## Median :2023 Median :6 Median :16.00
## Mean :2023 Mean :6 Mean :15.25
## 3rd Qu.:2023 3rd Qu.:6 3rd Qu.:23.00
## Max. :2023 Max. :6 Max. :30.00
## ride_id rideable_type member_casual time_dy_trip
## Length:755955 Length:755955 Length:755955 Min. : 0.00000
## Class :character Class :character Class :character 1st Qu.: 0.00000
## Mode :character Mode :character Mode :character Median : 0.00000
## Mean : 0.00179
## 3rd Qu.: 0.00000
## Max. :35.00000
## time_hr_trip time_mn_trip time_trip weekday_trip
## Min. : 0.00000 Min. : 0.00 Min. : 1.00 Length:755955
## 1st Qu.: 0.00000 1st Qu.: 6.00 1st Qu.: 6.00 Class :character
## Median : 0.00000 Median :11.00 Median : 11.00 Mode :character
## Mean : 0.06242 Mean :14.21 Mean : 20.54
## 3rd Qu.: 0.00000 3rd Qu.:19.00 3rd Qu.: 20.00
## Max. :23.00000 Max. :59.00 Max. :51462.00
## year_trip month_trip day_trip
## Min. :2023 Min. :7 Min. : 1.00
## 1st Qu.:2023 1st Qu.:7 1st Qu.: 9.00
## Median :2023 Median :7 Median :17.00
## Mean :2023 Mean :7 Mean :16.63
## 3rd Qu.:2023 3rd Qu.:7 3rd Qu.:24.00
## Max. :2023 Max. :7 Max. :31.00
## ride_id rideable_type member_casual time_dy_trip
## Length:760971 Length:760971 Length:760971 Min. : 0.00000
## Class :character Class :character Class :character 1st Qu.: 0.00000
## Mode :character Mode :character Mode :character Median : 0.00000
## Mean : 0.00262
## 3rd Qu.: 0.00000
## Max. :68.00000
## time_hr_trip time_mn_trip time_trip weekday_trip
## Min. : 0.00000 Min. : 0.00 Min. : 1.00 Length:760971
## 1st Qu.: 0.00000 1st Qu.: 6.00 1st Qu.: 6.00 Class :character
## Median : 0.00000 Median :11.00 Median : 11.00 Mode :character
## Mean : 0.05702 Mean :13.82 Mean : 21.02
## 3rd Qu.: 0.00000 3rd Qu.:18.00 3rd Qu.: 19.00
## Max. :23.00000 Max. :59.00 Max. :98489.00
## year_trip month_trip day_trip
## Min. :2023 Min. :8 Min. : 1.00
## 1st Qu.:2023 1st Qu.:8 1st Qu.: 8.00
## Median :2023 Median :8 Median :16.00
## Mean :2023 Mean :8 Mean :15.82
## 3rd Qu.:2023 3rd Qu.:8 3rd Qu.:24.00
## Max. :2023 Max. :8 Max. :31.00
## ride_id rideable_type member_casual time_dy_trip
## Length:657924 Length:657924 Length:657924 Min. :0.00e+00
## Class :character Class :character Class :character 1st Qu.:0.00e+00
## Mode :character Mode :character Mode :character Median :0.00e+00
## Mean :6.23e-05
## 3rd Qu.:0.00e+00
## Max. :1.00e+00
## time_hr_trip time_mn_trip time_trip weekday_trip
## Min. : 0.0000 Min. : 0.00 Min. : 1.00 Length:657924
## 1st Qu.: 0.0000 1st Qu.: 6.00 1st Qu.: 6.00 Class :character
## Median : 0.0000 Median :10.00 Median : 10.00 Mode :character
## Mean : 0.0472 Mean :13.39 Mean : 16.31
## 3rd Qu.: 0.0000 3rd Qu.:17.00 3rd Qu.: 18.00
## Max. :23.0000 Max. :59.00 Max. :1548.00
## year_trip month_trip day_trip
## Min. :2023 Min. :9 Min. : 1.0
## 1st Qu.:2023 1st Qu.:9 1st Qu.: 8.0
## Median :2023 Median :9 Median :15.0
## Mean :2023 Mean :9 Mean :15.4
## 3rd Qu.:2023 3rd Qu.:9 3rd Qu.:23.0
## Max. :2023 Max. :9 Max. :30.0
## ride_id rideable_type member_casual time_dy_trip
## Length:530391 Length:530391 Length:530391 Min. :0.00e+00
## Class :character Class :character Class :character 1st Qu.:0.00e+00
## Mode :character Mode :character Mode :character Median :0.00e+00
## Mean :3.96e-05
## 3rd Qu.:0.00e+00
## Max. :1.00e+00
## time_hr_trip time_mn_trip time_trip weekday_trip
## Min. : 0.00000 Min. : 0.00 Min. : 1.00 Length:530391
## 1st Qu.: 0.00000 1st Qu.: 5.00 1st Qu.: 5.00 Class :character
## Median : 0.00000 Median : 9.00 Median : 9.00 Mode :character
## Mean : 0.03783 Mean :11.95 Mean : 14.28
## 3rd Qu.: 0.00000 3rd Qu.:15.00 3rd Qu.: 16.00
## Max. :23.00000 Max. :59.00 Max. :1500.00
## year_trip month_trip day_trip
## Min. :2023 Min. :10 Min. : 1.00
## 1st Qu.:2023 1st Qu.:10 1st Qu.: 6.00
## Median :2023 Median :10 Median :14.00
## Mean :2023 Mean :10 Mean :14.47
## 3rd Qu.:2023 3rd Qu.:10 3rd Qu.:22.00
## Max. :2023 Max. :10 Max. :31.00
## ride_id rideable_type member_casual time_dy_trip
## Length:358207 Length:358207 Length:358207 Min. :0.00e+00
## Class :character Class :character Class :character 1st Qu.:0.00e+00
## Mode :character Mode :character Mode :character Median :0.00e+00
## Mean :1.68e-05
## 3rd Qu.:0.00e+00
## Max. :1.00e+00
## time_hr_trip time_mn_trip time_trip weekday_trip
## Min. : 0.00000 Min. : 0.00 Min. : 1.0 Length:358207
## 1st Qu.: 0.00000 1st Qu.: 5.00 1st Qu.: 5.0 Class :character
## Median : 0.00000 Median : 8.00 Median : 8.0 Mode :character
## Mean : 0.02593 Mean :10.92 Mean : 12.5
## 3rd Qu.: 0.00000 3rd Qu.:14.00 3rd Qu.: 14.0
## Max. :23.00000 Max. :59.00 Max. :1500.0
## year_trip month_trip day_trip
## Min. :2023 Min. :11 Min. : 1.00
## 1st Qu.:2023 1st Qu.:11 1st Qu.: 7.00
## Median :2023 Median :11 Median :13.00
## Mean :2023 Mean :11 Mean :13.47
## 3rd Qu.:2023 3rd Qu.:11 3rd Qu.:19.00
## Max. :2023 Max. :11 Max. :30.00
## ride_id rideable_type member_casual time_dy_trip
## Length:221438 Length:221438 Length:221438 Min. :0.00e+00
## Class :character Class :character Class :character 1st Qu.:0.00e+00
## Mode :character Mode :character Mode :character Median :0.00e+00
## Mean :3.16e-05
## 3rd Qu.:0.00e+00
## Max. :1.00e+00
## time_hr_trip time_mn_trip time_trip weekday_trip
## Min. : 0.00000 Min. : 0.00 Min. : 1.0 Length:221438
## 1st Qu.: 0.00000 1st Qu.: 5.00 1st Qu.: 5.0 Class :character
## Median : 0.00000 Median : 8.00 Median : 8.0 Mode :character
## Mean : 0.02461 Mean :10.38 Mean : 11.9
## 3rd Qu.: 0.00000 3rd Qu.:13.00 3rd Qu.: 13.0
## Max. :23.00000 Max. :59.00 Max. :1500.0
## year_trip month_trip day_trip
## Min. :2023 Min. :12 Min. : 1.00
## 1st Qu.:2023 1st Qu.:12 1st Qu.: 7.00
## Median :2023 Median :12 Median :13.00
## Mean :2023 Mean :12 Mean :13.77
## 3rd Qu.:2023 3rd Qu.:12 3rd Qu.:20.00
## Max. :2023 Max. :12 Max. :31.00
## ride_id rideable_type member_casual time_dy_trip
## Length:142367 Length:142367 Length:142367 Min. :0.000000
## Class :character Class :character Class :character 1st Qu.:0.000000
## Mode :character Mode :character Mode :character Median :0.000000
## Mean :0.005247
## 3rd Qu.:0.000000
## Max. :2.000000
## time_hr_trip time_mn_trip time_trip weekday_trip
## Min. : 0.00000 Min. : 0.000 Min. : 1.00 Length:142367
## 1st Qu.: 0.00000 1st Qu.: 5.000 1st Qu.: 5.00 Class :character
## Median : 0.00000 Median : 7.000 Median : 7.00 Mode :character
## Mean : 0.03759 Mean : 9.742 Mean : 19.55
## 3rd Qu.: 0.00000 3rd Qu.:12.000 3rd Qu.: 12.00
## Max. :23.00000 Max. :59.000 Max. :2940.00
## year_trip month_trip day_trip
## Min. :2024 Min. :1 Min. : 1.00
## 1st Qu.:2024 1st Qu.:1 1st Qu.: 6.00
## Median :2024 Median :1 Median :13.00
## Mean :2024 Mean :1 Mean :15.73
## 3rd Qu.:2024 3rd Qu.:1 3rd Qu.:25.00
## Max. :2024 Max. :1 Max. :31.00
Comprobamos que todos los marcos de datos tengan los mismos nombres de columnas con la función names:
## [1] "ride_id" "rideable_type" "member_casual" "time_dy_trip"
## [5] "time_hr_trip" "time_mn_trip" "time_trip" "weekday_trip"
## [9] "year_trip" "month_trip" "day_trip"
## [1] "ride_id" "rideable_type" "member_casual" "time_dy_trip"
## [5] "time_hr_trip" "time_mn_trip" "time_trip" "weekday_trip"
## [9] "year_trip" "month_trip" "day_trip"
## [1] "ride_id" "rideable_type" "member_casual" "time_dy_trip"
## [5] "time_hr_trip" "time_mn_trip" "time_trip" "weekday_trip"
## [9] "year_trip" "month_trip" "day_trip"
## [1] "ride_id" "rideable_type" "member_casual" "time_dy_trip"
## [5] "time_hr_trip" "time_mn_trip" "time_trip" "weekday_trip"
## [9] "year_trip" "month_trip" "day_trip"
## [1] "ride_id" "rideable_type" "member_casual" "time_dy_trip"
## [5] "time_hr_trip" "time_mn_trip" "time_trip" "weekday_trip"
## [9] "year_trip" "month_trip" "day_trip"
## [1] "ride_id" "rideable_type" "member_casual" "time_dy_trip"
## [5] "time_hr_trip" "time_mn_trip" "time_trip" "weekday_trip"
## [9] "year_trip" "month_trip" "day_trip"
## [1] "ride_id" "rideable_type" "member_casual" "time_dy_trip"
## [5] "time_hr_trip" "time_mn_trip" "time_trip" "weekday_trip"
## [9] "year_trip" "month_trip" "day_trip"
## [1] "ride_id" "rideable_type" "member_casual" "time_dy_trip"
## [5] "time_hr_trip" "time_mn_trip" "time_trip" "weekday_trip"
## [9] "year_trip" "month_trip" "day_trip"
## [1] "ride_id" "rideable_type" "member_casual" "time_dy_trip"
## [5] "time_hr_trip" "time_mn_trip" "time_trip" "weekday_trip"
## [9] "year_trip" "month_trip" "day_trip"
## [1] "ride_id" "rideable_type" "member_casual" "time_dy_trip"
## [5] "time_hr_trip" "time_mn_trip" "time_trip" "weekday_trip"
## [9] "year_trip" "month_trip" "day_trip"
## [1] "ride_id" "rideable_type" "member_casual" "time_dy_trip"
## [5] "time_hr_trip" "time_mn_trip" "time_trip" "weekday_trip"
## [9] "year_trip" "month_trip" "day_trip"
## [1] "ride_id" "rideable_type" "member_casual" "time_dy_trip"
## [5] "time_hr_trip" "time_mn_trip" "time_trip" "weekday_trip"
## [9] "year_trip" "month_trip" "day_trip"
Ahora uniremos todos los datos para poder sacar gráficos que incluyan doce meses hacia atrás de la actividad de renta de biciletas de la empresa, para ello usremos la función bind_rows.
Procedemos a revisar del marco de datos unificado con la función summary:
## ride_id rideable_type member_casual time_dy_trip
## Length:5586781 Length:5586781 Length:5586781 Min. : 0.00000
## Class :character Class :character Class :character 1st Qu.: 0.00000
## Mode :character Mode :character Mode :character Median : 0.00000
## Mean : 0.00119
## 3rd Qu.: 0.00000
## Max. :68.00000
## time_hr_trip time_mn_trip time_trip weekday_trip
## Min. : 0.00000 Min. : 0.0 Min. : 1.00 Length:5586781
## 1st Qu.: 0.00000 1st Qu.: 6.0 1st Qu.: 6.00 Class :character
## Median : 0.00000 Median :10.0 Median : 10.00 Mode :character
## Mean : 0.04732 Mean :12.8 Mean : 17.36
## 3rd Qu.: 0.00000 3rd Qu.:17.0 3rd Qu.: 17.00
## Max. :23.00000 Max. :59.0 Max. :98489.00
## year_trip month_trip day_trip
## Min. :2023 Min. : 1.000 Min. : 1.00
## 1st Qu.:2023 1st Qu.: 5.000 1st Qu.: 8.00
## Median :2023 Median : 7.000 Median :15.00
## Mean :2023 Mean : 7.047 Mean :15.57
## 3rd Qu.:2023 3rd Qu.: 9.000 3rd Qu.:23.00
## Max. :2024 Max. :12.000 Max. :31.00
Podemos observar en el resumen del marco de datos unificado que no hay valores anómalos para los datos númericos y que el número de valores faltantes en las columnas end_lat y end_lng no son determinantes para los cálculos que se pudiese realizar sobre ellas.
A partir de este punto comenzaremos el análisis de los datos para detectar correlaciones entre los mismos y tener una base para elaborar consejos a la empresa para lograr sus objetivos.
No se detecta sesgo en los datos depurados y se esta en posibilidad de realizar el análisis de los datos.
Generar un comparativo de tipo de miembro y duración del viaje durante el año
## df_anual$member_casual df_anual$time_trip
## 1 casual 25.88879
## 2 member 12.55781
Comparar el viaje más largo de de cada tipo de cliente en el año
## df_anual$member_casual df_anual$time_trip
## 1 casual 98489
## 2 member 2940
Comparar el viaje más corto para cada tipo de cliente en el año
## df_anual$member_casual df_anual$time_trip
## 1 casual 1
## 2 member 1
Comparar el tiempo promedio de viaje por día para cada tipo de cliente en el año
## df_anual$member_casual df_anual$weekday_trip df_anual$time_trip
## 1 casual 1Lunes 26.96537
## 2 member 1Lunes 12.40837
## 3 casual 2Martes 26.58116
## 4 member 2Martes 12.45907
## 5 casual 3Miercoles 26.15309
## 6 member 3Miercoles 12.48197
## 7 casual 4Jueves 25.73369
## 8 member 4Jueves 12.36050
## 9 casual 5Viernes 24.95524
## 10 member 5Viernes 12.52615
## 11 casual 6Sabado 25.57185
## 12 member 6Sabado 12.91852
## 13 casual 7Domingo 25.69838
## 14 member 7Domingo 12.83438
Comparativo de tiempo de uso por día de semana y cliente
## `summarise()` has grouped output by 'member_casual'. You can override using the
## `.groups` argument.
## # A tibble: 14 × 4
## # Groups: member_casual [2]
## member_casual weekday_trip number_of_rides average_duration
## <chr> <chr> <int> <dbl>
## 1 casual 1Lunes 235349 27.0
## 2 member 1Lunes 478500 12.4
## 3 casual 2Martes 257755 26.6
## 4 member 2Martes 539360 12.5
## 5 casual 3Miercoles 265532 26.2
## 6 member 3Miercoles 558128 12.5
## 7 casual 4Jueves 283219 25.7
## 8 member 4Jueves 563615 12.4
## 9 casual 5Viernes 304360 25.0
## 10 member 5Viernes 517819 12.5
## 11 casual 6Sabado 371378 25.6
## 12 member 6Sabado 490420 12.9
## 13 casual 7Domingo 295432 25.7
## 14 member 7Domingo 425914 12.8
Comparativo de tiempo de uso por mes del año de los clientes
## `summarise()` has grouped output by 'member_casual'. You can override using the
## `.groups` argument.
## # A tibble: 24 × 4
## # Groups: member_casual [2]
## member_casual month_trip number_of_rides average_duration
## <chr> <dbl> <int> <dbl>
## 1 casual 1 24065 28.1
## 2 member 1 118302 17.8
## 3 casual 2 42271 23.6
## 4 member 2 144392 10.9
## 5 casual 3 61013 21.8
## 6 member 3 191902 10.7
## 7 casual 4 144407 26.2
## 8 member 4 272946 11.7
## 9 casual 5 230266 26.7
## 10 member 5 363837 12.8
## # ℹ 14 more rows
Comparativo de tiempo de uso por mes día de la semana y tipo de cliente en el año
## `summarise()` has grouped output by 'member_casual', 'month_trip'. You can
## override using the `.groups` argument.
## # A tibble: 168 × 5
## # Groups: member_casual, month_trip [24]
## member_casual month_trip weekday_trip number_of_rides average_duration
## <chr> <dbl> <chr> <int> <dbl>
## 1 casual 1 1Lunes 4164 32.6
## 2 member 1 1Lunes 19262 17.7
## 3 casual 1 2Martes 3506 22.6
## 4 member 1 2Martes 18505 18.3
## 5 casual 1 3Miercoles 4813 30.0
## 6 member 1 3Miercoles 25762 18.0
## 7 casual 1 4Jueves 4287 27.6
## 8 member 1 4Jueves 22346 16.8
## 9 casual 1 5Viernes 2934 24.1
## 10 member 1 5Viernes 13639 16.8
## # ℹ 158 more rows
Generar un comparativo de tipo de vehículo y duración del viaje durante el año
## df_anual$rideable_type df_anual$time_trip
## 1 classic_bike 17.92928
## 2 docked_bike 173.01327
## 3 electric_bike 12.67839
Comparar el viaje más largo de de cada tipo de vehículo en el año
## df_anual$rideable_type df_anual$time_trip
## 1 classic_bike 2940
## 2 docked_bike 98489
## 3 electric_bike 1920
Comparar el viaje más corto para cada tipo de vehículo en el año
## df_anual$rideable_type df_anual$time_trip
## 1 classic_bike 1
## 2 docked_bike 1
## 3 electric_bike 1
Comparar el tiempo promedio de viaje por día para cada tipo de vehículo en el año
## df_anual$rideable_type df_anual$weekday_trip df_anual$time_trip
## 1 classic_bike 1Lunes 17.54982
## 2 docked_bike 1Lunes 175.84853
## 3 electric_bike 1Lunes 12.47651
## 4 classic_bike 2Martes 17.21769
## 5 docked_bike 2Martes 182.38042
## 6 electric_bike 2Martes 12.22514
## 7 classic_bike 3Miercoles 17.23197
## 8 docked_bike 3Miercoles 191.45111
## 9 electric_bike 3Miercoles 12.19480
## 10 classic_bike 4Jueves 17.05517
## 11 docked_bike 4Jueves 183.25616
## 12 electric_bike 4Jueves 12.30706
## 13 classic_bike 5Viernes 17.95265
## 14 docked_bike 5Viernes 163.10204
## 15 electric_bike 5Viernes 12.71282
## 16 classic_bike 6Sabado 19.41700
## 17 docked_bike 6Sabado 165.09603
## 18 electric_bike 6Sabado 13.48295
## 19 classic_bike 7Domingo 19.12756
## 20 docked_bike 7Domingo 149.87201
## 21 electric_bike 7Domingo 13.35790
Comparativo de tiempo de uso por mes del año de los vehículos
## `summarise()` has grouped output by 'rideable_type'. You can override using the
## `.groups` argument.
## # A tibble: 31 × 4
## # Groups: rideable_type [3]
## rideable_type month_trip number_of_rides average_duration
## <chr> <dbl> <int> <dbl>
## 1 classic_bike 1 75722 25.4
## 2 electric_bike 1 66645 12.9
## 3 classic_bike 2 89119 14.1
## 4 docked_bike 2 2183 152.
## 5 electric_bike 2 95361 10.4
## 6 classic_bike 3 106182 14.4
## 7 docked_bike 3 3008 133.
## 8 electric_bike 3 143725 10.1
## 9 classic_bike 4 168167 16.9
## 10 docked_bike 4 8834 138.
## # ℹ 21 more rows
Comparativo de tiempo de uso por mes día de la semana y tipo de vehículo en el año
## `summarise()` has grouped output by 'rideable_type', 'month_trip'. You can
## override using the `.groups` argument.
## # A tibble: 217 × 5
## # Groups: rideable_type, month_trip [31]
## rideable_type month_trip weekday_trip number_of_rides average_duration
## <chr> <dbl> <chr> <int> <dbl>
## 1 classic_bike 1 1Lunes 12460 26.6
## 2 electric_bike 1 1Lunes 10966 13.3
## 3 classic_bike 1 2Martes 11890 25.7
## 4 electric_bike 1 2Martes 10121 11.2
## 5 classic_bike 1 3Miercoles 16458 26.0
## 6 electric_bike 1 3Miercoles 14117 12.8
## 7 classic_bike 1 4Jueves 14008 23.5
## 8 electric_bike 1 4Jueves 12625 13.1
## 9 classic_bike 1 5Viernes 8737 22.9
## 10 electric_bike 1 5Viernes 7836 12.7
## # ℹ 207 more rows
Una vez que hemos podido resumir los datos en tablas para su análisis, vamos a proceder a gráficar los datos para descubrir posibles patrones en los mismos.
## `summarise()` has grouped output by 'member_casual'. You can override using the
## `.groups` argument.
Este gráfico nos muestra que los clientes con membresía sueles realizar
viajes cortos en tiempo, mientras que los clientes ocasionales suelen
realizar viajes de mayor duración, lo cual podría ser indicativo que no
siguen una rutina, sino fines lúdicos o de salud.
## `summarise()` has grouped output by 'member_casual'. You can override using the
## `.groups` argument.
En este gráfico se refuerza la idea de que los clientes casuales utilizan los equipos más tiempo los fines de semana, probalemente con fines recreativos, mientras que los clientes con membresía suelen disminuir el uso de los mismos en fines de semana.
## `summarise()` has grouped output by 'member_casual'. You can override using the
## `.groups` argument.
La tercer gráfica nos confirma el dato de que los clientes con membresía suelen usar los equipos para viajes rutinarios principalmente en la semana y disminuyen su uso en los fines de semana, mientras que los usuarios csuales suelen aumentar el uso de los equipos al inicio del fin de semana.
## `summarise()` has grouped output by 'month_trip'. You can override using the
## `.groups` argument.
Esta gráfica muestra la tendencia de los clientes a utilizar más los
equipos pero por periodos más cortos de tiempo, mientras que los
clientes causales suelen usar menos los equipos pero hacer viajes de
mayro duración. ya que observamos que los promedios de uso de todos los
días de la semana son similares, pero al acumularlos por meses
observamos que el patrón de uso de los vehículos suele ser menor en los
primeros y últimos días del año alcanzar sus máximos en los meses
intermedios del año, esto debe ser producto de las variaciones
clímaticas durante los meses del año.
## `summarise()` has grouped output by 'month_trip'. You can override using the
## `.groups` argument.
El gráfico nos muestra en concordancia con el anterior, la tendencia de los clientes casuales de realizar recorridos mucho más largos en los meses intermedios del año, probablemente por las condiciones favorables del entorno. Lo clientes con membresia exhiben un patrón más acorde a una rutina laboral, con menores variaciones en el uso durante todos los meses del año.
## `summarise()` has grouped output by 'rideable_type'. You can override using the
## `.groups` argument.
Esta gráfica nos muestra que el vehículo preferido por los usuarios es la bicicleta acoplada, probablemente por el hecho de que dificulta más que pueda ser robada, y ello hace que el usuario puede emplearla con menores preocupaciones.
## `summarise()` has grouped output by 'rideable_type'. You can override using the
## `.groups` argument.
Este gráfico nos permite relacionar el uso de los vehículos con el
tiempo de los viajes, determinando que los viajes más largos que son
realizados principalmente por usuarios casuales se corresponden a los
vehículos clásicos y electricos no fijados a estaciones acpladas,
posiblemente porque permiten recorridos libres sin itinerario fijo.
## `summarise()` has grouped output by 'rideable_type'. You can override using the
## `.groups` argument.
El patrón de uso de las bicicletas acopladas es muy regular y la duración de los viajes rutinaria, sin embargo en los clientes casuales notamos que la variación en el patrón de uso es bastante pronunciada entre viajes muy largos y viajes muy cortos, no se tiene información de los ingresos generados por tipo de vehículo que nos pueda orientar sobre rentabilidad de cada uno de estos, como para tomar decisión en ese aspecto. Sin embargo, el gráfico sugiere que hay mayor desgaste en los vehículos no acoplados, principalmente los vehículos eléctricos.
## `summarise()` has grouped output by 'month_trip'. You can override using the
## `.groups` argument.
## `summarise()` has grouped output by 'month_trip'. You can override using the
## `.groups` argument.
El gráfico nos muestra que si bien las bicicletas acopladas son muy
utilizadas y tienen tiempos de uso muy estable todos los días de la
semana, no se utilizan durante todos los meses del año, sino solo
durante el periodo de febrero - agosto, probablemente por las
condiciones climáticas, no se tiene suficiente información para
determinar la causa precisa de estas variaciones. Los otros tipos de
vehículos se utilizan durante todo el año casí con la misma
intensidad
En los gráficos de tipo de vehículo y tipo de miembro pudimos descubrir que si bien los miembros muestran patrones de uso sin mucha variación durante los días de semana, no ocurre lo mismo si analizamos los meses del año, y el uso por tipo de vehículo, si bien no se posee la suficiente información para analizar en detalle la conducta de cada miembro o usuario casual a través del tiempo, si podemos analizar tendencia e inferir conclusiones.
¿En qué se diferencian los socios anuales y los ciclistas ocasionales con respecto al uso de las bicicletas de Cyclistic?
De acuerdo con los datos disponibles los ciclistas con membresia suelen hacer uso de las bicicletas acopladas para su rutina diaria de trabajo durante la mayor parte del tiempo, y cambiar a otro tipo de vehículo con el cambio de las estaciones. Es posible que dejen de usarla en los meses finales del año porque las rutas permitidas por las bicicletas acopladas no sean adecuadas para los destinos normales en los que las utilizan y por ello recurran a cambiar de tipo de vehículo durante esos periodos. Los ciclistas casuales por otra parte parecen preferir el realizar pequeños recorridos en su mayoría de corta duración.
¿Por qué los ciclistas ocasionales comprarían membresías anuales de Cyclistic?
Los viajes de los clientes casuales suelen ser cortos, podrían ofercerse membresias que cobren por distancia tiempo recorrido fraccional o por distancia (un factor que al parecer no es una métrica actual de la empresa) eso permitiría a los mismos hacer uso libre de las bicicletas hasta agotar una cuota preferente establecida solo para los vehículos no acoplados.
¿Cómo puede usar Cyclistic los medios digitales para influenciar a los ciclistas ocasionales a convertirse en miembros?
Con la finalidad de que los usuarios ocasionales se conviertan en miembros anuales, podría promoverse un programa de recompensas (tiempo o distancia adicional a su membresía anual por uso acumulado ya sea en tiempo o en distancia), ligado a una campaña de promoción del bienestar físico y el cuidado ambiental.
Elaborar un programa de promoción de hábitos saludables a través del uso de bicicletas tradicionales para trasladarse en la ciudad.
Elaborar un prograna de cuidado del medio ambiente y combate a la contaminación mediante la promoción del uso de biciletas eléctricas.
Diseñar un programa de recompensas para el uso de vehículos no acoplados que podría renominarse puntos verdes y puntos de salud con la finalidad de promover el aumento de la duración de los viajes incentivando a los usuarios casuales a adquirir su membresía para aprovechar estos beneficios.
Se propone encargar el análisis de los datos de geolocalización de los vehículos electricos y tradicionales fuera de las rutas de los vehículos acoplados en los meses en que estos no muestran uso, para determinar posibles nuevas rutas para los vehículos acoplados.
Arango, John (2023) Análisis de bicicletas compartidas Cyclistic, disponible en https://rstudio-pubs-static.s3.amazonaws.com/1107741_6875896281bf4e38908736a05c76c14f.html.
Arango, John (2023) Caso Práctico Cyclistic, disponible en https://rpubs.com/John-AB/1107693.
Pérez Buatamante, Diego (s.f.) Curso online de análisis de datos: estudio de caso Bellabeat disponible en https://www.red21.com/curso_online_de_analisis_de_datos_caso_Bellabeat.htm#s-div8.
Wickham, Hadely & Golemund, Garret (2017) R for Data Science, O’Reilly, disponible en https://r4ds.had.co.nz/index.html.
Xie, Yihui; Allaire, J. J.; Grolemund, Garret (2023) R Markdown: The definitive Guide, The R Series, CRC Press, disponible en https://bookdown.org/yihui/rmarkdown/.