forked from rdpeng/RepData_PeerAssessment1
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathPA1_template.html
More file actions
522 lines (419 loc) · 57.5 KB
/
PA1_template.html
File metadata and controls
522 lines (419 loc) · 57.5 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<title>Reproducible Research: Peer Assessment 1</title>
<script type="text/javascript">
window.onload = function() {
var imgs = document.getElementsByTagName('img'), i, img;
for (i = 0; i < imgs.length; i++) {
img = imgs[i];
// center an image if it is the only element of its parent
if (img.parentElement.childElementCount === 1)
img.parentElement.style.textAlign = 'center';
}
};
</script>
<!-- Styles for R syntax highlighter -->
<style type="text/css">
pre .operator,
pre .paren {
color: rgb(104, 118, 135)
}
pre .literal {
color: #990073
}
pre .number {
color: #099;
}
pre .comment {
color: #998;
font-style: italic
}
pre .keyword {
color: #900;
font-weight: bold
}
pre .identifier {
color: rgb(0, 0, 0);
}
pre .string {
color: #d14;
}
</style>
<!-- R syntax highlighter -->
<script type="text/javascript">
var hljs=new function(){function m(p){return p.replace(/&/gm,"&").replace(/</gm,"<")}function f(r,q,p){return RegExp(q,"m"+(r.cI?"i":"")+(p?"g":""))}function b(r){for(var p=0;p<r.childNodes.length;p++){var q=r.childNodes[p];if(q.nodeName=="CODE"){return q}if(!(q.nodeType==3&&q.nodeValue.match(/\s+/))){break}}}function h(t,s){var p="";for(var r=0;r<t.childNodes.length;r++){if(t.childNodes[r].nodeType==3){var q=t.childNodes[r].nodeValue;if(s){q=q.replace(/\n/g,"")}p+=q}else{if(t.childNodes[r].nodeName=="BR"){p+="\n"}else{p+=h(t.childNodes[r])}}}if(/MSIE [678]/.test(navigator.userAgent)){p=p.replace(/\r/g,"\n")}return p}function a(s){var r=s.className.split(/\s+/);r=r.concat(s.parentNode.className.split(/\s+/));for(var q=0;q<r.length;q++){var p=r[q].replace(/^language-/,"");if(e[p]){return p}}}function c(q){var p=[];(function(s,t){for(var r=0;r<s.childNodes.length;r++){if(s.childNodes[r].nodeType==3){t+=s.childNodes[r].nodeValue.length}else{if(s.childNodes[r].nodeName=="BR"){t+=1}else{if(s.childNodes[r].nodeType==1){p.push({event:"start",offset:t,node:s.childNodes[r]});t=arguments.callee(s.childNodes[r],t);p.push({event:"stop",offset:t,node:s.childNodes[r]})}}}}return t})(q,0);return p}function k(y,w,x){var q=0;var z="";var s=[];function u(){if(y.length&&w.length){if(y[0].offset!=w[0].offset){return(y[0].offset<w[0].offset)?y:w}else{return w[0].event=="start"?y:w}}else{return y.length?y:w}}function t(D){var A="<"+D.nodeName.toLowerCase();for(var B=0;B<D.attributes.length;B++){var C=D.attributes[B];A+=" "+C.nodeName.toLowerCase();if(C.value!==undefined&&C.value!==false&&C.value!==null){A+='="'+m(C.value)+'"'}}return A+">"}while(y.length||w.length){var v=u().splice(0,1)[0];z+=m(x.substr(q,v.offset-q));q=v.offset;if(v.event=="start"){z+=t(v.node);s.push(v.node)}else{if(v.event=="stop"){var p,r=s.length;do{r--;p=s[r];z+=("</"+p.nodeName.toLowerCase()+">")}while(p!=v.node);s.splice(r,1);while(r<s.length){z+=t(s[r]);r++}}}}return z+m(x.substr(q))}function j(){function q(x,y,v){if(x.compiled){return}var u;var s=[];if(x.k){x.lR=f(y,x.l||hljs.IR,true);for(var w in x.k){if(!x.k.hasOwnProperty(w)){continue}if(x.k[w] instanceof Object){u=x.k[w]}else{u=x.k;w="keyword"}for(var r in u){if(!u.hasOwnProperty(r)){continue}x.k[r]=[w,u[r]];s.push(r)}}}if(!v){if(x.bWK){x.b="\\b("+s.join("|")+")\\s"}x.bR=f(y,x.b?x.b:"\\B|\\b");if(!x.e&&!x.eW){x.e="\\B|\\b"}if(x.e){x.eR=f(y,x.e)}}if(x.i){x.iR=f(y,x.i)}if(x.r===undefined){x.r=1}if(!x.c){x.c=[]}x.compiled=true;for(var t=0;t<x.c.length;t++){if(x.c[t]=="self"){x.c[t]=x}q(x.c[t],y,false)}if(x.starts){q(x.starts,y,false)}}for(var p in e){if(!e.hasOwnProperty(p)){continue}q(e[p].dM,e[p],true)}}function d(B,C){if(!j.called){j();j.called=true}function q(r,M){for(var L=0;L<M.c.length;L++){if((M.c[L].bR.exec(r)||[null])[0]==r){return M.c[L]}}}function v(L,r){if(D[L].e&&D[L].eR.test(r)){return 1}if(D[L].eW){var M=v(L-1,r);return M?M+1:0}return 0}function w(r,L){return L.i&&L.iR.test(r)}function K(N,O){var M=[];for(var L=0;L<N.c.length;L++){M.push(N.c[L].b)}var r=D.length-1;do{if(D[r].e){M.push(D[r].e)}r--}while(D[r+1].eW);if(N.i){M.push(N.i)}return f(O,M.join("|"),true)}function p(M,L){var N=D[D.length-1];if(!N.t){N.t=K(N,E)}N.t.lastIndex=L;var r=N.t.exec(M);return r?[M.substr(L,r.index-L),r[0],false]:[M.substr(L),"",true]}function z(N,r){var L=E.cI?r[0].toLowerCase():r[0];var M=N.k[L];if(M&&M instanceof Array){return M}return false}function F(L,P){L=m(L);if(!P.k){return L}var r="";var O=0;P.lR.lastIndex=0;var M=P.lR.exec(L);while(M){r+=L.substr(O,M.index-O);var N=z(P,M);if(N){x+=N[1];r+='<span class="'+N[0]+'">'+M[0]+"</span>"}else{r+=M[0]}O=P.lR.lastIndex;M=P.lR.exec(L)}return r+L.substr(O,L.length-O)}function J(L,M){if(M.sL&&e[M.sL]){var r=d(M.sL,L);x+=r.keyword_count;return r.value}else{return F(L,M)}}function I(M,r){var L=M.cN?'<span class="'+M.cN+'">':"";if(M.rB){y+=L;M.buffer=""}else{if(M.eB){y+=m(r)+L;M.buffer=""}else{y+=L;M.buffer=r}}D.push(M);A+=M.r}function G(N,M,Q){var R=D[D.length-1];if(Q){y+=J(R.buffer+N,R);return false}var P=q(M,R);if(P){y+=J(R.buffer+N,R);I(P,M);return P.rB}var L=v(D.length-1,M);if(L){var O=R.cN?"</span>":"";if(R.rE){y+=J(R.buffer+N,R)+O}else{if(R.eE){y+=J(R.buffer+N,R)+O+m(M)}else{y+=J(R.buffer+N+M,R)+O}}while(L>1){O=D[D.length-2].cN?"</span>":"";y+=O;L--;D.length--}var r=D[D.length-1];D.length--;D[D.length-1].buffer="";if(r.starts){I(r.starts,"")}return R.rE}if(w(M,R)){throw"Illegal"}}var E=e[B];var D=[E.dM];var A=0;var x=0;var y="";try{var s,u=0;E.dM.buffer="";do{s=p(C,u);var t=G(s[0],s[1],s[2]);u+=s[0].length;if(!t){u+=s[1].length}}while(!s[2]);if(D.length>1){throw"Illegal"}return{r:A,keyword_count:x,value:y}}catch(H){if(H=="Illegal"){return{r:0,keyword_count:0,value:m(C)}}else{throw H}}}function g(t){var p={keyword_count:0,r:0,value:m(t)};var r=p;for(var q in e){if(!e.hasOwnProperty(q)){continue}var s=d(q,t);s.language=q;if(s.keyword_count+s.r>r.keyword_count+r.r){r=s}if(s.keyword_count+s.r>p.keyword_count+p.r){r=p;p=s}}if(r.language){p.second_best=r}return p}function i(r,q,p){if(q){r=r.replace(/^((<[^>]+>|\t)+)/gm,function(t,w,v,u){return w.replace(/\t/g,q)})}if(p){r=r.replace(/\n/g,"<br>")}return r}function n(t,w,r){var x=h(t,r);var v=a(t);var y,s;if(v){y=d(v,x)}else{return}var q=c(t);if(q.length){s=document.createElement("pre");s.innerHTML=y.value;y.value=k(q,c(s),x)}y.value=i(y.value,w,r);var u=t.className;if(!u.match("(\\s|^)(language-)?"+v+"(\\s|$)")){u=u?(u+" "+v):v}if(/MSIE [678]/.test(navigator.userAgent)&&t.tagName=="CODE"&&t.parentNode.tagName=="PRE"){s=t.parentNode;var p=document.createElement("div");p.innerHTML="<pre><code>"+y.value+"</code></pre>";t=p.firstChild.firstChild;p.firstChild.cN=s.cN;s.parentNode.replaceChild(p.firstChild,s)}else{t.innerHTML=y.value}t.className=u;t.result={language:v,kw:y.keyword_count,re:y.r};if(y.second_best){t.second_best={language:y.second_best.language,kw:y.second_best.keyword_count,re:y.second_best.r}}}function o(){if(o.called){return}o.called=true;var r=document.getElementsByTagName("pre");for(var p=0;p<r.length;p++){var q=b(r[p]);if(q){n(q,hljs.tabReplace)}}}function l(){if(window.addEventListener){window.addEventListener("DOMContentLoaded",o,false);window.addEventListener("load",o,false)}else{if(window.attachEvent){window.attachEvent("onload",o)}else{window.onload=o}}}var e={};this.LANGUAGES=e;this.highlight=d;this.highlightAuto=g;this.fixMarkup=i;this.highlightBlock=n;this.initHighlighting=o;this.initHighlightingOnLoad=l;this.IR="[a-zA-Z][a-zA-Z0-9_]*";this.UIR="[a-zA-Z_][a-zA-Z0-9_]*";this.NR="\\b\\d+(\\.\\d+)?";this.CNR="\\b(0[xX][a-fA-F0-9]+|(\\d+(\\.\\d*)?|\\.\\d+)([eE][-+]?\\d+)?)";this.BNR="\\b(0b[01]+)";this.RSR="!|!=|!==|%|%=|&|&&|&=|\\*|\\*=|\\+|\\+=|,|\\.|-|-=|/|/=|:|;|<|<<|<<=|<=|=|==|===|>|>=|>>|>>=|>>>|>>>=|\\?|\\[|\\{|\\(|\\^|\\^=|\\||\\|=|\\|\\||~";this.ER="(?![\\s\\S])";this.BE={b:"\\\\.",r:0};this.ASM={cN:"string",b:"'",e:"'",i:"\\n",c:[this.BE],r:0};this.QSM={cN:"string",b:'"',e:'"',i:"\\n",c:[this.BE],r:0};this.CLCM={cN:"comment",b:"//",e:"$"};this.CBLCLM={cN:"comment",b:"/\\*",e:"\\*/"};this.HCM={cN:"comment",b:"#",e:"$"};this.NM={cN:"number",b:this.NR,r:0};this.CNM={cN:"number",b:this.CNR,r:0};this.BNM={cN:"number",b:this.BNR,r:0};this.inherit=function(r,s){var p={};for(var q in r){p[q]=r[q]}if(s){for(var q in s){p[q]=s[q]}}return p}}();hljs.LANGUAGES.cpp=function(){var a={keyword:{"false":1,"int":1,"float":1,"while":1,"private":1,"char":1,"catch":1,"export":1,virtual:1,operator:2,sizeof:2,dynamic_cast:2,typedef:2,const_cast:2,"const":1,struct:1,"for":1,static_cast:2,union:1,namespace:1,unsigned:1,"long":1,"throw":1,"volatile":2,"static":1,"protected":1,bool:1,template:1,mutable:1,"if":1,"public":1,friend:2,"do":1,"return":1,"goto":1,auto:1,"void":2,"enum":1,"else":1,"break":1,"new":1,extern:1,using:1,"true":1,"class":1,asm:1,"case":1,typeid:1,"short":1,reinterpret_cast:2,"default":1,"double":1,register:1,explicit:1,signed:1,typename:1,"try":1,"this":1,"switch":1,"continue":1,wchar_t:1,inline:1,"delete":1,alignof:1,char16_t:1,char32_t:1,constexpr:1,decltype:1,noexcept:1,nullptr:1,static_assert:1,thread_local:1,restrict:1,_Bool:1,complex:1},built_in:{std:1,string:1,cin:1,cout:1,cerr:1,clog:1,stringstream:1,istringstream:1,ostringstream:1,auto_ptr:1,deque:1,list:1,queue:1,stack:1,vector:1,map:1,set:1,bitset:1,multiset:1,multimap:1,unordered_set:1,unordered_map:1,unordered_multiset:1,unordered_multimap:1,array:1,shared_ptr:1}};return{dM:{k:a,i:"</",c:[hljs.CLCM,hljs.CBLCLM,hljs.QSM,{cN:"string",b:"'\\\\?.",e:"'",i:"."},{cN:"number",b:"\\b(\\d+(\\.\\d*)?|\\.\\d+)(u|U|l|L|ul|UL|f|F)"},hljs.CNM,{cN:"preprocessor",b:"#",e:"$"},{cN:"stl_container",b:"\\b(deque|list|queue|stack|vector|map|set|bitset|multiset|multimap|unordered_map|unordered_set|unordered_multiset|unordered_multimap|array)\\s*<",e:">",k:a,r:10,c:["self"]}]}}}();hljs.LANGUAGES.r={dM:{c:[hljs.HCM,{cN:"number",b:"\\b0[xX][0-9a-fA-F]+[Li]?\\b",e:hljs.IMMEDIATE_RE,r:0},{cN:"number",b:"\\b\\d+(?:[eE][+\\-]?\\d*)?L\\b",e:hljs.IMMEDIATE_RE,r:0},{cN:"number",b:"\\b\\d+\\.(?!\\d)(?:i\\b)?",e:hljs.IMMEDIATE_RE,r:1},{cN:"number",b:"\\b\\d+(?:\\.\\d*)?(?:[eE][+\\-]?\\d*)?i?\\b",e:hljs.IMMEDIATE_RE,r:0},{cN:"number",b:"\\.\\d+(?:[eE][+\\-]?\\d*)?i?\\b",e:hljs.IMMEDIATE_RE,r:1},{cN:"keyword",b:"(?:tryCatch|library|setGeneric|setGroupGeneric)\\b",e:hljs.IMMEDIATE_RE,r:10},{cN:"keyword",b:"\\.\\.\\.",e:hljs.IMMEDIATE_RE,r:10},{cN:"keyword",b:"\\.\\.\\d+(?![\\w.])",e:hljs.IMMEDIATE_RE,r:10},{cN:"keyword",b:"\\b(?:function)",e:hljs.IMMEDIATE_RE,r:2},{cN:"keyword",b:"(?:if|in|break|next|repeat|else|for|return|switch|while|try|stop|warning|require|attach|detach|source|setMethod|setClass)\\b",e:hljs.IMMEDIATE_RE,r:1},{cN:"literal",b:"(?:NA|NA_integer_|NA_real_|NA_character_|NA_complex_)\\b",e:hljs.IMMEDIATE_RE,r:10},{cN:"literal",b:"(?:NULL|TRUE|FALSE|T|F|Inf|NaN)\\b",e:hljs.IMMEDIATE_RE,r:1},{cN:"identifier",b:"[a-zA-Z.][a-zA-Z0-9._]*\\b",e:hljs.IMMEDIATE_RE,r:0},{cN:"operator",b:"<\\-(?!\\s*\\d)",e:hljs.IMMEDIATE_RE,r:2},{cN:"operator",b:"\\->|<\\-",e:hljs.IMMEDIATE_RE,r:1},{cN:"operator",b:"%%|~",e:hljs.IMMEDIATE_RE},{cN:"operator",b:">=|<=|==|!=|\\|\\||&&|=|\\+|\\-|\\*|/|\\^|>|<|!|&|\\||\\$|:",e:hljs.IMMEDIATE_RE,r:0},{cN:"operator",b:"%",e:"%",i:"\\n",r:1},{cN:"identifier",b:"`",e:"`",r:0},{cN:"string",b:'"',e:'"',c:[hljs.BE],r:0},{cN:"string",b:"'",e:"'",c:[hljs.BE],r:0},{cN:"paren",b:"[[({\\])}]",e:hljs.IMMEDIATE_RE,r:0}]}};
hljs.initHighlightingOnLoad();
</script>
<style type="text/css">
body, td {
font-family: sans-serif;
background-color: white;
font-size: 13px;
}
body {
max-width: 800px;
margin: auto;
padding: 1em;
line-height: 20px;
}
tt, code, pre {
font-family: 'DejaVu Sans Mono', 'Droid Sans Mono', 'Lucida Console', Consolas, Monaco, monospace;
}
h1 {
font-size:2.2em;
}
h2 {
font-size:1.8em;
}
h3 {
font-size:1.4em;
}
h4 {
font-size:1.0em;
}
h5 {
font-size:0.9em;
}
h6 {
font-size:0.8em;
}
a:visited {
color: rgb(50%, 0%, 50%);
}
pre, img {
max-width: 100%;
}
pre {
overflow-x: auto;
}
pre code {
display: block; padding: 0.5em;
}
code {
font-size: 92%;
border: 1px solid #ccc;
}
code[class] {
background-color: #F8F8F8;
}
table, td, th {
border: none;
}
blockquote {
color:#666666;
margin:0;
padding-left: 1em;
border-left: 0.5em #EEE solid;
}
hr {
height: 0px;
border-bottom: none;
border-top-width: thin;
border-top-style: dotted;
border-top-color: #999999;
}
@media print {
* {
background: transparent !important;
color: black !important;
filter:none !important;
-ms-filter: none !important;
}
body {
font-size:12pt;
max-width:100%;
}
a, a:visited {
text-decoration: underline;
}
hr {
visibility: hidden;
page-break-before: always;
}
pre, blockquote {
padding-right: 1em;
page-break-inside: avoid;
}
tr, img {
page-break-inside: avoid;
}
img {
max-width: 100% !important;
}
@page :left {
margin: 15mm 20mm 15mm 10mm;
}
@page :right {
margin: 15mm 10mm 15mm 20mm;
}
p, h2, h3 {
orphans: 3; widows: 3;
}
h2, h3 {
page-break-after: avoid;
}
}
</style>
</head>
<body>
<h1>Reproducible Research: Peer Assessment 1</h1>
<!--
Notes:
* For consistency, don't use RStudio's "Knit HTML" button. Instead, in
the R Console, run the command: knit2html("PA1_template.Rmd")
* We could set the global option to force echo for knitr, but doing so is the
default behavior so there is no need.
* Normally, much of the output would be in the markdown portion and not the
code chunk portion. However, the grading rubric asks, "Does the report show
all of the R code needed to reproduce the results (numbers, plots, etc.) in
the report?" To meet that part of the rubric, print() was used in a code
chunk to display the results requested.
-->
<h2>Loading and preprocessing the data</h2>
<ol>
<li>Show code to load the data.</li>
<li>Show code to process/transform the data into a format suitable for your analysis.</li>
</ol>
<pre><code class="r"># The assignment said, "feel free to use any plotting system in R", I kept it
# simple and stuck with 1) base graphics for histograms, and 2) lattice graphics
# for panel plots.
library(lattice)
library(dplyr)
</code></pre>
<pre><code class="r"># Unzip the data into a "data" folder which GIT will ignore (see the file
# .gitignore). We specify the column classes in advance. We convert the
# interval from an integer to a human-readable factor.
unzip("activity.zip", exdir = "data")
activity <- read.csv("data/activity.csv", colClasses=c("integer", "Date", "integer"))
activity$interval <- as.factor(sub("(\\d\\d)(\\d\\d)", "\\1:\\2",
sprintf("%4.4d", activity$interval)))
</code></pre>
<h2>What is mean total number of steps taken per day?</h2>
<p>For this part of the assignment, ignore missing values in the dataset.</p>
<ol>
<li>Calculate the total number of steps taken per day.</li>
<li>Make a histogram of the total number of steps taken each day.</li>
<li>Calculate and report the mean and median of the total number of steps taken
per day.</li>
</ol>
<pre><code class="r"># Calculate daily sum, then the mean and median of the sums (so we can compare, later)
dailySum <- activity %>% group_by(date) %>%
summarise_each(funs(sum(., na.rm = TRUE)), steps)
dailyMean <- mean(dailySum$steps)
dailyMedian <- median(dailySum$steps)
# Histogram of total number of steps taken per day
hist(dailySum$steps, breaks=10, xlab="Steps", main="Total steps taken per day")
</code></pre>
<p><img src="data:image/png;base64,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" alt="plot of chunk totalStepsPerDay"/> </p>
<pre><code class="r"># That's a big bump at zero ... how many are exactly 0.0?
zeroDays <- sum(dailySum$steps == 0)
totalDays <- length(dailySum$steps)
print(paste(zeroDays, " of ", totalDays, " days (",
round(100 * zeroDays / totalDays, 1), "%) have no steps at all",
sep=""))
</code></pre>
<pre><code>## [1] "8 of 61 days (13.1%) have no steps at all"
</code></pre>
<pre><code class="r"># Print the mean and median values (rounded to one decimal place)
print(paste("Mean of daily sum:", round(dailyMean, 1)))
</code></pre>
<pre><code>## [1] "Mean of daily sum: 9354.2"
</code></pre>
<pre><code class="r">print(paste("Median of daily sum:", round(dailyMedian, 1)))
</code></pre>
<pre><code>## [1] "Median of daily sum: 10395"
</code></pre>
<h2>What is the average daily activity pattern?</h2>
<ol>
<li>Make a time series plot of the 5-minute intervals and the average number of
steps taken, averaged across all days</li>
<li>Which 5-minute interval, on <strong>average</strong> across all the days in the dataset,
contains the maximum number of steps?</li>
</ol>
<pre><code class="r"># Sum intervals across all days
intervalMeans <- activity %>% group_by(interval) %>%
summarise_each(funs(mean(., na.rm = TRUE)), steps)
# Plot average number of steps for each interval. Our X axis is a factor, so
# we have to explicitly say where to put labels and what labels.
xTickAt <- seq(1, 12*24, by=12) # one label every hour on the x axis
xLabels <- intervalMeans$interval[xTickAt]
p <- xyplot(steps ~ interval, data=intervalMeans, type="l",
main="Average # steps per 5 minute interval",
xlab="5-minute Interval", ylab="Average Number of steps",
scales=list(x=list(at=xTickAt, labels=xLabels, rot=90)))
print(p)
</code></pre>
<p><img src="data:image/png;base64,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" alt="plot of chunk dailyActivity"/> </p>
<pre><code class="r"># Figure out which data.frame row has the maximum average number of steps
maxEntry <- intervalMeans[which.max(intervalMeans$steps),]
print(paste("5-minute interval with the maximum average number of steps: ",
maxEntry$interval, " with ", round(maxEntry$steps, 1), " steps",
sep=""))
</code></pre>
<pre><code>## [1] "5-minute interval with the maximum average number of steps: 08:35 with 206.2 steps"
</code></pre>
<p><em>What is the average daily activity pattern?</em></p>
<p>The daily activity pattern is pretty variable. The subjects clearly started to
wake up around 5:30 AM, as that is when activity begins to increase from a
baseline value very close to 0. There is a clear spike of activity around
lunch time. Between 7 PM and midnight, activity gradually dropped toward 0.</p>
<h2>Imputing missing values</h2>
<p>There are a number of days/intervals where there are missing values. This may
introduce bias into some calculations or summaries of the data.</p>
<ol>
<li>Calculate and report the total number of missing values in the dataset.</li>
<li>Devise a strategy for filling in all of the missing values in the dataset.</li>
<li>Create a new dataset that is equal to the original dataset but with the
missing data filled in.</li>
<li>Make a histogram of the total number of steps taken each day.</li>
<li>Calculate and report the mean and median total number of steps taken per day.</li>
</ol>
<pre><code class="r"># Count missing values
naValues <- sum(is.na(activity$steps))
naDays <- length(unique(activity[is.na(activity$steps), "date"]))
print(paste("There are ", naValues, " missing values out of ", nrow(activity),
" (", round(100 * naValues / nrow(activity), 1), "%), on ", naDays,
" different days, averaging ", naValues/naDays, " per day",
sep=""))
</code></pre>
<pre><code>## [1] "There are 2304 missing values out of 17568 (13.1%), on 8 different days, averaging 288 per day"
</code></pre>
<pre><code class="r"># Strategy: replace NA values with the mean of all non-NA values for the same
# 5-minute time interval across all days. Note that the group_by(interval)
# causes the "mean" to calculate along that variable. While steps are measured
# as integers, one will least disturb the distribution of values by using the
# mean (even when it's not an integer) for imputed values.
# This new dataset is the same as "activity" but with missing values filled in.
newActivity <- activity %>% group_by(interval) %>%
mutate(steps = ifelse(is.na(steps), mean(steps, na.rm=TRUE), steps))
# Recompute the daily sums now that we have imputed missing values
newDailySum <- newActivity %>% group_by(date) %>%
summarise_each(funs(sum(., na.rm = TRUE)), steps)
newDailyMean <- mean(newDailySum$steps)
newDailyMedian <- median(newDailySum$steps)
# Histogram of corrected total number of steps taken per day
hist(newDailySum$steps, breaks=10, xlab="Steps",
main="Total steps taken per day (corrected)")
</code></pre>
<p><img src="data:image/png;base64,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" alt="plot of chunk missingValues"/> </p>
<pre><code class="r"># Print the corrected mean and median values (rounded to one decimal place).
# Also compare to our original computations with missing values.
meanDiff <- round((newDailyMean - dailyMean) / dailyMean * 100, 1)
print(paste("Mean of corrected daily sum: ", round(newDailyMean, 1),
" (uncorrected is ", round(dailyMean, 1), "), a change of ",
meanDiff, "%",
sep=""))
</code></pre>
<pre><code>## [1] "Mean of corrected daily sum: 10766.2 (uncorrected is 9354.2), a change of 15.1%"
</code></pre>
<pre><code class="r">medianDiff <- round((newDailyMedian - dailyMedian) / dailyMedian * 100, 1)
print(paste("Median of corrected daily sum: ", round(newDailyMedian, 1),
" (uncorrected is ", round(dailyMedian, 1), "), a change of ",
medianDiff, "%",
sep=""))
</code></pre>
<pre><code>## [1] "Median of corrected daily sum: 10766.2 (uncorrected is 10395), a change of 3.6%"
</code></pre>
<pre><code class="r"># Compare corrected and uncorrected histograms on one plot
transRed <- rgb(1, 0, 0, 0.6)
transBlue <- rgb(0, 0, 1, 0.6)
hist(newDailySum$steps, breaks=10, xlab="Steps",
main="Total steps taken per day (corrected vs uncorrected)", col=transRed)
hist(dailySum$steps, breaks=10, add=TRUE, col=transBlue)
legend("topright", legend=c("Corrected","Uncorrected"),
fill=c(transRed, transBlue))
</code></pre>
<p><img src="data:image/png;base64,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" alt="plot of chunk missingValues"/> </p>
<pre><code class="r"># After imputation, do we still have days with 0.0 steps?
newZeroDays <- sum(newDailySum$steps == 0)
print(paste("After imputation, ", newZeroDays, " of ", totalDays, " days (",
round(100 * newZeroDays / totalDays, 1), "%) have no steps at all",
sep=""))
</code></pre>
<pre><code>## [1] "After imputation, 0 of 61 days (0%) have no steps at all"
</code></pre>
<pre><code class="r">if (zeroDays > 0) {
reduction <- round(-100 * (newZeroDays - zeroDays) / zeroDays, 1)
print(paste("This is a reduction of ", reduction, "%", sep=""))
}
</code></pre>
<pre><code>## [1] "This is a reduction of 100%"
</code></pre>
<p><em>Do these values differ from the estimates from the first part of the assignment?</em>
<em>What is the impact of imputing missing data on the estimates of the total daily</em>
<em>number of steps?</em></p>
<ul>
<li>The median and mean both changed … to the same value! Both increased from
their uncorrected values. This shouldn't be surprising. When calculating
<strong>total</strong> steps per day, missing values will cause these totals to be
artificially low. Restoring approximate values for the missing values should
restore the mean and median (of total steps per day) to be much closer to
their actual value.</li>
<li>Imputing missing values removed a large spike at 0 in the histogram. All the
missing values were entire days. So all of the days that were entirely
missing moved to the same spot in the histogram, as can be seen in the plot
showing both histograms on one plot.</li>
<li>Since missing values were imputed as the mean non-missing value across all
days for the same 5-minute time interval, and only whole days were missing,
the missing days all moved from 0 steps to the mean number of steps across
all days. It is no surprise that the corrected median is the same value as
the mean!</li>
</ul>
<h2>Are there differences in activity patterns between weekdays and weekends?</h2>
<p>Use the dataset with the filled-in missing values for this part.</p>
<ol>
<li>Create a new factor variable in the dataset with two levels (Weekend/Weekday).</li>
<li>Make a panel plot containing a time series plot of the 5-minute interval
(x-axis) and the average number of steps taken, averaged across all weekday
days or weekend days (y-axis). See the
<a href="./instructions_fig/sample_panelplot.png">README</a> file to see an example
using simulated data of what this plot should look like.</li>
</ol>
<pre><code class="r"># Yes, this assumes that weekday names are returned in English...
dayTypeColumn <- ifelse(weekdays(newActivity$date) %in% c("Saturday", "Sunday"),
"Weekend", "Weekday")
# Calculate averages across all weekend days and weekday days into a new data.frame.
# Note that without ungroup() the mutate call to add the factor won't work.
dayTypeIntervalMeans <- newActivity %>% ungroup() %>%
mutate(dayType = as.factor(dayTypeColumn)) %>%
group_by(interval, dayType) %>%
summarise_each(funs(mean(., na.rm = TRUE)), steps) %>%
arrange(interval, dayType)
# For the chart to work, the data.frame must be sorted by the x axis value first.
# Thus, we have to take every second item on the x axis to get the labels.
# If there were 3 "dayType" values, we'd have to take every third item.
xTickAt <- seq(1, 12*24, by=12) # one label every hour on the x axis
xLabels <- dayTypeIntervalMeans$interval[xTickAt * 2]
p <- xyplot(steps ~ interval | levels(dayType), data=dayTypeIntervalMeans, type="l",
layout=c(1,2), main="Average # steps per 5 minute interval",
xlab="5-minute Interval", ylab="Average Number of steps",
scales=list(x=list(at=xTickAt, labels=xLabels, rot=90)))
print(p)
</code></pre>
<p><img src="data:image/png;base64,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" alt="plot of chunk weekendWeekdayDifferences"/> </p>
<p><em>Are there differences in activity patterns between weekdays and weekends?</em></p>
<p>Yes!</p>
<ul>
<li><strong>Weekday activity is clearly tied to employment.</strong> There is a spike of
activity in the morning that starts around 5:30 AM, most likely as the
subjects prepare for and arrive at work. There is a period of lower activity
between about 9:30 AM and 5 PM with a burst of activity for lunch and a spike
before around 4 PM. The spike around 4 PM may represent early risers leaving
work around 3:30 PM. Between roughly 5 PM and 7 PM, there is more activity
than during the work day. Finally, by about 8pm, activity is pretty close to
zero and remains that way for the rest of the evening.</li>
<li><strong>Weekend activity is more variable.</strong> Activity increases more slowly in the
morning (and later in the morning) when compared to weekdays. The subjects
were active later on weekend nights as well. There was no obvious pattern to
weekend activity.</li>
</ul>
<!--
I wanted to see if the individual days had much variation, and they did. I'll
leave this code in here because I found it interesting, but I'll entirely
suppress it from the output because it is too far outside what was asked for.
-->
<!-- Clean temporary variables from the environment -->
</body>
</html>