<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0" xmlns:cc="http://cyber.law.harvard.edu/rss/creativeCommonsRssModule.html">
    <channel>
        <title><![CDATA[Stories by Abdul Rashid Mussah on Medium]]></title>
        <description><![CDATA[Stories by Abdul Rashid Mussah on Medium]]></description>
        <link>https://medium.com/@rasmussah?source=rss-f3fab3016428------2</link>
        <image>
            <url>https://cdn-images-1.medium.com/fit/c/150/150/1*qZQ3IlZg78gAr0uIRkdydQ.png</url>
            <title>Stories by Abdul Rashid Mussah on Medium</title>
            <link>https://medium.com/@rasmussah?source=rss-f3fab3016428------2</link>
        </image>
        <generator>Medium</generator>
        <lastBuildDate>Tue, 07 Jul 2026 03:46:03 GMT</lastBuildDate>
        <atom:link href="https://medium.com/@rasmussah/feed" rel="self" type="application/rss+xml"/>
        <webMaster><![CDATA[yourfriends@medium.com]]></webMaster>
        <atom:link href="http://medium.superfeedr.com" rel="hub"/>
        <item>
            <title><![CDATA[Google Data Analytics: Cyclyist Bike-Share Analysis]]></title>
            <link>https://medium.com/@rasmussah/google-data-analytics-cyclyist-bike-share-analysis-4bbbc2e696b8?source=rss-f3fab3016428------2</link>
            <guid isPermaLink="false">https://medium.com/p/4bbbc2e696b8</guid>
            <category><![CDATA[bike-sharing]]></category>
            <category><![CDATA[data-analysis]]></category>
            <category><![CDATA[r]]></category>
            <dc:creator><![CDATA[Abdul Rashid Mussah]]></dc:creator>
            <pubDate>Thu, 14 Jul 2022 21:18:17 GMT</pubDate>
            <atom:updated>2022-07-14T21:28:38.564Z</atom:updated>
            <content:encoded><![CDATA[<p>Case Study: How Does a Bike-Share Navigate Speedy Success?</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*VqOtKrJCQG-9Lvwv" /><figcaption>Photo by <a href="https://unsplash.com/es/@lopify?utm_source=medium&amp;utm_medium=referral">Alejandro Lopez</a> on <a href="https://unsplash.com?utm_source=medium&amp;utm_medium=referral">Unsplash</a></figcaption></figure><p>Welcome, reader, to my very first medium post.</p><p>So I just completed the <a href="https://www.coursera.org/professional-certificates/google-data-analytics">Google Data Analytics Professional Certificate</a> on Coursera, and as part of the final capstone project, I decided to work on a case study involving bike-share data. This case study will showcase all the skills picked up in the many weeks of instruction throughout this certification process, by performing a real-world task of a junior data analyst.</p><p>To put it plainly, I will be demonstrating the steps of the Data Analyst’s Roadmap which can simply be outlined as: <strong>Ask, Prepare, Process, Analyze, Share, and Act</strong>.</p><p>For this case study, I have decided to use R studio for my data preparation, analysis, and visualization.</p><h3>Scenario</h3><p>I am a junior data analyst working in the marketing analyst team at <strong>Cyclistic</strong>, a (fictional) bike-share company in Chicago. In trying to maximize the number of annual memberships, my team has been tasked with exploring the behaviors of casual riders, as well as annual members, for insights to design a new marketing strategy to convert casual riders into annual members.</p><p>But first, Cyclistic executives must approve the recommendations the team comes up with, so they must be backed up with compelling data insights and professional data visualizations.</p><p>So let&#39;s get started …</p><h3>Background</h3><p><strong>Cyclistic </strong>launched in 2016 and has since grown to a fleet of 5,824 bicycles that are geotracked and locked into a network of 692 stations across Chicago.</p><p>The company has 3 flexible pricing plans, which are <strong>single-ride passes, full-day passes, </strong>and <strong>annual memberships,</strong> with customers who purchase single-ride or full-day passes being referred to as casual riders.</p><h3>Ask</h3><p>Three simple questions will guide the future marketing program:</p><ol><li>How do annual members and casual riders use Cyclistic bikes differently</li><li>Why would casual riders buy Cyclistic annual memberships?</li><li>How can Cyclistic use digital media to influence casual riders to become members?</li></ol><p>I will be focusing on applying my data analysis skill in answering the first question for this case study.</p><h3>Prepare</h3><p>Cyclistic has provided <a href="https://divvy-tripdata.s3.amazonaws.com/index.html">historical trip data</a> from as far back as 2013, made available by Motivate International Inc. under this <a href="https://ride.divvybikes.com/data-license-agreement">license</a>. A year’s worth of data is prepared for this analysis, beginning in June 2021 and ending in May 2022. With this public data, a comprehensive profile of the different rider types can be drawn to aid the marketing campaign’s efforts.</p><p>But before we begin, we need to check whether the data <strong><em>ROCCCs </em></strong>(Reliable, Original, Comprehensive, Current and Cited). As I was able to download all 12 months’ worth of data without any errors and explore the metadata, I also observe a consistent and appropriate formatting and structure of the data. The data also comes from a reputable and well-cited source, and as such, I am confident that the data meets the expectations of the analysis I am about to perform.</p><h3>Process</h3><p>Now at the process stage, I will begin working on cleaning my data to make it ready for analysis. I begin with loading all the 12 months’ data into a single dataframe in R. This involves leading all the appropriate packages I need for my data processing and analysis, namely<strong><em> tidyverse, lubridate and ggplot2</em></strong>.</p><blockquote><em>library(tidyverse) #helps wrangle data<br>library(lubridate) #helps wrangle date attributes<br>library(ggplot2) #helps visualize data</em></blockquote><p>With the appropriate packages loaded, I am now able to read all my data files into a single dataframe in R studio using the following lines of code:</p><blockquote>temp = list.files(pattern=”*.csv”)<br>data &lt;- do.call(rbind,lapply(temp,read.csv))</blockquote><p>making sure that I have initially set my working directory to the folder containing all the CSV files of my data.</p><p>Looking at the summary of my data I notice I have <strong>5,860,776</strong> rows of data and <strong>13</strong> columns, with the format of my columns mostly showing as characters and numbers. I notice in particular that my <strong><em>started_at</em></strong> and <strong><em>ended_at</em></strong> columns are formatted as characters, instead of DateTime attributes so I will need to change that</p><blockquote>data$started_at &lt;- as.POSIXct(data$started_at,tz=Sys.timezone())<br>data$ended_at &lt;- as.POSIXct(data$ended_at,tz=Sys.timezone())</blockquote><p>The last thing I need to do to process my data for analysis is to create the necessary variables I need that are not part of the dataframe. This includes creating a <strong><em>ride_length </em></strong>variable, as well as a <strong><em>weekday </em></strong>variable by applying the following code.</p><blockquote>data$ride_length &lt;- difftime(data$ended_at,data$started_at)<br>data$date &lt;- as.Date(data$started_at) #Format is yyyy-mm-dd<br>data$day_of_week &lt;- format(as.Date(data$date), “%A”)</blockquote><p>The <strong><em>difftime </em></strong>function allows me to calculate the length of each ride by subtracting the column <strong><em>started_at</em></strong> from the column <strong><em>ended_at</em></strong>. I now have the dataframe I need in the appropriate structure and with the necessary variables to carry out my analysis.</p><h3>Analyze</h3><p>After preparing and processing the data, I can now start my analysis.</p><p>My first action will be to run general descriptive statistics on the <strong><em>ride_length </em></strong>variable, to have a broad idea of how the bike-share service is being used.</p><blockquote>mean(data$ride_length) #straight average (total ride length / rides)<br>median(data$ride_length) #midpoint number in the ascending ride lengths<br>max(data$ride_length) #longest ride<br>min(data$ride_length) #shortest ride</blockquote><p>But I notice something about one statistic, the minimum value. There seem to be negative values in the ride lengths, which shouldn&#39;t be so. I later find out that these values occurred when the bikes were being serviced and so I can exclude them from the analysis.</p><blockquote>errors = subset(data, ride_length &lt;= 0)<br>data = subset(data, ride_length &gt; 0)</blockquote><p>Subsetting the values greater than zero seconds as my true data values, I end up with <strong>5,860,130</strong> data points. I can now run my analysis again, this time making sure I have separated the statistics by rider type.</p><blockquote>aggregate(data$ride_length ~ data$member_casual, FUN = mean)<br>aggregate(data$ride_length ~ data$member_casual, FUN = median)<br>aggregate(data$ride_length ~ data$member_casual, FUN = max)<br>aggregate(data$ride_length ~ data$member_casual, FUN = min)</blockquote><p>I also notice that there is a casual rider who has had a bike checked out for almost 39 days. This also doesn’t make any sense since the longest amount of time users usually hold unto a bike is a day. I decided to exclude the <strong>1287 </strong>data points that have ride lengths of more than a day.</p><p>Now I have our analysis results presented with data that realistically reflects the riding behaviors of our two rider groups.</p><h3>Share</h3><p>With the analysis done, I can now prepare some compelling visuals to share my findings. For this case study, I will only present simple bar charts of the interesting outputs gleaned from the statistics.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/641/1*cwmLna6TMRZIJQCTM_od1g.png" /></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/641/1*N6PpEWdmYz-XhnEjgY5PHA.png" /></figure><p>From the charts, we can tell that members usually make most of their trips during the weekdays, and the average trip durations are quite consistently below 1000 seconds on any day. As a transportation engineer who has worked with a lot of urban mobility data, I am able to easily identify that this is the usual behavior of urban commuters utilizing micro-mobility options.</p><p>But we are more interested in the behaviors of the casual users, who as it seems tend to take longer trips on average and make a lot more trips on the weekends. This insight is very useful and important because now we know how and when to target them with the marketing campaign.</p><h3>Act</h3><p>Now for the final act, preparing my recommendations from the insights I have gleaned from the data.</p><p>As mentioned earlier, it looks like casual riders differ from members on the basis of how they make use of the bike-share service. Whilst members typically utilize the bike-share for short urban commuting, casual riders take longer trips and typically prefer to ride during the weekends (as a form of recreation).</p><p>The recommendations for the marketing campaign are as follows:</p><ol><li>Create incentives for longer rides that reduce the cost per minute by switching from a single ride or one-day pass to a longer duration pass.</li><li>Promote the marketing campaign during the weekends to target the casual riders with the benefits of switching to the membership option.</li><li>Make the campaign interactive by including activities that promote bike rides as a viable means of commuting.</li></ol><h3>Conclusions and future work</h3><p>Given the very rich nature of the data, including data elements such as geolocations of beginning and end points of trips, we can also carry out some spatial analysis of the data to explore where our casual riders are mostly located to include targeted specific campaigns. An example is if we realize that most of our casual riders are starting trips from a university campus, we can infer that they are students, and as such create a tier of membership that is student-friendly.</p><p>Well, this is the end of my case study, and I hope it intrigued you to read as much as it did for me to write.</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=4bbbc2e696b8" width="1" height="1" alt="">]]></content:encoded>
        </item>
    </channel>
</rss>