<!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta charset="utf-8" /> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <meta name="generator" content="pandoc" /> <meta name="author" content="Peter Carbonetto" /> <title>A first glance at the Divvy data</title> <script src="site_libs/jquery-1.11.3/jquery.min.js"></script> <meta name="viewport" content="width=device-width, initial-scale=1" /> <link href="site_libs/bootstrap-3.3.5/css/readable.min.css" rel="stylesheet" /> <script src="site_libs/bootstrap-3.3.5/js/bootstrap.min.js"></script> <script src="site_libs/bootstrap-3.3.5/shim/html5shiv.min.js"></script> <script src="site_libs/bootstrap-3.3.5/shim/respond.min.js"></script> <script src="site_libs/jqueryui-1.11.4/jquery-ui.min.js"></script> <link href="site_libs/tocify-1.9.1/jquery.tocify.css" rel="stylesheet" /> <script src="site_libs/tocify-1.9.1/jquery.tocify.js"></script> <script src="site_libs/navigation-1.1/tabsets.js"></script> <link href="site_libs/highlightjs-9.12.0/textmate.css" rel="stylesheet" /> <script src="site_libs/highlightjs-9.12.0/highlight.js"></script> <style type="text/css">code{white-space: pre;}</style> <style type="text/css"> pre:not([class]) { background-color: white; } </style> <script type="text/javascript"> if (window.hljs) { hljs.configure({languages: []}); hljs.initHighlightingOnLoad(); if (document.readyState && document.readyState === "complete") { window.setTimeout(function() { hljs.initHighlighting(); }, 0); } } </script> <style type="text/css"> h1 { font-size: 34px; } h1.title { font-size: 38px; } h2 { font-size: 30px; } h3 { font-size: 24px; } h4 { font-size: 18px; } h5 { font-size: 16px; } h6 { font-size: 12px; } .table th:not([align]) { text-align: left; } </style> </head> <body> <style type = "text/css"> .main-container { max-width: 940px; margin-left: auto; margin-right: auto; } code { color: inherit; background-color: rgba(0, 0, 0, 0.04); } img { max-width:100%; height: auto; } .tabbed-pane { padding-top: 12px; } button.code-folding-btn:focus { outline: none; } </style> <style type="text/css"> /* padding for bootstrap navbar */ body { padding-top: 66px; padding-bottom: 40px; } /* offset scroll position for anchor links (for fixed navbar) */ .section h1 { padding-top: 71px; margin-top: -71px; } .section h2 { padding-top: 71px; margin-top: -71px; } .section h3 { padding-top: 71px; margin-top: -71px; } .section h4 { padding-top: 71px; margin-top: -71px; } .section h5 { padding-top: 71px; margin-top: -71px; } .section h6 { padding-top: 71px; margin-top: -71px; } </style> <script> // manage active state of menu based on current page $(document).ready(function () { // active menu anchor href = window.location.pathname href = href.substr(href.lastIndexOf('/') + 1) if (href === "") href = "index.html"; var menuAnchor = $('a[href="' + href + '"]'); // mark it active menuAnchor.parent().addClass('active'); // if it's got a parent navbar menu mark it active as well menuAnchor.closest('li.dropdown').addClass('active'); }); </script> <div class="container-fluid main-container"> <!-- tabsets --> <script> $(document).ready(function () { window.buildTabsets("TOC"); }); </script> <!-- code folding --> <script> $(document).ready(function () { // move toc-ignore selectors from section div to header $('div.section.toc-ignore') .removeClass('toc-ignore') .children('h1,h2,h3,h4,h5').addClass('toc-ignore'); // establish options var options = { selectors: "h1,h2,h3", theme: "bootstrap3", context: '.toc-content', hashGenerator: function (text) { return text.replace(/[.\\/?&!#<>]/g, '').replace(/\s/g, '_').toLowerCase(); }, ignoreSelector: ".toc-ignore", scrollTo: 0 }; options.showAndHide = true; options.smoothScroll = true; // tocify var toc = $("#TOC").tocify(options).data("toc-tocify"); }); </script> <style type="text/css"> #TOC { margin: 25px 0px 20px 0px; } @media (max-width: 768px) { #TOC { position: relative; width: 100%; } } .toc-content { padding-left: 30px; padding-right: 40px; } div.main-container { max-width: 1200px; } div.tocify { width: 20%; max-width: 260px; max-height: 85%; } @media (min-width: 768px) and (max-width: 991px) { div.tocify { width: 25%; } } @media (max-width: 767px) { div.tocify { width: 100%; max-width: none; } } .tocify ul, .tocify li { line-height: 20px; } .tocify-subheader .tocify-item { font-size: 0.90em; padding-left: 25px; text-indent: 0; } .tocify .list-group-item { border-radius: 0px; } </style> <!-- setup 3col/9col grid for toc_float and main content --> <div class="row-fluid"> <div class="col-xs-12 col-sm-4 col-md-3"> <div id="TOC" class="tocify"> </div> </div> <div class="toc-content col-xs-12 col-sm-8 col-md-9"> <div class="navbar navbar-default navbar-fixed-top" role="navigation"> <div class="container"> <div class="navbar-header"> <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar"> <span class="icon-bar"></span> <span class="icon-bar"></span> <span class="icon-bar"></span> </button> <a class="navbar-brand" href="index.html">Divvy data exploration</a> </div> <div id="navbar" class="navbar-collapse collapse"> <ul class="nav navbar-nav"> <li> <a href="index.html">Overview</a> </li> <li> <a href="setup.html">Setup</a> </li> <li> <a href="license.html">License</a> </li> </ul> <ul class="nav navbar-nav navbar-right"> <li> <a href="https://github.com/stephenslab/wflow-divvy">source</a> </li> </ul> </div><!--/.nav-collapse --> </div><!--/.container --> </div><!--/.navbar --> <!-- Add a small amount of space between sections. --> <style type="text/css"> div.section { padding-top: 12px; } </style> <div class="fluid-row" id="header"> <h1 class="title toc-ignore">A first glance at the Divvy data</h1> <h4 class="author"><em>Peter Carbonetto</em></h4> </div> <!-- Define defaults shared by all workflowr files. --> <!-- Update knitr chunk options --> <!-- Insert the date the file was last updated --> <p><strong>Last updated:</strong> 2018-01-18</p> <!-- Insert the code version (Git commit SHA1) if Git repository exists and R package git2r is installed --> <p><strong>Code version:</strong> 93a3a86</p> <p>Here, we will take a brief look at the data provided by Divvy.</p> <p>I begin by loading a few packages, as well as some additional functions I wrote for this project.</p> <pre class="r"><code>library(data.table) source("../code/functions.R")</code></pre> <div id="reading-the-data" class="section level2"> <h2>Reading the data</h2> <p>I wrote a function, <code>read.divvy.data</code>, that reads in the trip and station data from the <a href="https://www.divvybikes.com/system-data">Divvy CSV files</a>. This function uses <code>fread</code> from the <code>data.table</code> package to quickly read in the data (it is much faster than <code>read.table</code>). This function also prepares the data, including the departure dates and times, so that they are easier to work with.</p> <pre class="r"><code>divvy <- read.divvy.data() # Reading station data from ../data/Divvy_Stations_2016_Q4.csv. # Reading trip data from ../data/Divvy_Trips_2016_Q1.csv. # Reading trip data from ../data/Divvy_Trips_2016_04.csv. # Reading trip data from ../data/Divvy_Trips_2016_05.csv. # Reading trip data from ../data/Divvy_Trips_2016_06.csv. # Reading trip data from ../data/Divvy_Trips_2016_Q3.csv. # Reading trip data from ../data/Divvy_Trips_2016_Q4.csv. # Preparing Divvy data for analysis in R. # Converting dates and times.</code></pre> </div> <div id="a-first-glance-at-the-divvy-data" class="section level2"> <h2>A first glance at the Divvy data</h2> <p>We have data on 581 Divvy stations across the city.</p> <pre class="r"><code>nrow(divvy$stations) # [1] 581 print(head(divvy$stations),row.names = FALSE) # name latitude longitude dpcapacity online_date # 2112 W Peterson Ave 41.99118 -87.68359 15 5/12/2015 # 63rd St Beach 41.78102 -87.57612 23 4/20/2015 # 900 W Harrison St 41.87468 -87.65002 19 8/6/2013 # Aberdeen St & Jackson Blvd 41.87773 -87.65479 15 6/21/2013 # Aberdeen St & Monroe St 41.88042 -87.65560 19 6/26/2013 # Ada St & Washington Blvd 41.88283 -87.66121 15 10/10/2013</code></pre> <p>We also have information about the >3 million trips taken on Divvy bikes in 2016.</p> <pre class="r"><code>nrow(divvy$trips) # [1] 3595383 print(head(divvy$trips),row.names = FALSE) # trip_id starttime bikeid tripduration from_station_id # 9080551 2016-03-31 23:53:00 155 841 344 # 9080550 2016-03-31 23:46:00 4831 649 128 # 9080549 2016-03-31 23:42:00 4232 210 350 # 9080548 2016-03-31 23:37:00 3464 1045 303 # 9080547 2016-03-31 23:33:00 1750 202 334 # 9080546 2016-03-31 23:31:00 4302 638 67 # from_station_name to_station_id to_station_name # Ravenswood Ave & Lawrence Ave 458 Broadway & Thorndale Ave # Damen Ave & Chicago Ave 213 Leavitt St & North Ave # Ashland Ave & Chicago Ave 210 Ashland Ave & Division St # Broadway & Cornelia Ave 458 Broadway & Thorndale Ave # Lake Shore Dr & Belmont Ave 329 Lake Shore Dr & Diversey Pkwy # Sheffield Ave & Fullerton Ave 304 Broadway & Waveland Ave # usertype gender birthyear start.week start.day start.hour # Subscriber Male 1986 13 Thursday 23 # Subscriber Male 1980 13 Thursday 23 # Subscriber Male 1979 13 Thursday 23 # Subscriber Male 1980 13 Thursday 23 # Subscriber Male 1969 13 Thursday 23 # Subscriber Male 1991 13 Thursday 23</code></pre> <p>Out of all the Divvy stations in Chicago, the one on Navy Pier (near the corner of Streeter and Grand) had the most activity by far.</p> <pre class="r"><code>departures <- table(divvy$trips$from_station_name) as.matrix(head(sort(departures,decreasing = TRUE))) # [,1] # Streeter Dr & Grand Ave 90042 # Lake Shore Dr & Monroe St 51090 # Theater on the Lake 47927 # Clinton St & Washington Blvd 47125 # Lake Shore Dr & North Blvd 45754 # Clinton St & Madison St 41744</code></pre> </div> <div id="divvy-bikes-at-the-university-of-chicago" class="section level2"> <h2>Divvy bikes at the University of Chicago</h2> <p>I would also like to take a close look at the trip data for the main Divvy station on the University of Chicago campus. The Divvy bikes were rented almost 8,000 times in 2016 at that location.</p> <pre class="r"><code>sum(divvy$trips$from_station_name == "University Ave & 57th St",na.rm = TRUE) # [1] 7944</code></pre> </div> <div id="session-information" class="section level2"> <h2>Session information</h2> <p>This is the version of R and the packages that were used to generate these results.</p> <pre class="r"><code>sessionInfo() # R version 3.4.3 (2017-11-30) # Platform: x86_64-apple-darwin15.6.0 (64-bit) # Running under: macOS High Sierra 10.13.2 # # Matrix products: default # BLAS: /Library/Frameworks/R.framework/Versions/3.4/Resources/lib/libRblas.0.dylib # LAPACK: /Library/Frameworks/R.framework/Versions/3.4/Resources/lib/libRlapack.dylib # # locale: # [1] en_US.UTF-8/en_US.UTF-8/en_US.UTF-8/C/en_US.UTF-8/en_US.UTF-8 # # attached base packages: # [1] stats graphics grDevices utils datasets methods base # # other attached packages: # [1] data.table_1.10.4-3 # # loaded via a namespace (and not attached): # [1] compiler_3.4.3 backports_1.1.2 magrittr_1.5 rprojroot_1.3-2 # [5] tools_3.4.3 htmltools_0.3.6 yaml_2.1.16 Rcpp_0.12.14 # [9] stringi_1.1.6 rmarkdown_1.8 knitr_1.18 git2r_0.21.0 # [13] stringr_1.2.0 digest_0.6.13 evaluate_0.10.1</code></pre> </div> <script type="text/x-mathjax-config"> MathJax.Hub.Config({ "HTML-CSS": { availableFonts: ["TeX"] } }); </script> <hr> <p>This <a href="http://rmarkdown.rstudio.com">R Markdown</a> site was created with <a href="https://github.com/jdblischak/workflowr">workflowr</a> 0.8.0. </p> <hr> </div> </div> </div> <script> // add bootstrap table styles to pandoc tables function bootstrapStylePandocTables() { $('tr.header').parent('thead').parent('table').addClass('table table-condensed'); } $(document).ready(function () { bootstrapStylePandocTables(); }); </script> <!-- dynamically load mathjax for compatibility with self-contained --> <script> (function () { var script = document.createElement("script"); script.type = "text/javascript"; script.src = "https://mathjax.rstudio.com/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML"; document.getElementsByTagName("head")[0].appendChild(script); })(); </script> </body> </html>