This file is indexed.

/usr/lib/R/site-library/dplyr/doc/dplyr.html is in r-cran-dplyr 0.7.4-3.

This file is owned by root:root, with mode 0o644.

The actual contents of the file can be viewed below.

  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
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
<!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="viewport" content="width=device-width, initial-scale=1">



<title>Introduction to dplyr</title>



<style type="text/css">code{white-space: pre;}</style>
<style type="text/css">
div.sourceCode { overflow-x: auto; }
table.sourceCode, tr.sourceCode, td.lineNumbers, td.sourceCode {
  margin: 0; padding: 0; vertical-align: baseline; border: none; }
table.sourceCode { width: 100%; line-height: 100%; }
td.lineNumbers { text-align: right; padding-right: 4px; padding-left: 4px; color: #aaaaaa; border-right: 1px solid #aaaaaa; }
td.sourceCode { padding-left: 5px; }
code > span.kw { color: #007020; font-weight: bold; } /* Keyword */
code > span.dt { color: #902000; } /* DataType */
code > span.dv { color: #40a070; } /* DecVal */
code > span.bn { color: #40a070; } /* BaseN */
code > span.fl { color: #40a070; } /* Float */
code > span.ch { color: #4070a0; } /* Char */
code > span.st { color: #4070a0; } /* String */
code > span.co { color: #60a0b0; font-style: italic; } /* Comment */
code > span.ot { color: #007020; } /* Other */
code > span.al { color: #ff0000; font-weight: bold; } /* Alert */
code > span.fu { color: #06287e; } /* Function */
code > span.er { color: #ff0000; font-weight: bold; } /* Error */
code > span.wa { color: #60a0b0; font-weight: bold; font-style: italic; } /* Warning */
code > span.cn { color: #880000; } /* Constant */
code > span.sc { color: #4070a0; } /* SpecialChar */
code > span.vs { color: #4070a0; } /* VerbatimString */
code > span.ss { color: #bb6688; } /* SpecialString */
code > span.im { } /* Import */
code > span.va { color: #19177c; } /* Variable */
code > span.cf { color: #007020; font-weight: bold; } /* ControlFlow */
code > span.op { color: #666666; } /* Operator */
code > span.bu { } /* BuiltIn */
code > span.ex { } /* Extension */
code > span.pp { color: #bc7a00; } /* Preprocessor */
code > span.at { color: #7d9029; } /* Attribute */
code > span.do { color: #ba2121; font-style: italic; } /* Documentation */
code > span.an { color: #60a0b0; font-weight: bold; font-style: italic; } /* Annotation */
code > span.cv { color: #60a0b0; font-weight: bold; font-style: italic; } /* CommentVar */
code > span.in { color: #60a0b0; font-weight: bold; font-style: italic; } /* Information */
</style>



<link href="data:text/css;charset=utf-8,body%20%7B%0Abackground%2Dcolor%3A%20%23fff%3B%0Amargin%3A%201em%20auto%3B%0Amax%2Dwidth%3A%20700px%3B%0Aoverflow%3A%20visible%3B%0Apadding%2Dleft%3A%202em%3B%0Apadding%2Dright%3A%202em%3B%0Afont%2Dfamily%3A%20%22Open%20Sans%22%2C%20%22Helvetica%20Neue%22%2C%20Helvetica%2C%20Arial%2C%20sans%2Dserif%3B%0Afont%2Dsize%3A%2014px%3B%0Aline%2Dheight%3A%201%2E35%3B%0A%7D%0A%23header%20%7B%0Atext%2Dalign%3A%20center%3B%0A%7D%0A%23TOC%20%7B%0Aclear%3A%20both%3B%0Amargin%3A%200%200%2010px%2010px%3B%0Apadding%3A%204px%3B%0Awidth%3A%20400px%3B%0Aborder%3A%201px%20solid%20%23CCCCCC%3B%0Aborder%2Dradius%3A%205px%3B%0Abackground%2Dcolor%3A%20%23f6f6f6%3B%0Afont%2Dsize%3A%2013px%3B%0Aline%2Dheight%3A%201%2E3%3B%0A%7D%0A%23TOC%20%2Etoctitle%20%7B%0Afont%2Dweight%3A%20bold%3B%0Afont%2Dsize%3A%2015px%3B%0Amargin%2Dleft%3A%205px%3B%0A%7D%0A%23TOC%20ul%20%7B%0Apadding%2Dleft%3A%2040px%3B%0Amargin%2Dleft%3A%20%2D1%2E5em%3B%0Amargin%2Dtop%3A%205px%3B%0Amargin%2Dbottom%3A%205px%3B%0A%7D%0A%23TOC%20ul%20ul%20%7B%0Amargin%2Dleft%3A%20%2D2em%3B%0A%7D%0A%23TOC%20li%20%7B%0Aline%2Dheight%3A%2016px%3B%0A%7D%0Atable%20%7B%0Amargin%3A%201em%20auto%3B%0Aborder%2Dwidth%3A%201px%3B%0Aborder%2Dcolor%3A%20%23DDDDDD%3B%0Aborder%2Dstyle%3A%20outset%3B%0Aborder%2Dcollapse%3A%20collapse%3B%0A%7D%0Atable%20th%20%7B%0Aborder%2Dwidth%3A%202px%3B%0Apadding%3A%205px%3B%0Aborder%2Dstyle%3A%20inset%3B%0A%7D%0Atable%20td%20%7B%0Aborder%2Dwidth%3A%201px%3B%0Aborder%2Dstyle%3A%20inset%3B%0Aline%2Dheight%3A%2018px%3B%0Apadding%3A%205px%205px%3B%0A%7D%0Atable%2C%20table%20th%2C%20table%20td%20%7B%0Aborder%2Dleft%2Dstyle%3A%20none%3B%0Aborder%2Dright%2Dstyle%3A%20none%3B%0A%7D%0Atable%20thead%2C%20table%20tr%2Eeven%20%7B%0Abackground%2Dcolor%3A%20%23f7f7f7%3B%0A%7D%0Ap%20%7B%0Amargin%3A%200%2E5em%200%3B%0A%7D%0Ablockquote%20%7B%0Abackground%2Dcolor%3A%20%23f6f6f6%3B%0Apadding%3A%200%2E25em%200%2E75em%3B%0A%7D%0Ahr%20%7B%0Aborder%2Dstyle%3A%20solid%3B%0Aborder%3A%20none%3B%0Aborder%2Dtop%3A%201px%20solid%20%23777%3B%0Amargin%3A%2028px%200%3B%0A%7D%0Adl%20%7B%0Amargin%2Dleft%3A%200%3B%0A%7D%0Adl%20dd%20%7B%0Amargin%2Dbottom%3A%2013px%3B%0Amargin%2Dleft%3A%2013px%3B%0A%7D%0Adl%20dt%20%7B%0Afont%2Dweight%3A%20bold%3B%0A%7D%0Aul%20%7B%0Amargin%2Dtop%3A%200%3B%0A%7D%0Aul%20li%20%7B%0Alist%2Dstyle%3A%20circle%20outside%3B%0A%7D%0Aul%20ul%20%7B%0Amargin%2Dbottom%3A%200%3B%0A%7D%0Apre%2C%20code%20%7B%0Abackground%2Dcolor%3A%20%23f7f7f7%3B%0Aborder%2Dradius%3A%203px%3B%0Acolor%3A%20%23333%3B%0Awhite%2Dspace%3A%20pre%2Dwrap%3B%20%0A%7D%0Apre%20%7B%0Aborder%2Dradius%3A%203px%3B%0Amargin%3A%205px%200px%2010px%200px%3B%0Apadding%3A%2010px%3B%0A%7D%0Apre%3Anot%28%5Bclass%5D%29%20%7B%0Abackground%2Dcolor%3A%20%23f7f7f7%3B%0A%7D%0Acode%20%7B%0Afont%2Dfamily%3A%20Consolas%2C%20Monaco%2C%20%27Courier%20New%27%2C%20monospace%3B%0Afont%2Dsize%3A%2085%25%3B%0A%7D%0Ap%20%3E%20code%2C%20li%20%3E%20code%20%7B%0Apadding%3A%202px%200px%3B%0A%7D%0Adiv%2Efigure%20%7B%0Atext%2Dalign%3A%20center%3B%0A%7D%0Aimg%20%7B%0Abackground%2Dcolor%3A%20%23FFFFFF%3B%0Apadding%3A%202px%3B%0Aborder%3A%201px%20solid%20%23DDDDDD%3B%0Aborder%2Dradius%3A%203px%3B%0Aborder%3A%201px%20solid%20%23CCCCCC%3B%0Amargin%3A%200%205px%3B%0A%7D%0Ah1%20%7B%0Amargin%2Dtop%3A%200%3B%0Afont%2Dsize%3A%2035px%3B%0Aline%2Dheight%3A%2040px%3B%0A%7D%0Ah2%20%7B%0Aborder%2Dbottom%3A%204px%20solid%20%23f7f7f7%3B%0Apadding%2Dtop%3A%2010px%3B%0Apadding%2Dbottom%3A%202px%3B%0Afont%2Dsize%3A%20145%25%3B%0A%7D%0Ah3%20%7B%0Aborder%2Dbottom%3A%202px%20solid%20%23f7f7f7%3B%0Apadding%2Dtop%3A%2010px%3B%0Afont%2Dsize%3A%20120%25%3B%0A%7D%0Ah4%20%7B%0Aborder%2Dbottom%3A%201px%20solid%20%23f7f7f7%3B%0Amargin%2Dleft%3A%208px%3B%0Afont%2Dsize%3A%20105%25%3B%0A%7D%0Ah5%2C%20h6%20%7B%0Aborder%2Dbottom%3A%201px%20solid%20%23ccc%3B%0Afont%2Dsize%3A%20105%25%3B%0A%7D%0Aa%20%7B%0Acolor%3A%20%230033dd%3B%0Atext%2Ddecoration%3A%20none%3B%0A%7D%0Aa%3Ahover%20%7B%0Acolor%3A%20%236666ff%3B%20%7D%0Aa%3Avisited%20%7B%0Acolor%3A%20%23800080%3B%20%7D%0Aa%3Avisited%3Ahover%20%7B%0Acolor%3A%20%23BB00BB%3B%20%7D%0Aa%5Bhref%5E%3D%22http%3A%22%5D%20%7B%0Atext%2Ddecoration%3A%20underline%3B%20%7D%0Aa%5Bhref%5E%3D%22https%3A%22%5D%20%7B%0Atext%2Ddecoration%3A%20underline%3B%20%7D%0A%0Acode%20%3E%20span%2Ekw%20%7B%20color%3A%20%23555%3B%20font%2Dweight%3A%20bold%3B%20%7D%20%0Acode%20%3E%20span%2Edt%20%7B%20color%3A%20%23902000%3B%20%7D%20%0Acode%20%3E%20span%2Edv%20%7B%20color%3A%20%2340a070%3B%20%7D%20%0Acode%20%3E%20span%2Ebn%20%7B%20color%3A%20%23d14%3B%20%7D%20%0Acode%20%3E%20span%2Efl%20%7B%20color%3A%20%23d14%3B%20%7D%20%0Acode%20%3E%20span%2Ech%20%7B%20color%3A%20%23d14%3B%20%7D%20%0Acode%20%3E%20span%2Est%20%7B%20color%3A%20%23d14%3B%20%7D%20%0Acode%20%3E%20span%2Eco%20%7B%20color%3A%20%23888888%3B%20font%2Dstyle%3A%20italic%3B%20%7D%20%0Acode%20%3E%20span%2Eot%20%7B%20color%3A%20%23007020%3B%20%7D%20%0Acode%20%3E%20span%2Eal%20%7B%20color%3A%20%23ff0000%3B%20font%2Dweight%3A%20bold%3B%20%7D%20%0Acode%20%3E%20span%2Efu%20%7B%20color%3A%20%23900%3B%20font%2Dweight%3A%20bold%3B%20%7D%20%20code%20%3E%20span%2Eer%20%7B%20color%3A%20%23a61717%3B%20background%2Dcolor%3A%20%23e3d2d2%3B%20%7D%20%0A" rel="stylesheet" type="text/css" />

</head>

<body>




<h1 class="title toc-ignore">Introduction to dplyr</h1>



<p>When working with data you must:</p>
<ul>
<li><p>Figure out what you want to do.</p></li>
<li><p>Describe those tasks in the form of a computer program.</p></li>
<li><p>Execute the program.</p></li>
</ul>
<p>The dplyr package makes these steps fast and easy:</p>
<ul>
<li><p>By constraining your options, it helps you think about your data manipulation challenges.</p></li>
<li><p>It provides simple “verbs”, functions that correspond to the most common data manipulation tasks, to help you translate your thoughts into code.</p></li>
<li><p>It uses efficient backends, so you spend less time waiting for the computer.</p></li>
</ul>
<p>This document introduces you to dplyr’s basic set of tools, and shows you how to apply them to data frames. dplyr also supports databases via the dbplyr package, once you’ve installed, read <code>vignette(&quot;dbplyr&quot;)</code> to learn more.</p>
<div id="data-nycflights13" class="section level2">
<h2>Data: nycflights13</h2>
<p>To explore the basic data manipulation verbs of dplyr, we’ll use <code>nycflights13::flights</code>. This dataset contains all 336776 flights that departed from New York City in 2013. The data comes from the US <a href="http://www.transtats.bts.gov/DatabaseInfo.asp?DB_ID=120&amp;Link=0">Bureau of Transportation Statistics</a>, and is documented in <code>?nycflights13</code></p>
<div class="sourceCode"><pre class="sourceCode r"><code class="sourceCode r"><span class="kw">library</span>(nycflights13)
<span class="kw">dim</span>(flights)
<span class="co">#&gt; [1] 336776     19</span>
flights
<span class="co">#&gt; # A tibble: 336,776 x 19</span>
<span class="co">#&gt;    year month   day dep_t… sche… dep_… arr_… sche… arr_… carr… flig… tail…</span>
<span class="co">#&gt;   &lt;int&gt; &lt;int&gt; &lt;int&gt;  &lt;int&gt; &lt;int&gt; &lt;dbl&gt; &lt;int&gt; &lt;int&gt; &lt;dbl&gt; &lt;chr&gt; &lt;int&gt; &lt;chr&gt;</span>
<span class="co">#&gt; 1  2013     1     1    517   515  2.00   830   819  11.0 UA     1545 N142…</span>
<span class="co">#&gt; 2  2013     1     1    533   529  4.00   850   830  20.0 UA     1714 N242…</span>
<span class="co">#&gt; 3  2013     1     1    542   540  2.00   923   850  33.0 AA     1141 N619…</span>
<span class="co">#&gt; 4  2013     1     1    544   545 -1.00  1004  1022 -18.0 B6      725 N804…</span>
<span class="co">#&gt; # ... with 336,772 more rows, and 7 more variables: origin &lt;chr&gt;,</span>
<span class="co">#&gt; #   dest &lt;chr&gt;, air_time &lt;dbl&gt;, distance &lt;dbl&gt;, hour &lt;dbl&gt;, minute &lt;dbl&gt;,</span>
<span class="co">#&gt; #   time_hour &lt;dttm&gt;</span></code></pre></div>
<p>Note that <code>nycflights13::flights</code> is a tibble, a modern reimagining of the data frame. It’s particular useful for large datasets because it only prints the first few rows. You can learn more about tibbles at <a href="http://tibble.tidyverse.org" class="uri">http://tibble.tidyverse.org</a>; in particular you can convert data frames to tibbles with <code>as_tibble()</code>.</p>
</div>
<div id="single-table-verbs" class="section level2">
<h2>Single table verbs</h2>
<p>Dplyr aims to provide a function for each basic verb of data manipulation:</p>
<ul>
<li><code>filter()</code> to select cases based on their values.</li>
<li><code>arrange()</code> to reorder the cases.</li>
<li><code>select()</code> and <code>rename()</code> to select variables based on their names.</li>
<li><code>mutate()</code> and <code>transmute()</code> to add new variables that are functions of existing variables.</li>
<li><code>summarise()</code> to condense multiple values to a single value.</li>
<li><code>sample_n()</code> and <code>sample_frac()</code> to take random samples.</li>
</ul>
<div id="filter-rows-with-filter" class="section level3">
<h3>Filter rows with <code>filter()</code></h3>
<p><code>filter()</code> allows you to select a subset of rows in a data frame. Like all single verbs, the first argument is the tibble (or data frame). The second and subsequent arguments refer to variables within that data frame, selecting rows where the expression is <code>TRUE</code>.</p>
<p>For example, we can select all flights on January 1st with:</p>
<div class="sourceCode"><pre class="sourceCode r"><code class="sourceCode r"><span class="kw">filter</span>(flights, month <span class="op">==</span><span class="st"> </span><span class="dv">1</span>, day <span class="op">==</span><span class="st"> </span><span class="dv">1</span>)
<span class="co">#&gt; # A tibble: 842 x 19</span>
<span class="co">#&gt;    year month   day dep_t… sche… dep_… arr_… sche… arr_… carr… flig… tail…</span>
<span class="co">#&gt;   &lt;int&gt; &lt;int&gt; &lt;int&gt;  &lt;int&gt; &lt;int&gt; &lt;dbl&gt; &lt;int&gt; &lt;int&gt; &lt;dbl&gt; &lt;chr&gt; &lt;int&gt; &lt;chr&gt;</span>
<span class="co">#&gt; 1  2013     1     1    517   515  2.00   830   819  11.0 UA     1545 N142…</span>
<span class="co">#&gt; 2  2013     1     1    533   529  4.00   850   830  20.0 UA     1714 N242…</span>
<span class="co">#&gt; 3  2013     1     1    542   540  2.00   923   850  33.0 AA     1141 N619…</span>
<span class="co">#&gt; 4  2013     1     1    544   545 -1.00  1004  1022 -18.0 B6      725 N804…</span>
<span class="co">#&gt; # ... with 838 more rows, and 7 more variables: origin &lt;chr&gt;, dest &lt;chr&gt;,</span>
<span class="co">#&gt; #   air_time &lt;dbl&gt;, distance &lt;dbl&gt;, hour &lt;dbl&gt;, minute &lt;dbl&gt;,</span>
<span class="co">#&gt; #   time_hour &lt;dttm&gt;</span></code></pre></div>
<p>This is rougly equivalent to this base R code:</p>
<div class="sourceCode"><pre class="sourceCode r"><code class="sourceCode r">flights[flights<span class="op">$</span>month <span class="op">==</span><span class="st"> </span><span class="dv">1</span> <span class="op">&amp;</span><span class="st"> </span>flights<span class="op">$</span>day <span class="op">==</span><span class="st"> </span><span class="dv">1</span>, ]</code></pre></div>
</div>
<div id="arrange-rows-with-arrange" class="section level3">
<h3>Arrange rows with <code>arrange()</code></h3>
<p><code>arrange()</code> works similarly to <code>filter()</code> except that instead of filtering or selecting rows, it reorders them. It takes a data frame, and a set of column names (or more complicated expressions) to order by. If you provide more than one column name, each additional column will be used to break ties in the values of preceding columns:</p>
<div class="sourceCode"><pre class="sourceCode r"><code class="sourceCode r"><span class="kw">arrange</span>(flights, year, month, day)
<span class="co">#&gt; # A tibble: 336,776 x 19</span>
<span class="co">#&gt;    year month   day dep_t… sche… dep_… arr_… sche… arr_… carr… flig… tail…</span>
<span class="co">#&gt;   &lt;int&gt; &lt;int&gt; &lt;int&gt;  &lt;int&gt; &lt;int&gt; &lt;dbl&gt; &lt;int&gt; &lt;int&gt; &lt;dbl&gt; &lt;chr&gt; &lt;int&gt; &lt;chr&gt;</span>
<span class="co">#&gt; 1  2013     1     1    517   515  2.00   830   819  11.0 UA     1545 N142…</span>
<span class="co">#&gt; 2  2013     1     1    533   529  4.00   850   830  20.0 UA     1714 N242…</span>
<span class="co">#&gt; 3  2013     1     1    542   540  2.00   923   850  33.0 AA     1141 N619…</span>
<span class="co">#&gt; 4  2013     1     1    544   545 -1.00  1004  1022 -18.0 B6      725 N804…</span>
<span class="co">#&gt; # ... with 336,772 more rows, and 7 more variables: origin &lt;chr&gt;,</span>
<span class="co">#&gt; #   dest &lt;chr&gt;, air_time &lt;dbl&gt;, distance &lt;dbl&gt;, hour &lt;dbl&gt;, minute &lt;dbl&gt;,</span>
<span class="co">#&gt; #   time_hour &lt;dttm&gt;</span></code></pre></div>
<p>Use <code>desc()</code> to order a column in descending order:</p>
<div class="sourceCode"><pre class="sourceCode r"><code class="sourceCode r"><span class="kw">arrange</span>(flights, <span class="kw">desc</span>(arr_delay))
<span class="co">#&gt; # A tibble: 336,776 x 19</span>
<span class="co">#&gt;    year month   day dep_t… sche… dep_… arr_… sche… arr_… carr… flig… tail…</span>
<span class="co">#&gt;   &lt;int&gt; &lt;int&gt; &lt;int&gt;  &lt;int&gt; &lt;int&gt; &lt;dbl&gt; &lt;int&gt; &lt;int&gt; &lt;dbl&gt; &lt;chr&gt; &lt;int&gt; &lt;chr&gt;</span>
<span class="co">#&gt; 1  2013     1     9    641   900  1301  1242  1530  1272 HA       51 N384…</span>
<span class="co">#&gt; 2  2013     6    15   1432  1935  1137  1607  2120  1127 MQ     3535 N504…</span>
<span class="co">#&gt; 3  2013     1    10   1121  1635  1126  1239  1810  1109 MQ     3695 N517…</span>
<span class="co">#&gt; 4  2013     9    20   1139  1845  1014  1457  2210  1007 AA      177 N338…</span>
<span class="co">#&gt; # ... with 336,772 more rows, and 7 more variables: origin &lt;chr&gt;,</span>
<span class="co">#&gt; #   dest &lt;chr&gt;, air_time &lt;dbl&gt;, distance &lt;dbl&gt;, hour &lt;dbl&gt;, minute &lt;dbl&gt;,</span>
<span class="co">#&gt; #   time_hour &lt;dttm&gt;</span></code></pre></div>
</div>
<div id="select-columns-with-select" class="section level3">
<h3>Select columns with <code>select()</code></h3>
<p>Often you work with large datasets with many columns but only a few are actually of interest to you. <code>select()</code> allows you to rapidly zoom in on a useful subset using operations that usually only work on numeric variable positions:</p>
<div class="sourceCode"><pre class="sourceCode r"><code class="sourceCode r"><span class="co"># Select columns by name</span>
<span class="kw">select</span>(flights, year, month, day)
<span class="co">#&gt; # A tibble: 336,776 x 3</span>
<span class="co">#&gt;    year month   day</span>
<span class="co">#&gt;   &lt;int&gt; &lt;int&gt; &lt;int&gt;</span>
<span class="co">#&gt; 1  2013     1     1</span>
<span class="co">#&gt; 2  2013     1     1</span>
<span class="co">#&gt; 3  2013     1     1</span>
<span class="co">#&gt; 4  2013     1     1</span>
<span class="co">#&gt; # ... with 336,772 more rows</span>
<span class="co"># Select all columns between year and day (inclusive)</span>
<span class="kw">select</span>(flights, year<span class="op">:</span>day)
<span class="co">#&gt; # A tibble: 336,776 x 3</span>
<span class="co">#&gt;    year month   day</span>
<span class="co">#&gt;   &lt;int&gt; &lt;int&gt; &lt;int&gt;</span>
<span class="co">#&gt; 1  2013     1     1</span>
<span class="co">#&gt; 2  2013     1     1</span>
<span class="co">#&gt; 3  2013     1     1</span>
<span class="co">#&gt; 4  2013     1     1</span>
<span class="co">#&gt; # ... with 336,772 more rows</span>
<span class="co"># Select all columns except those from year to day (inclusive)</span>
<span class="kw">select</span>(flights, <span class="op">-</span>(year<span class="op">:</span>day))
<span class="co">#&gt; # A tibble: 336,776 x 16</span>
<span class="co">#&gt;   dep_t… sche… dep_… arr_… sche… arr_… carr… flig… tail… orig… dest  air_…</span>
<span class="co">#&gt;    &lt;int&gt; &lt;int&gt; &lt;dbl&gt; &lt;int&gt; &lt;int&gt; &lt;dbl&gt; &lt;chr&gt; &lt;int&gt; &lt;chr&gt; &lt;chr&gt; &lt;chr&gt; &lt;dbl&gt;</span>
<span class="co">#&gt; 1    517   515  2.00   830   819  11.0 UA     1545 N142… EWR   IAH     227</span>
<span class="co">#&gt; 2    533   529  4.00   850   830  20.0 UA     1714 N242… LGA   IAH     227</span>
<span class="co">#&gt; 3    542   540  2.00   923   850  33.0 AA     1141 N619… JFK   MIA     160</span>
<span class="co">#&gt; 4    544   545 -1.00  1004  1022 -18.0 B6      725 N804… JFK   BQN     183</span>
<span class="co">#&gt; # ... with 336,772 more rows, and 4 more variables: distance &lt;dbl&gt;,</span>
<span class="co">#&gt; #   hour &lt;dbl&gt;, minute &lt;dbl&gt;, time_hour &lt;dttm&gt;</span></code></pre></div>
<p>There are a number of helper functions you can use within <code>select()</code>, like <code>starts_with()</code>, <code>ends_with()</code>, <code>matches()</code> and <code>contains()</code>. These let you quickly match larger blocks of variables that meet some criterion. See <code>?select</code> for more details.</p>
<p>You can rename variables with <code>select()</code> by using named arguments:</p>
<div class="sourceCode"><pre class="sourceCode r"><code class="sourceCode r"><span class="kw">select</span>(flights, <span class="dt">tail_num =</span> tailnum)
<span class="co">#&gt; # A tibble: 336,776 x 1</span>
<span class="co">#&gt;   tail_num</span>
<span class="co">#&gt;   &lt;chr&gt;   </span>
<span class="co">#&gt; 1 N14228  </span>
<span class="co">#&gt; 2 N24211  </span>
<span class="co">#&gt; 3 N619AA  </span>
<span class="co">#&gt; 4 N804JB  </span>
<span class="co">#&gt; # ... with 336,772 more rows</span></code></pre></div>
<p>But because <code>select()</code> drops all the variables not explicitly mentioned, it’s not that useful. Instead, use <code>rename()</code>:</p>
<div class="sourceCode"><pre class="sourceCode r"><code class="sourceCode r"><span class="kw">rename</span>(flights, <span class="dt">tail_num =</span> tailnum)
<span class="co">#&gt; # A tibble: 336,776 x 19</span>
<span class="co">#&gt;    year month   day dep_t… sche… dep_… arr_… sche… arr_… carr… flig… tail…</span>
<span class="co">#&gt;   &lt;int&gt; &lt;int&gt; &lt;int&gt;  &lt;int&gt; &lt;int&gt; &lt;dbl&gt; &lt;int&gt; &lt;int&gt; &lt;dbl&gt; &lt;chr&gt; &lt;int&gt; &lt;chr&gt;</span>
<span class="co">#&gt; 1  2013     1     1    517   515  2.00   830   819  11.0 UA     1545 N142…</span>
<span class="co">#&gt; 2  2013     1     1    533   529  4.00   850   830  20.0 UA     1714 N242…</span>
<span class="co">#&gt; 3  2013     1     1    542   540  2.00   923   850  33.0 AA     1141 N619…</span>
<span class="co">#&gt; 4  2013     1     1    544   545 -1.00  1004  1022 -18.0 B6      725 N804…</span>
<span class="co">#&gt; # ... with 336,772 more rows, and 7 more variables: origin &lt;chr&gt;,</span>
<span class="co">#&gt; #   dest &lt;chr&gt;, air_time &lt;dbl&gt;, distance &lt;dbl&gt;, hour &lt;dbl&gt;, minute &lt;dbl&gt;,</span>
<span class="co">#&gt; #   time_hour &lt;dttm&gt;</span></code></pre></div>
</div>
<div id="add-new-columns-with-mutate" class="section level3">
<h3>Add new columns with <code>mutate()</code></h3>
<p>Besides selecting sets of existing columns, it’s often useful to add new columns that are functions of existing columns. This is the job of <code>mutate()</code>:</p>
<div class="sourceCode"><pre class="sourceCode r"><code class="sourceCode r"><span class="kw">mutate</span>(flights,
  <span class="dt">gain =</span> arr_delay <span class="op">-</span><span class="st"> </span>dep_delay,
  <span class="dt">speed =</span> distance <span class="op">/</span><span class="st"> </span>air_time <span class="op">*</span><span class="st"> </span><span class="dv">60</span>
)
<span class="co">#&gt; # A tibble: 336,776 x 21</span>
<span class="co">#&gt;    year month   day dep_t… sche… dep_… arr_… sche… arr_… carr… flig… tail…</span>
<span class="co">#&gt;   &lt;int&gt; &lt;int&gt; &lt;int&gt;  &lt;int&gt; &lt;int&gt; &lt;dbl&gt; &lt;int&gt; &lt;int&gt; &lt;dbl&gt; &lt;chr&gt; &lt;int&gt; &lt;chr&gt;</span>
<span class="co">#&gt; 1  2013     1     1    517   515  2.00   830   819  11.0 UA     1545 N142…</span>
<span class="co">#&gt; 2  2013     1     1    533   529  4.00   850   830  20.0 UA     1714 N242…</span>
<span class="co">#&gt; 3  2013     1     1    542   540  2.00   923   850  33.0 AA     1141 N619…</span>
<span class="co">#&gt; 4  2013     1     1    544   545 -1.00  1004  1022 -18.0 B6      725 N804…</span>
<span class="co">#&gt; # ... with 336,772 more rows, and 9 more variables: origin &lt;chr&gt;,</span>
<span class="co">#&gt; #   dest &lt;chr&gt;, air_time &lt;dbl&gt;, distance &lt;dbl&gt;, hour &lt;dbl&gt;, minute &lt;dbl&gt;,</span>
<span class="co">#&gt; #   time_hour &lt;dttm&gt;, gain &lt;dbl&gt;, speed &lt;dbl&gt;</span></code></pre></div>
<p><code>dplyr::mutate()</code> is similar to the base <code>transform()</code>, but allows you to refer to columns that you’ve just created:</p>
<div class="sourceCode"><pre class="sourceCode r"><code class="sourceCode r"><span class="kw">mutate</span>(flights,
  <span class="dt">gain =</span> arr_delay <span class="op">-</span><span class="st"> </span>dep_delay,
  <span class="dt">gain_per_hour =</span> gain <span class="op">/</span><span class="st"> </span>(air_time <span class="op">/</span><span class="st"> </span><span class="dv">60</span>)
)
<span class="co">#&gt; # A tibble: 336,776 x 21</span>
<span class="co">#&gt;    year month   day dep_t… sche… dep_… arr_… sche… arr_… carr… flig… tail…</span>
<span class="co">#&gt;   &lt;int&gt; &lt;int&gt; &lt;int&gt;  &lt;int&gt; &lt;int&gt; &lt;dbl&gt; &lt;int&gt; &lt;int&gt; &lt;dbl&gt; &lt;chr&gt; &lt;int&gt; &lt;chr&gt;</span>
<span class="co">#&gt; 1  2013     1     1    517   515  2.00   830   819  11.0 UA     1545 N142…</span>
<span class="co">#&gt; 2  2013     1     1    533   529  4.00   850   830  20.0 UA     1714 N242…</span>
<span class="co">#&gt; 3  2013     1     1    542   540  2.00   923   850  33.0 AA     1141 N619…</span>
<span class="co">#&gt; 4  2013     1     1    544   545 -1.00  1004  1022 -18.0 B6      725 N804…</span>
<span class="co">#&gt; # ... with 336,772 more rows, and 9 more variables: origin &lt;chr&gt;,</span>
<span class="co">#&gt; #   dest &lt;chr&gt;, air_time &lt;dbl&gt;, distance &lt;dbl&gt;, hour &lt;dbl&gt;, minute &lt;dbl&gt;,</span>
<span class="co">#&gt; #   time_hour &lt;dttm&gt;, gain &lt;dbl&gt;, gain_per_hour &lt;dbl&gt;</span></code></pre></div>
<p>If you only want to keep the new variables, use <code>transmute()</code>:</p>
<div class="sourceCode"><pre class="sourceCode r"><code class="sourceCode r"><span class="kw">transmute</span>(flights,
  <span class="dt">gain =</span> arr_delay <span class="op">-</span><span class="st"> </span>dep_delay,
  <span class="dt">gain_per_hour =</span> gain <span class="op">/</span><span class="st"> </span>(air_time <span class="op">/</span><span class="st"> </span><span class="dv">60</span>)
)
<span class="co">#&gt; # A tibble: 336,776 x 2</span>
<span class="co">#&gt;     gain gain_per_hour</span>
<span class="co">#&gt;    &lt;dbl&gt;         &lt;dbl&gt;</span>
<span class="co">#&gt; 1   9.00          2.38</span>
<span class="co">#&gt; 2  16.0           4.23</span>
<span class="co">#&gt; 3  31.0          11.6 </span>
<span class="co">#&gt; 4 -17.0         - 5.57</span>
<span class="co">#&gt; # ... with 336,772 more rows</span></code></pre></div>
</div>
<div id="summarise-values-with-summarise" class="section level3">
<h3>Summarise values with <code>summarise()</code></h3>
<p>The last verb is <code>summarise()</code>. It collapses a data frame to a single row.</p>
<div class="sourceCode"><pre class="sourceCode r"><code class="sourceCode r"><span class="kw">summarise</span>(flights,
  <span class="dt">delay =</span> <span class="kw">mean</span>(dep_delay, <span class="dt">na.rm =</span> <span class="ot">TRUE</span>)
)
<span class="co">#&gt; # A tibble: 1 x 1</span>
<span class="co">#&gt;   delay</span>
<span class="co">#&gt;   &lt;dbl&gt;</span>
<span class="co">#&gt; 1  12.6</span></code></pre></div>
<p>It’s not that useful until we learn the <code>group_by()</code> verb below.</p>
</div>
<div id="randomly-sample-rows-with-sample_n-and-sample_frac" class="section level3">
<h3>Randomly sample rows with <code>sample_n()</code> and <code>sample_frac()</code></h3>
<p>You can use <code>sample_n()</code> and <code>sample_frac()</code> to take a random sample of rows: use <code>sample_n()</code> for a fixed number and <code>sample_frac()</code> for a fixed fraction.</p>
<div class="sourceCode"><pre class="sourceCode r"><code class="sourceCode r"><span class="kw">sample_n</span>(flights, <span class="dv">10</span>)
<span class="co">#&gt; # A tibble: 10 x 19</span>
<span class="co">#&gt;    year month   day dep_t… sched_… dep_de… arr_… sched… arr_d… carr… flig…</span>
<span class="co">#&gt;   &lt;int&gt; &lt;int&gt; &lt;int&gt;  &lt;int&gt;   &lt;int&gt;   &lt;dbl&gt; &lt;int&gt;  &lt;int&gt;  &lt;dbl&gt; &lt;chr&gt; &lt;int&gt;</span>
<span class="co">#&gt; 1  2013    10     1    822     825  - 3.00   932    935 - 3.00 AA       84</span>
<span class="co">#&gt; 2  2013     8     2    712     715  - 3.00  1015   1010   5.00 VX      399</span>
<span class="co">#&gt; 3  2013     5    10   1309    1315  - 6.00  1502   1501   1.00 US     1895</span>
<span class="co">#&gt; 4  2013    10    28   2002    1930   32.0   2318   2250  28.0  DL      795</span>
<span class="co">#&gt; # ... with 6 more rows, and 8 more variables: tailnum &lt;chr&gt;, origin &lt;chr&gt;,</span>
<span class="co">#&gt; #   dest &lt;chr&gt;, air_time &lt;dbl&gt;, distance &lt;dbl&gt;, hour &lt;dbl&gt;, minute &lt;dbl&gt;,</span>
<span class="co">#&gt; #   time_hour &lt;dttm&gt;</span>
<span class="kw">sample_frac</span>(flights, <span class="fl">0.01</span>)
<span class="co">#&gt; # A tibble: 3,368 x 19</span>
<span class="co">#&gt;    year month   day dep_t… sche… dep_… arr_… sche… arr_… carr… flig… tail…</span>
<span class="co">#&gt;   &lt;int&gt; &lt;int&gt; &lt;int&gt;  &lt;int&gt; &lt;int&gt; &lt;dbl&gt; &lt;int&gt; &lt;int&gt; &lt;dbl&gt; &lt;chr&gt; &lt;int&gt; &lt;chr&gt;</span>
<span class="co">#&gt; 1  2013     8    16    827   830 -3.00   928   950 -22.0 AA     1838 N3CA…</span>
<span class="co">#&gt; 2  2013    11     4   1306  1300  6.00  1639  1610  29.0 VX      411 N641…</span>
<span class="co">#&gt; 3  2013     1    14    929   935 -6.00  1213  1238 -25.0 B6      361 N639…</span>
<span class="co">#&gt; 4  2013    12    28    625   630 -5.00   916  1014 -58.0 US      690 N656…</span>
<span class="co">#&gt; # ... with 3,364 more rows, and 7 more variables: origin &lt;chr&gt;,</span>
<span class="co">#&gt; #   dest &lt;chr&gt;, air_time &lt;dbl&gt;, distance &lt;dbl&gt;, hour &lt;dbl&gt;, minute &lt;dbl&gt;,</span>
<span class="co">#&gt; #   time_hour &lt;dttm&gt;</span></code></pre></div>
<p>Use <code>replace = TRUE</code> to perform a bootstrap sample. If needed, you can weight the sample with the <code>weight</code> argument.</p>
</div>
<div id="commonalities" class="section level3">
<h3>Commonalities</h3>
<p>You may have noticed that the syntax and function of all these verbs are very similar:</p>
<ul>
<li><p>The first argument is a data frame.</p></li>
<li><p>The subsequent arguments describe what to do with the data frame. You can refer to columns in the data frame directly without using <code>$</code>.</p></li>
<li><p>The result is a new data frame</p></li>
</ul>
<p>Together these properties make it easy to chain together multiple simple steps to achieve a complex result.</p>
<p>These five functions provide the basis of a language of data manipulation. At the most basic level, you can only alter a tidy data frame in five useful ways: you can reorder the rows (<code>arrange()</code>), pick observations and variables of interest (<code>filter()</code> and <code>select()</code>), add new variables that are functions of existing variables (<code>mutate()</code>), or collapse many values to a summary (<code>summarise()</code>). The remainder of the language comes from applying the five functions to different types of data. For example, I’ll discuss how these functions work with grouped data.</p>
</div>
</div>
<div id="patterns-of-operations" class="section level2">
<h2>Patterns of operations</h2>
<p>The dplyr verbs can be classified by the type of operations they accomplish (we sometimes speak of their <strong>semantics</strong>, i.e., their meaning). The most important and useful distinction is between grouped and ungrouped operations. In addition, it is helpful to have a good grasp of the difference between select and mutate operations.</p>
<div id="grouped-operations" class="section level3">
<h3>Grouped operations</h3>
<p>The dplyr verbs are useful on their own, but they become even more powerful when you apply them to groups of observations within a dataset. In dplyr, you do this with the <code>group_by()</code> function. It breaks down a dataset into specified groups of rows. When you then apply the verbs above on the resulting object they’ll be automatically applied “by group”.</p>
<p>Grouping affects the verbs as follows:</p>
<ul>
<li><p>grouped <code>select()</code> is the same as ungrouped <code>select()</code>, except that grouping variables are always retained.</p></li>
<li><p>grouped <code>arrange()</code> is the same as ungrouped; unless you set <code>.by_group = TRUE</code>, in which case it orders first by the grouping variables</p></li>
<li><p><code>mutate()</code> and <code>filter()</code> are most useful in conjunction with window functions (like <code>rank()</code>, or <code>min(x) == x</code>). They are described in detail in <code>vignette(&quot;window-functions&quot;)</code>.</p></li>
<li><p><code>sample_n()</code> and <code>sample_frac()</code> sample the specified number/fraction of rows in each group.</p></li>
<li><p><code>summarise()</code> computes the summary for each group.</p></li>
</ul>
<p>In the following example, we split the complete dataset into individual planes and then summarise each plane by counting the number of flights (<code>count = n()</code>) and computing the average distance (<code>dist = mean(distance, na.rm = TRUE)</code>) and arrival delay (<code>delay = mean(arr_delay, na.rm = TRUE)</code>). We then use ggplot2 to display the output.</p>
<div class="sourceCode"><pre class="sourceCode r"><code class="sourceCode r">by_tailnum &lt;-<span class="st"> </span><span class="kw">group_by</span>(flights, tailnum)
delay &lt;-<span class="st"> </span><span class="kw">summarise</span>(by_tailnum,
  <span class="dt">count =</span> <span class="kw">n</span>(),
  <span class="dt">dist =</span> <span class="kw">mean</span>(distance, <span class="dt">na.rm =</span> <span class="ot">TRUE</span>),
  <span class="dt">delay =</span> <span class="kw">mean</span>(arr_delay, <span class="dt">na.rm =</span> <span class="ot">TRUE</span>))
delay &lt;-<span class="st"> </span><span class="kw">filter</span>(delay, count <span class="op">&gt;</span><span class="st"> </span><span class="dv">20</span>, dist <span class="op">&lt;</span><span class="st"> </span><span class="dv">2000</span>)

<span class="co"># Interestingly, the average delay is only slightly related to the</span>
<span class="co"># average distance flown by a plane.</span>
<span class="kw">ggplot</span>(delay, <span class="kw">aes</span>(dist, delay)) <span class="op">+</span>
<span class="st">  </span><span class="kw">geom_point</span>(<span class="kw">aes</span>(<span class="dt">size =</span> count), <span class="dt">alpha =</span> <span class="dv">1</span><span class="op">/</span><span class="dv">2</span>) <span class="op">+</span>
<span class="st">  </span><span class="kw">geom_smooth</span>() <span class="op">+</span>
<span class="st">  </span><span class="kw">scale_size_area</span>()</code></pre></div>
<p><img src="data:image/png;base64,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" /><!-- --></p>
<p>You use <code>summarise()</code> with <strong>aggregate functions</strong>, which take a vector of values and return a single number. There are many useful examples of such functions in base R like <code>min()</code>, <code>max()</code>, <code>mean()</code>, <code>sum()</code>, <code>sd()</code>, <code>median()</code>, and <code>IQR()</code>. dplyr provides a handful of others:</p>
<ul>
<li><p><code>n()</code>: the number of observations in the current group</p></li>
<li><p><code>n_distinct(x)</code>:the number of unique values in <code>x</code>.</p></li>
<li><p><code>first(x)</code>, <code>last(x)</code> and <code>nth(x, n)</code> - these work similarly to <code>x[1]</code>, <code>x[length(x)]</code>, and <code>x[n]</code> but give you more control over the result if the value is missing.</p></li>
</ul>
<p>For example, we could use these to find the number of planes and the number of flights that go to each possible destination:</p>
<div class="sourceCode"><pre class="sourceCode r"><code class="sourceCode r">destinations &lt;-<span class="st"> </span><span class="kw">group_by</span>(flights, dest)
<span class="kw">summarise</span>(destinations,
  <span class="dt">planes =</span> <span class="kw">n_distinct</span>(tailnum),
  <span class="dt">flights =</span> <span class="kw">n</span>()
)
<span class="co">#&gt; # A tibble: 105 x 3</span>
<span class="co">#&gt;   dest  planes flights</span>
<span class="co">#&gt;   &lt;chr&gt;  &lt;int&gt;   &lt;int&gt;</span>
<span class="co">#&gt; 1 ABQ      108     254</span>
<span class="co">#&gt; 2 ACK       58     265</span>
<span class="co">#&gt; 3 ALB      172     439</span>
<span class="co">#&gt; 4 ANC        6       8</span>
<span class="co">#&gt; # ... with 101 more rows</span></code></pre></div>
<p>When you group by multiple variables, each summary peels off one level of the grouping. That makes it easy to progressively roll-up a dataset:</p>
<div class="sourceCode"><pre class="sourceCode r"><code class="sourceCode r">daily &lt;-<span class="st"> </span><span class="kw">group_by</span>(flights, year, month, day)
(per_day   &lt;-<span class="st"> </span><span class="kw">summarise</span>(daily, <span class="dt">flights =</span> <span class="kw">n</span>()))
<span class="co">#&gt; # A tibble: 365 x 4</span>
<span class="co">#&gt; # Groups:   year, month [?]</span>
<span class="co">#&gt;    year month   day flights</span>
<span class="co">#&gt;   &lt;int&gt; &lt;int&gt; &lt;int&gt;   &lt;int&gt;</span>
<span class="co">#&gt; 1  2013     1     1     842</span>
<span class="co">#&gt; 2  2013     1     2     943</span>
<span class="co">#&gt; 3  2013     1     3     914</span>
<span class="co">#&gt; 4  2013     1     4     915</span>
<span class="co">#&gt; # ... with 361 more rows</span>
(per_month &lt;-<span class="st"> </span><span class="kw">summarise</span>(per_day, <span class="dt">flights =</span> <span class="kw">sum</span>(flights)))
<span class="co">#&gt; # A tibble: 12 x 3</span>
<span class="co">#&gt; # Groups:   year [?]</span>
<span class="co">#&gt;    year month flights</span>
<span class="co">#&gt;   &lt;int&gt; &lt;int&gt;   &lt;int&gt;</span>
<span class="co">#&gt; 1  2013     1   27004</span>
<span class="co">#&gt; 2  2013     2   24951</span>
<span class="co">#&gt; 3  2013     3   28834</span>
<span class="co">#&gt; 4  2013     4   28330</span>
<span class="co">#&gt; # ... with 8 more rows</span>
(per_year  &lt;-<span class="st"> </span><span class="kw">summarise</span>(per_month, <span class="dt">flights =</span> <span class="kw">sum</span>(flights)))
<span class="co">#&gt; # A tibble: 1 x 2</span>
<span class="co">#&gt;    year flights</span>
<span class="co">#&gt;   &lt;int&gt;   &lt;int&gt;</span>
<span class="co">#&gt; 1  2013  336776</span></code></pre></div>
<p>However you need to be careful when progressively rolling up summaries like this: it’s ok for sums and counts, but you need to think about weighting for means and variances (it’s not possible to do this exactly for medians).</p>
</div>
<div id="selecting-operations" class="section level3">
<h3>Selecting operations</h3>
<p>One of the appealing features of dplyr is that you can refer to columns from the tibble as if they were regular variables. However, the syntactic uniformity of referring to bare column names hide semantical differences across the verbs. A column symbol supplied to <code>select()</code> does not have the same meaning as the same symbol supplied to <code>mutate()</code>.</p>
<p>Selecting operations expect column names and positions. Hence, when you call <code>select()</code> with bare variable names, they actually represent their own positions in the tibble. The following calls are completely equivalent from dplyr’s point of view:</p>
<div class="sourceCode"><pre class="sourceCode r"><code class="sourceCode r"><span class="co"># `year` represents the integer 1</span>
<span class="kw">select</span>(flights, year)
<span class="co">#&gt; # A tibble: 336,776 x 1</span>
<span class="co">#&gt;    year</span>
<span class="co">#&gt;   &lt;int&gt;</span>
<span class="co">#&gt; 1  2013</span>
<span class="co">#&gt; 2  2013</span>
<span class="co">#&gt; 3  2013</span>
<span class="co">#&gt; 4  2013</span>
<span class="co">#&gt; # ... with 336,772 more rows</span>
<span class="kw">select</span>(flights, <span class="dv">1</span>)
<span class="co">#&gt; # A tibble: 336,776 x 1</span>
<span class="co">#&gt;    year</span>
<span class="co">#&gt;   &lt;int&gt;</span>
<span class="co">#&gt; 1  2013</span>
<span class="co">#&gt; 2  2013</span>
<span class="co">#&gt; 3  2013</span>
<span class="co">#&gt; 4  2013</span>
<span class="co">#&gt; # ... with 336,772 more rows</span></code></pre></div>
<p>By the same token, this means that you cannot refer to variables from the surrounding context if they have the same name as one of the columns. In the following example, <code>year</code> still represents 1, not 5:</p>
<div class="sourceCode"><pre class="sourceCode r"><code class="sourceCode r">year &lt;-<span class="st"> </span><span class="dv">5</span>
<span class="kw">select</span>(flights, year)</code></pre></div>
<p>One useful subtlety is that this only applies to bare names and to selecting calls like <code>c(year, month, day)</code> or <code>year:day</code>. In all other cases, the columns of the data frame are not put in scope. This allows you to refer to contextual variables in selection helpers:</p>
<div class="sourceCode"><pre class="sourceCode r"><code class="sourceCode r">year &lt;-<span class="st"> &quot;dep&quot;</span>
<span class="kw">select</span>(flights, <span class="kw">starts_with</span>(year))
<span class="co">#&gt; # A tibble: 336,776 x 2</span>
<span class="co">#&gt;   dep_time dep_delay</span>
<span class="co">#&gt;      &lt;int&gt;     &lt;dbl&gt;</span>
<span class="co">#&gt; 1      517      2.00</span>
<span class="co">#&gt; 2      533      4.00</span>
<span class="co">#&gt; 3      542      2.00</span>
<span class="co">#&gt; 4      544     -1.00</span>
<span class="co">#&gt; # ... with 336,772 more rows</span></code></pre></div>
<p>These semantics are usually intuitive. But note the subtle difference:</p>
<div class="sourceCode"><pre class="sourceCode r"><code class="sourceCode r">year &lt;-<span class="st"> </span><span class="dv">5</span>
<span class="kw">select</span>(flights, year, <span class="kw">identity</span>(year))
<span class="co">#&gt; # A tibble: 336,776 x 2</span>
<span class="co">#&gt;    year sched_dep_time</span>
<span class="co">#&gt;   &lt;int&gt;          &lt;int&gt;</span>
<span class="co">#&gt; 1  2013            515</span>
<span class="co">#&gt; 2  2013            529</span>
<span class="co">#&gt; 3  2013            540</span>
<span class="co">#&gt; 4  2013            545</span>
<span class="co">#&gt; # ... with 336,772 more rows</span></code></pre></div>
<p>In the first argument, <code>year</code> represents its own position <code>1</code>. In the second argument, <code>year</code> is evaluated in the surrounding context and represents the fifth column.</p>
<p>For a long time, <code>select()</code> used to only understand column positions. Counting from dplyr 0.6, it now understands column names as well. This makes it a bit easier to program with <code>select()</code>:</p>
<div class="sourceCode"><pre class="sourceCode r"><code class="sourceCode r">vars &lt;-<span class="st"> </span><span class="kw">c</span>(<span class="st">&quot;year&quot;</span>, <span class="st">&quot;month&quot;</span>)
<span class="kw">select</span>(flights, vars, <span class="st">&quot;day&quot;</span>)
<span class="co">#&gt; # A tibble: 336,776 x 3</span>
<span class="co">#&gt;    year month   day</span>
<span class="co">#&gt;   &lt;int&gt; &lt;int&gt; &lt;int&gt;</span>
<span class="co">#&gt; 1  2013     1     1</span>
<span class="co">#&gt; 2  2013     1     1</span>
<span class="co">#&gt; 3  2013     1     1</span>
<span class="co">#&gt; 4  2013     1     1</span>
<span class="co">#&gt; # ... with 336,772 more rows</span></code></pre></div>
<p>Note that the code above is somewhat unsafe because you might have added a column named <code>vars</code> to the tibble, or you might apply the code to another data frame containing such a column. To avoid this issue, you can wrap the variable in an <code>identity()</code> call as we mentioned above, as this will bypass column names. However, a more explicit and general method that works in all dplyr verbs is to unquote the variable with the <code>!!</code> operator. This tells dplyr to bypass the data frame and to directly look in the context:</p>
<div class="sourceCode"><pre class="sourceCode r"><code class="sourceCode r"><span class="co"># Let's create a new `vars` column:</span>
flights<span class="op">$</span>vars &lt;-<span class="st"> </span>flights<span class="op">$</span>year

<span class="co"># The new column won't be an issue if you evaluate `vars` in the</span>
<span class="co"># context with the `!!` operator:</span>
vars &lt;-<span class="st"> </span><span class="kw">c</span>(<span class="st">&quot;year&quot;</span>, <span class="st">&quot;month&quot;</span>, <span class="st">&quot;day&quot;</span>)
<span class="kw">select</span>(flights, <span class="op">!!</span><span class="st"> </span>vars)
<span class="co">#&gt; # A tibble: 336,776 x 3</span>
<span class="co">#&gt;    year month   day</span>
<span class="co">#&gt;   &lt;int&gt; &lt;int&gt; &lt;int&gt;</span>
<span class="co">#&gt; 1  2013     1     1</span>
<span class="co">#&gt; 2  2013     1     1</span>
<span class="co">#&gt; 3  2013     1     1</span>
<span class="co">#&gt; 4  2013     1     1</span>
<span class="co">#&gt; # ... with 336,772 more rows</span></code></pre></div>
<p>This operator is very useful when you need to use dplyr within custom functions. You can learn more about it in <code>vignette(&quot;programming&quot;)</code>. However it is important to understand the semantics of the verbs you are unquoting into, that is, the values they understand. As we have just seen, <code>select()</code> supports names and positions of columns. But that won’t be the case in other verbs like <code>mutate()</code> because they have different semantics.</p>
</div>
<div id="mutating-operations" class="section level3">
<h3>Mutating operations</h3>
<p>Mutate semantics are quite different from selection semantics. Whereas <code>select()</code> expects column names or positions, <code>mutate()</code> expects <em>column vectors</em>. Let’s create a smaller tibble for clarity:</p>
<div class="sourceCode"><pre class="sourceCode r"><code class="sourceCode r">df &lt;-<span class="st"> </span><span class="kw">select</span>(flights, year<span class="op">:</span>dep_time)</code></pre></div>
<p>When we use <code>select()</code>, the bare column names stand for ther own positions in the tibble. For <code>mutate()</code> on the other hand, column symbols represent the actual column vectors stored in the tibble. Consider what happens if we give a string or a number to <code>mutate()</code>:</p>
<div class="sourceCode"><pre class="sourceCode r"><code class="sourceCode r"><span class="kw">mutate</span>(df, <span class="st">&quot;year&quot;</span>, <span class="dv">2</span>)
<span class="co">#&gt; # A tibble: 336,776 x 6</span>
<span class="co">#&gt;    year month   day dep_time `&quot;year&quot;`   `2`</span>
<span class="co">#&gt;   &lt;int&gt; &lt;int&gt; &lt;int&gt;    &lt;int&gt; &lt;chr&gt;    &lt;dbl&gt;</span>
<span class="co">#&gt; 1  2013     1     1      517 year      2.00</span>
<span class="co">#&gt; 2  2013     1     1      533 year      2.00</span>
<span class="co">#&gt; 3  2013     1     1      542 year      2.00</span>
<span class="co">#&gt; 4  2013     1     1      544 year      2.00</span>
<span class="co">#&gt; # ... with 336,772 more rows</span></code></pre></div>
<p><code>mutate()</code> gets length-1 vectors that it interprets as new columns in the data frame. These vectors are recycled so they match the number of rows. That’s why it doesn’t make sense to supply expressions like <code>&quot;year&quot; + 10</code> to <code>mutate()</code>. This amounts to adding 10 to a string! The correct expression is:</p>
<div class="sourceCode"><pre class="sourceCode r"><code class="sourceCode r"><span class="kw">mutate</span>(df, year <span class="op">+</span><span class="st"> </span><span class="dv">10</span>)
<span class="co">#&gt; # A tibble: 336,776 x 5</span>
<span class="co">#&gt;    year month   day dep_time `year + 10`</span>
<span class="co">#&gt;   &lt;int&gt; &lt;int&gt; &lt;int&gt;    &lt;int&gt;       &lt;dbl&gt;</span>
<span class="co">#&gt; 1  2013     1     1      517        2023</span>
<span class="co">#&gt; 2  2013     1     1      533        2023</span>
<span class="co">#&gt; 3  2013     1     1      542        2023</span>
<span class="co">#&gt; 4  2013     1     1      544        2023</span>
<span class="co">#&gt; # ... with 336,772 more rows</span></code></pre></div>
<p>In the same way, you can unquote values from the context if these values represent a valid column. They must be either length 1 (they then get recycled) or have the same length as the number of rows. In the following example we create a new vector that we add to the data frame:</p>
<div class="sourceCode"><pre class="sourceCode r"><code class="sourceCode r">var &lt;-<span class="st"> </span><span class="kw">seq</span>(<span class="dv">1</span>, <span class="kw">nrow</span>(df))
<span class="kw">mutate</span>(df, <span class="dt">new =</span> var)
<span class="co">#&gt; # A tibble: 336,776 x 5</span>
<span class="co">#&gt;    year month   day dep_time   new</span>
<span class="co">#&gt;   &lt;int&gt; &lt;int&gt; &lt;int&gt;    &lt;int&gt; &lt;int&gt;</span>
<span class="co">#&gt; 1  2013     1     1      517     1</span>
<span class="co">#&gt; 2  2013     1     1      533     2</span>
<span class="co">#&gt; 3  2013     1     1      542     3</span>
<span class="co">#&gt; 4  2013     1     1      544     4</span>
<span class="co">#&gt; # ... with 336,772 more rows</span></code></pre></div>
<p>A case in point is <code>group_by()</code>. While you might think it has select semantics, it actually has mutate semantics. This is quite handy as it allows to group by a modified column:</p>
<div class="sourceCode"><pre class="sourceCode r"><code class="sourceCode r"><span class="kw">group_by</span>(df, month)
<span class="co">#&gt; # A tibble: 336,776 x 4</span>
<span class="co">#&gt; # Groups:   month [12]</span>
<span class="co">#&gt;    year month   day dep_time</span>
<span class="co">#&gt;   &lt;int&gt; &lt;int&gt; &lt;int&gt;    &lt;int&gt;</span>
<span class="co">#&gt; 1  2013     1     1      517</span>
<span class="co">#&gt; 2  2013     1     1      533</span>
<span class="co">#&gt; 3  2013     1     1      542</span>
<span class="co">#&gt; 4  2013     1     1      544</span>
<span class="co">#&gt; # ... with 336,772 more rows</span>
<span class="kw">group_by</span>(df, <span class="dt">month =</span> <span class="kw">as.factor</span>(month))
<span class="co">#&gt; # A tibble: 336,776 x 4</span>
<span class="co">#&gt; # Groups:   month [12]</span>
<span class="co">#&gt;    year month    day dep_time</span>
<span class="co">#&gt;   &lt;int&gt; &lt;fctr&gt; &lt;int&gt;    &lt;int&gt;</span>
<span class="co">#&gt; 1  2013 1          1      517</span>
<span class="co">#&gt; 2  2013 1          1      533</span>
<span class="co">#&gt; 3  2013 1          1      542</span>
<span class="co">#&gt; 4  2013 1          1      544</span>
<span class="co">#&gt; # ... with 336,772 more rows</span>
<span class="kw">group_by</span>(df, <span class="dt">day_binned =</span> <span class="kw">cut</span>(day, <span class="dv">3</span>))
<span class="co">#&gt; # A tibble: 336,776 x 5</span>
<span class="co">#&gt; # Groups:   day_binned [3]</span>
<span class="co">#&gt;    year month   day dep_time day_binned</span>
<span class="co">#&gt;   &lt;int&gt; &lt;int&gt; &lt;int&gt;    &lt;int&gt; &lt;fctr&gt;    </span>
<span class="co">#&gt; 1  2013     1     1      517 (0.97,11] </span>
<span class="co">#&gt; 2  2013     1     1      533 (0.97,11] </span>
<span class="co">#&gt; 3  2013     1     1      542 (0.97,11] </span>
<span class="co">#&gt; 4  2013     1     1      544 (0.97,11] </span>
<span class="co">#&gt; # ... with 336,772 more rows</span></code></pre></div>
<p>This is why you can’t supply a column name to <code>group_by()</code>. This amounts to creating a new column containing the string recycled to the number of rows:</p>
<div class="sourceCode"><pre class="sourceCode r"><code class="sourceCode r"><span class="kw">group_by</span>(df, <span class="st">&quot;month&quot;</span>)
<span class="co">#&gt; # A tibble: 336,776 x 5</span>
<span class="co">#&gt; # Groups:   &quot;month&quot; [1]</span>
<span class="co">#&gt;    year month   day dep_time `&quot;month&quot;`</span>
<span class="co">#&gt;   &lt;int&gt; &lt;int&gt; &lt;int&gt;    &lt;int&gt; &lt;chr&gt;    </span>
<span class="co">#&gt; 1  2013     1     1      517 month    </span>
<span class="co">#&gt; 2  2013     1     1      533 month    </span>
<span class="co">#&gt; 3  2013     1     1      542 month    </span>
<span class="co">#&gt; 4  2013     1     1      544 month    </span>
<span class="co">#&gt; # ... with 336,772 more rows</span></code></pre></div>
<p>Since grouping with select semantics can be sometimes useful as well, we have added the <code>group_by_at()</code> variant. In dplyr, variants suffixed with <code>_at()</code> support selection semantics in their second argument. You just need to wrap the selection with <code>vars()</code>:</p>
<div class="sourceCode"><pre class="sourceCode r"><code class="sourceCode r"><span class="kw">group_by_at</span>(df, <span class="kw">vars</span>(year<span class="op">:</span>day))
<span class="co">#&gt; # A tibble: 336,776 x 4</span>
<span class="co">#&gt; # Groups:   year, month, day [365]</span>
<span class="co">#&gt;    year month   day dep_time</span>
<span class="co">#&gt;   &lt;int&gt; &lt;int&gt; &lt;int&gt;    &lt;int&gt;</span>
<span class="co">#&gt; 1  2013     1     1      517</span>
<span class="co">#&gt; 2  2013     1     1      533</span>
<span class="co">#&gt; 3  2013     1     1      542</span>
<span class="co">#&gt; 4  2013     1     1      544</span>
<span class="co">#&gt; # ... with 336,772 more rows</span></code></pre></div>
<p>You can read more about the <code>_at()</code> and <code>_if()</code> variants in the <code>?scoped</code> help page.</p>
</div>
</div>
<div id="piping" class="section level2">
<h2>Piping</h2>
<p>The dplyr API is functional in the sense that function calls don’t have side-effects. You must always save their results. This doesn’t lead to particularly elegant code, especially if you want to do many operations at once. You either have to do it step-by-step:</p>
<div class="sourceCode"><pre class="sourceCode r"><code class="sourceCode r">a1 &lt;-<span class="st"> </span><span class="kw">group_by</span>(flights, year, month, day)
a2 &lt;-<span class="st"> </span><span class="kw">select</span>(a1, arr_delay, dep_delay)
a3 &lt;-<span class="st"> </span><span class="kw">summarise</span>(a2,
  <span class="dt">arr =</span> <span class="kw">mean</span>(arr_delay, <span class="dt">na.rm =</span> <span class="ot">TRUE</span>),
  <span class="dt">dep =</span> <span class="kw">mean</span>(dep_delay, <span class="dt">na.rm =</span> <span class="ot">TRUE</span>))
a4 &lt;-<span class="st"> </span><span class="kw">filter</span>(a3, arr <span class="op">&gt;</span><span class="st"> </span><span class="dv">30</span> <span class="op">|</span><span class="st"> </span>dep <span class="op">&gt;</span><span class="st"> </span><span class="dv">30</span>)</code></pre></div>
<p>Or if you don’t want to name the intermediate results, you need to wrap the function calls inside each other:</p>
<div class="sourceCode"><pre class="sourceCode r"><code class="sourceCode r"><span class="kw">filter</span>(
  <span class="kw">summarise</span>(
    <span class="kw">select</span>(
      <span class="kw">group_by</span>(flights, year, month, day),
      arr_delay, dep_delay
    ),
    <span class="dt">arr =</span> <span class="kw">mean</span>(arr_delay, <span class="dt">na.rm =</span> <span class="ot">TRUE</span>),
    <span class="dt">dep =</span> <span class="kw">mean</span>(dep_delay, <span class="dt">na.rm =</span> <span class="ot">TRUE</span>)
  ),
  arr <span class="op">&gt;</span><span class="st"> </span><span class="dv">30</span> <span class="op">|</span><span class="st"> </span>dep <span class="op">&gt;</span><span class="st"> </span><span class="dv">30</span>
)
<span class="co">#&gt; Adding missing grouping variables: `year`, `month`, `day`</span>
<span class="co">#&gt; # A tibble: 49 x 5</span>
<span class="co">#&gt; # Groups:   year, month [11]</span>
<span class="co">#&gt;    year month   day   arr   dep</span>
<span class="co">#&gt;   &lt;int&gt; &lt;int&gt; &lt;int&gt; &lt;dbl&gt; &lt;dbl&gt;</span>
<span class="co">#&gt; 1  2013     1    16  34.2  24.6</span>
<span class="co">#&gt; 2  2013     1    31  32.6  28.7</span>
<span class="co">#&gt; 3  2013     2    11  36.3  39.1</span>
<span class="co">#&gt; 4  2013     2    27  31.3  37.8</span>
<span class="co">#&gt; # ... with 45 more rows</span></code></pre></div>
<p>This is difficult to read because the order of the operations is from inside to out. Thus, the arguments are a long way away from the function. To get around this problem, dplyr provides the <code>%&gt;%</code> operator from magrittr. <code>x %&gt;% f(y)</code> turns into <code>f(x, y)</code> so you can use it to rewrite multiple operations that you can read left-to-right, top-to-bottom:</p>
<div class="sourceCode"><pre class="sourceCode r"><code class="sourceCode r">flights <span class="op">%&gt;%</span>
<span class="st">  </span><span class="kw">group_by</span>(year, month, day) <span class="op">%&gt;%</span>
<span class="st">  </span><span class="kw">select</span>(arr_delay, dep_delay) <span class="op">%&gt;%</span>
<span class="st">  </span><span class="kw">summarise</span>(
    <span class="dt">arr =</span> <span class="kw">mean</span>(arr_delay, <span class="dt">na.rm =</span> <span class="ot">TRUE</span>),
    <span class="dt">dep =</span> <span class="kw">mean</span>(dep_delay, <span class="dt">na.rm =</span> <span class="ot">TRUE</span>)
  ) <span class="op">%&gt;%</span>
<span class="st">  </span><span class="kw">filter</span>(arr <span class="op">&gt;</span><span class="st"> </span><span class="dv">30</span> <span class="op">|</span><span class="st"> </span>dep <span class="op">&gt;</span><span class="st"> </span><span class="dv">30</span>)</code></pre></div>
</div>
<div id="other-data-sources" class="section level2">
<h2>Other data sources</h2>
<p>As well as data frames, dplyr works with data that is stored in other ways, like data tables, databases and multidimensional arrays.</p>
<div id="data-table" class="section level3">
<h3>Data table</h3>
<p>dplyr also provides <a href="http://datatable.r-forge.r-project.org/">data table</a> methods for all verbs through <a href="http://github.com/hadley/dtplyr">dtplyr</a>. If you’re using data.tables already this lets you to use dplyr syntax for data manipulation, and data.table for everything else.</p>
<p>For multiple operations, data.table can be faster because you usually use it with multiple verbs simultaneously. For example, with data table you can do a mutate and a select in a single step. It’s smart enough to know that there’s no point in computing the new variable for rows you’re about to throw away.</p>
<p>The advantages of using dplyr with data tables are:</p>
<ul>
<li><p>For common data manipulation tasks, it insulates you from the reference semantics of data.tables, and protects you from accidentally modifying your data.</p></li>
<li><p>Instead of one complex method built on the subscripting operator (<code>[</code>), it provides many simple methods.</p></li>
</ul>
</div>
<div id="databases" class="section level3">
<h3>Databases</h3>
<p>dplyr also allows you to use the same verbs with a remote database. It takes care of generating the SQL for you so that you can avoid the cognitive challenge of constantly switching between languages. To use these capabilities, you’ll need to install the dbplyr package and then read <code>vignette(&quot;dbplyr&quot;)</code> for the details.</p>
</div>
<div id="multidimensional-arrays-cubes" class="section level3">
<h3>Multidimensional arrays / cubes</h3>
<p><code>tbl_cube()</code> provides an experimental interface to multidimensional arrays or data cubes. If you’re using this form of data in R, please get in touch so I can better understand your needs.</p>
</div>
</div>
<div id="comparisons" class="section level2">
<h2>Comparisons</h2>
<p>Compared to all existing options, dplyr:</p>
<ul>
<li><p>abstracts away how your data is stored, so that you can work with data frames, data tables and remote databases using the same set of functions. This lets you focus on what you want to achieve, not on the logistics of data storage.</p></li>
<li><p>provides a thoughtful default <code>print()</code> method that doesn’t automatically print pages of data to the screen (this was inspired by data table’s output).</p></li>
</ul>
<p>Compared to base functions:</p>
<ul>
<li><p>dplyr is much more consistent; functions have the same interface. So once you’ve mastered one, you can easily pick up the others</p></li>
<li><p>base functions tend to be based around vectors; dplyr is based around data frames</p></li>
</ul>
<p>Compared to plyr, dplyr:</p>
<ul>
<li><p>is much much faster</p></li>
<li><p>provides a better thought out set of joins</p></li>
<li><p>only provides tools for working with data frames (e.g. most of dplyr is equivalent to <code>ddply()</code> + various functions, <code>do()</code> is equivalent to <code>dlply()</code>)</p></li>
</ul>
<p>Compared to virtual data frame approaches:</p>
<ul>
<li><p>it doesn’t pretend that you have a data frame: if you want to run lm etc, you’ll still need to manually pull down the data</p></li>
<li><p>it doesn’t provide methods for R summary functions (e.g. <code>mean()</code>, or <code>sum()</code>)</p></li>
</ul>
</div>



<!-- 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>