Tugas Akhir Mandarel

Engine SQL

Database yang digunakan pada publikasi ini berasal dari sampel chinook .Keyika akan mengakses dan mengolah database packages yang akan digunakan yaitu DBI dan RSQLite.

install.packages(c("RSQLite", "DBI"), dependencies = TRUE)

Selanjutnya package tidyverse yang mencakup beberapa package diretrieve. Fungsi dalam suatu package dapat juga dipanggil tanpa perintah library() atau require() jika sintaks yang ditulis menyertakan nama package tempat fungsi tersebut berasal. Penyertaan ini dengan menggunakan tanda ::.

library(tidyverse)
library(RSQLite)
library(DBI)

Secara umum, koneksi terhadap database pada R dapat menggunakan sintaks berikut: DBI::dbConnect(RSQLite::SQLite(), path = ":dbname:")

chinook<-DBI::dbConnect(RSQLite::SQLite(), "C:/sqlite/chinook.db")
RSQLite::dbListTables(chinook)
##  [1] "albums"          "artists"         "customers"       "employees"      
##  [5] "genres"          "invoice_items"   "invoices"        "media_types"    
##  [9] "playlist_track"  "playlists"       "sqlite_sequence" "sqlite_stat1"   
## [13] "tracks"

Setelah melakukan dbConnect() kita dapat melakukan perintah SQL.

SELECT 
  *
FROM
  customers;
Displaying records 1 - 10
CustomerId FirstName LastName Company Address City State Country PostalCode Phone Fax Email SupportRepId
1 Luís Gonçalves Embraer - Empresa Brasileira de Aeronáutica S.A. Av. Brigadeiro Faria Lima, 2170 São José dos Campos SP Brazil 12227-000 +55 (12) 3923-5555 +55 (12) 3923-5566 luisg@embraer.com.br 3
2 Leonie Köhler NA Theodor-Heuss-Straße 34 Stuttgart NA Germany 70174 +49 0711 2842222 NA leonekohler@surfeu.de 5
3 François Tremblay NA 1498 rue Bélanger Montréal QC Canada H2G 1A7 +1 (514) 721-4711 NA ftremblay@gmail.com 3
4 Bjørn Hansen NA Ullevålsveien 14 Oslo NA Norway 0171 +47 22 44 22 22 NA bjorn.hansen@yahoo.no 4
5 František Wichterlová JetBrains s.r.o. Klanova 9/506 Prague NA Czech Republic 14700 +420 2 4172 5555 +420 2 4172 5555 frantisekw@jetbrains.com 4
6 Helena Holý NA Rilská 3174/6 Prague NA Czech Republic 14300 +420 2 4177 0449 NA hholy@gmail.com 5
7 Astrid Gruber NA Rotenturmstraße 4, 1010 Innere Stadt Vienne NA Austria 1010 +43 01 5134505 NA astrid.gruber@apple.at 5
8 Daan Peeters NA Grétrystraat 63 Brussels NA Belgium 1000 +32 02 219 03 03 NA daan_peeters@apple.be 4
9 Kara Nielsen NA Sønder Boulevard 51 Copenhagen NA Denmark 1720 +453 3331 9991 NA kara.nielsen@jubii.dk 4
10 Eduardo Martins Woodstock Discos Rua Dr. Falcão Filho, 155 São Paulo SP Brazil 01007-010 +55 (11) 3033-5446 +55 (11) 3033-4564 eduardo@woodstock.com.br 4

Setelah selesai mengolah database tersebut, fungsi dbDisconnect() untuk memutuskan hubungan pada suatu database dan ketika akan menyambungkan kembali cukup menggunakan kembali dbConnect()

dbDisconnect(chinook)

Menggunakan DPLYR

chinook<-DBI::dbConnect(RSQLite::SQLite(), "C:/sqlite/chinook.db")

RSQLite::dbListTables(chinook)
##  [1] "albums"          "artists"         "customers"       "employees"      
##  [5] "genres"          "invoice_items"   "invoices"        "media_types"    
##  [9] "playlist_track"  "playlists"       "sqlite_sequence" "sqlite_stat1"   
## [13] "tracks"
dplyr::tbl(chinook,"customers")
## # Source:   table<customers> [?? x 13]
## # Database: sqlite 3.37.0 [C:\sqlite\chinook.db]
##    CustomerId FirstName LastName  Company Address City  State Country PostalCode
##         <int> <chr>     <chr>     <chr>   <chr>   <chr> <chr> <chr>   <chr>     
##  1          1 Luís      Gonçalves Embrae~ Av. Br~ São ~ SP    Brazil  12227-000 
##  2          2 Leonie    Köhler    <NA>    Theodo~ Stut~ <NA>  Germany 70174     
##  3          3 François  Tremblay  <NA>    1498 r~ Mont~ QC    Canada  H2G 1A7   
##  4          4 Bjørn     Hansen    <NA>    Ullevå~ Oslo  <NA>  Norway  0171      
##  5          5 František Wichterl~ JetBra~ Klanov~ Prag~ <NA>  Czech ~ 14700     
##  6          6 Helena    Holý      <NA>    Rilská~ Prag~ <NA>  Czech ~ 14300     
##  7          7 Astrid    Gruber    <NA>    Rotent~ Vien~ <NA>  Austria 1010      
##  8          8 Daan      Peeters   <NA>    Grétry~ Brus~ <NA>  Belgium 1000      
##  9          9 Kara      Nielsen   <NA>    Sønder~ Cope~ <NA>  Denmark 1720      
## 10         10 Eduardo   Martins   Woodst~ Rua Dr~ São ~ SP    Brazil  01007-010 
## # ... with more rows, and 4 more variables: Phone <chr>, Fax <chr>,
## #   Email <chr>, SupportRepId <int>
customers <- dplyr::tbl(chinook,"customers")
class(customers)
## [1] "tbl_SQLiteConnection" "tbl_dbi"              "tbl_sql"             
## [4] "tbl_lazy"             "tbl"
customers
## # Source:   table<customers> [?? x 13]
## # Database: sqlite 3.37.0 [C:\sqlite\chinook.db]
##    CustomerId FirstName LastName  Company Address City  State Country PostalCode
##         <int> <chr>     <chr>     <chr>   <chr>   <chr> <chr> <chr>   <chr>     
##  1          1 Luís      Gonçalves Embrae~ Av. Br~ São ~ SP    Brazil  12227-000 
##  2          2 Leonie    Köhler    <NA>    Theodo~ Stut~ <NA>  Germany 70174     
##  3          3 François  Tremblay  <NA>    1498 r~ Mont~ QC    Canada  H2G 1A7   
##  4          4 Bjørn     Hansen    <NA>    Ullevå~ Oslo  <NA>  Norway  0171      
##  5          5 František Wichterl~ JetBra~ Klanov~ Prag~ <NA>  Czech ~ 14700     
##  6          6 Helena    Holý      <NA>    Rilská~ Prag~ <NA>  Czech ~ 14300     
##  7          7 Astrid    Gruber    <NA>    Rotent~ Vien~ <NA>  Austria 1010      
##  8          8 Daan      Peeters   <NA>    Grétry~ Brus~ <NA>  Belgium 1000      
##  9          9 Kara      Nielsen   <NA>    Sønder~ Cope~ <NA>  Denmark 1720      
## 10         10 Eduardo   Martins   Woodst~ Rua Dr~ São ~ SP    Brazil  01007-010 
## # ... with more rows, and 4 more variables: Phone <chr>, Fax <chr>,
## #   Email <chr>, SupportRepId <int>
query <- customers %>% select(-Company)
query
## # Source:   lazy query [?? x 12]
## # Database: sqlite 3.37.0 [C:\sqlite\chinook.db]
##    CustomerId FirstName LastName    Address City  State Country PostalCode Phone
##         <int> <chr>     <chr>       <chr>   <chr> <chr> <chr>   <chr>      <chr>
##  1          1 Luís      Gonçalves   Av. Br~ São ~ SP    Brazil  12227-000  +55 ~
##  2          2 Leonie    Köhler      Theodo~ Stut~ <NA>  Germany 70174      +49 ~
##  3          3 François  Tremblay    1498 r~ Mont~ QC    Canada  H2G 1A7    +1 (~
##  4          4 Bjørn     Hansen      Ullevå~ Oslo  <NA>  Norway  0171       +47 ~
##  5          5 František Wichterlová Klanov~ Prag~ <NA>  Czech ~ 14700      +420~
##  6          6 Helena    Holý        Rilská~ Prag~ <NA>  Czech ~ 14300      +420~
##  7          7 Astrid    Gruber      Rotent~ Vien~ <NA>  Austria 1010       +43 ~
##  8          8 Daan      Peeters     Grétry~ Brus~ <NA>  Belgium 1000       +32 ~
##  9          9 Kara      Nielsen     Sønder~ Cope~ <NA>  Denmark 1720       +453~
## 10         10 Eduardo   Martins     Rua Dr~ São ~ SP    Brazil  01007-010  +55 ~
## # ... with more rows, and 3 more variables: Fax <chr>, Email <chr>,
## #   SupportRepId <int>
dplyr::show_query(query)
## <SQL>
## SELECT `CustomerId`, `FirstName`, `LastName`, `Address`, `City`, `State`, `Country`, `PostalCode`, `Phone`, `Fax`, `Email`, `SupportRepId`
## FROM `customers`

Data Wrangling

Dataset yang digunakan adalah storms yang tersedia pada package default R datasets.

library(datasets)
library(help = "datasets")
morley
##     Expt Run Speed
## 001    1   1   850
## 002    1   2   740
## 003    1   3   900
## 004    1   4  1070
## 005    1   5   930
## 006    1   6   850
## 007    1   7   950
## 008    1   8   980
## 009    1   9   980
## 010    1  10   880
## 011    1  11  1000
## 012    1  12   980
## 013    1  13   930
## 014    1  14   650
## 015    1  15   760
## 016    1  16   810
## 017    1  17  1000
## 018    1  18  1000
## 019    1  19   960
## 020    1  20   960
## 021    2   1   960
## 022    2   2   940
## 023    2   3   960
## 024    2   4   940
## 025    2   5   880
## 026    2   6   800
## 027    2   7   850
## 028    2   8   880
## 029    2   9   900
## 030    2  10   840
## 031    2  11   830
## 032    2  12   790
## 033    2  13   810
## 034    2  14   880
## 035    2  15   880
## 036    2  16   830
## 037    2  17   800
## 038    2  18   790
## 039    2  19   760
## 040    2  20   800
## 041    3   1   880
## 042    3   2   880
## 043    3   3   880
## 044    3   4   860
## 045    3   5   720
## 046    3   6   720
## 047    3   7   620
## 048    3   8   860
## 049    3   9   970
## 050    3  10   950
## 051    3  11   880
## 052    3  12   910
## 053    3  13   850
## 054    3  14   870
## 055    3  15   840
## 056    3  16   840
## 057    3  17   850
## 058    3  18   840
## 059    3  19   840
## 060    3  20   840
## 061    4   1   890
## 062    4   2   810
## 063    4   3   810
## 064    4   4   820
## 065    4   5   800
## 066    4   6   770
## 067    4   7   760
## 068    4   8   740
## 069    4   9   750
## 070    4  10   760
## 071    4  11   910
## 072    4  12   920
## 073    4  13   890
## 074    4  14   860
## 075    4  15   880
## 076    4  16   720
## 077    4  17   840
## 078    4  18   850
## 079    4  19   850
## 080    4  20   780
## 081    5   1   890
## 082    5   2   840
## 083    5   3   780
## 084    5   4   810
## 085    5   5   760
## 086    5   6   810
## 087    5   7   790
## 088    5   8   810
## 089    5   9   820
## 090    5  10   850
## 091    5  11   870
## 092    5  12   870
## 093    5  13   810
## 094    5  14   740
## 095    5  15   810
## 096    5  16   940
## 097    5  17   950
## 098    5  18   800
## 099    5  19   810
## 100    5  20   870

Morley adalah Sebuah data klasik Michelson (tapi tidak yang satu ini dengan Morley) pada pengukuran yang dilakukan pada tahun 1879 pada kecepatan cahaya. Data terdiri dari lima percobaan, masing-masing terdiri dari 20 'run' berturut-turut. Responsnya adalah kecepatan pengukuran cahaya, dengan kode yang sesuai (km/dtk, dengan 299000 dikurangi).Suatu data frame dengan 100 pengamatan pada 3 variabel. Untuk mengetahui informasi terkait dataset dapat menggunakan sintaks ?dan meletakannya sebelum nama dataset .

?morley
View(morley )

Dataset tersebut akan dilakukan perintah arrange , mutate ,filter,select, dan summarise.

morley %>% select(Expt,Run,Speed)
##     Expt Run Speed
## 001    1   1   850
## 002    1   2   740
## 003    1   3   900
## 004    1   4  1070
## 005    1   5   930
## 006    1   6   850
## 007    1   7   950
## 008    1   8   980
## 009    1   9   980
## 010    1  10   880
## 011    1  11  1000
## 012    1  12   980
## 013    1  13   930
## 014    1  14   650
## 015    1  15   760
## 016    1  16   810
## 017    1  17  1000
## 018    1  18  1000
## 019    1  19   960
## 020    1  20   960
## 021    2   1   960
## 022    2   2   940
## 023    2   3   960
## 024    2   4   940
## 025    2   5   880
## 026    2   6   800
## 027    2   7   850
## 028    2   8   880
## 029    2   9   900
## 030    2  10   840
## 031    2  11   830
## 032    2  12   790
## 033    2  13   810
## 034    2  14   880
## 035    2  15   880
## 036    2  16   830
## 037    2  17   800
## 038    2  18   790
## 039    2  19   760
## 040    2  20   800
## 041    3   1   880
## 042    3   2   880
## 043    3   3   880
## 044    3   4   860
## 045    3   5   720
## 046    3   6   720
## 047    3   7   620
## 048    3   8   860
## 049    3   9   970
## 050    3  10   950
## 051    3  11   880
## 052    3  12   910
## 053    3  13   850
## 054    3  14   870
## 055    3  15   840
## 056    3  16   840
## 057    3  17   850
## 058    3  18   840
## 059    3  19   840
## 060    3  20   840
## 061    4   1   890
## 062    4   2   810
## 063    4   3   810
## 064    4   4   820
## 065    4   5   800
## 066    4   6   770
## 067    4   7   760
## 068    4   8   740
## 069    4   9   750
## 070    4  10   760
## 071    4  11   910
## 072    4  12   920
## 073    4  13   890
## 074    4  14   860
## 075    4  15   880
## 076    4  16   720
## 077    4  17   840
## 078    4  18   850
## 079    4  19   850
## 080    4  20   780
## 081    5   1   890
## 082    5   2   840
## 083    5   3   780
## 084    5   4   810
## 085    5   5   760
## 086    5   6   810
## 087    5   7   790
## 088    5   8   810
## 089    5   9   820
## 090    5  10   850
## 091    5  11   870
## 092    5  12   870
## 093    5  13   810
## 094    5  14   740
## 095    5  15   810
## 096    5  16   940
## 097    5  17   950
## 098    5  18   800
## 099    5  19   810
## 100    5  20   870
morley %>% arrange(desc(Run))
##     Expt Run Speed
## 020    1  20   960
## 040    2  20   800
## 060    3  20   840
## 080    4  20   780
## 100    5  20   870
## 019    1  19   960
## 039    2  19   760
## 059    3  19   840
## 079    4  19   850
## 099    5  19   810
## 018    1  18  1000
## 038    2  18   790
## 058    3  18   840
## 078    4  18   850
## 098    5  18   800
## 017    1  17  1000
## 037    2  17   800
## 057    3  17   850
## 077    4  17   840
## 097    5  17   950
## 016    1  16   810
## 036    2  16   830
## 056    3  16   840
## 076    4  16   720
## 096    5  16   940
## 015    1  15   760
## 035    2  15   880
## 055    3  15   840
## 075    4  15   880
## 095    5  15   810
## 014    1  14   650
## 034    2  14   880
## 054    3  14   870
## 074    4  14   860
## 094    5  14   740
## 013    1  13   930
## 033    2  13   810
## 053    3  13   850
## 073    4  13   890
## 093    5  13   810
## 012    1  12   980
## 032    2  12   790
## 052    3  12   910
## 072    4  12   920
## 092    5  12   870
## 011    1  11  1000
## 031    2  11   830
## 051    3  11   880
## 071    4  11   910
## 091    5  11   870
## 010    1  10   880
## 030    2  10   840
## 050    3  10   950
## 070    4  10   760
## 090    5  10   850
## 009    1   9   980
## 029    2   9   900
## 049    3   9   970
## 069    4   9   750
## 089    5   9   820
## 008    1   8   980
## 028    2   8   880
## 048    3   8   860
## 068    4   8   740
## 088    5   8   810
## 007    1   7   950
## 027    2   7   850
## 047    3   7   620
## 067    4   7   760
## 087    5   7   790
## 006    1   6   850
## 026    2   6   800
## 046    3   6   720
## 066    4   6   770
## 086    5   6   810
## 005    1   5   930
## 025    2   5   880
## 045    3   5   720
## 065    4   5   800
## 085    5   5   760
## 004    1   4  1070
## 024    2   4   940
## 044    3   4   860
## 064    4   4   820
## 084    5   4   810
## 003    1   3   900
## 023    2   3   960
## 043    3   3   880
## 063    4   3   810
## 083    5   3   780
## 002    1   2   740
## 022    2   2   940
## 042    3   2   880
## 062    4   2   810
## 082    5   2   840
## 001    1   1   850
## 021    2   1   960
## 041    3   1   880
## 061    4   1   890
## 081    5   1   890
morley %>% filter(Speed>795)
##     Expt Run Speed
## 001    1   1   850
## 003    1   3   900
## 004    1   4  1070
## 005    1   5   930
## 006    1   6   850
## 007    1   7   950
## 008    1   8   980
## 009    1   9   980
## 010    1  10   880
## 011    1  11  1000
## 012    1  12   980
## 013    1  13   930
## 016    1  16   810
## 017    1  17  1000
## 018    1  18  1000
## 019    1  19   960
## 020    1  20   960
## 021    2   1   960
## 022    2   2   940
## 023    2   3   960
## 024    2   4   940
## 025    2   5   880
## 026    2   6   800
## 027    2   7   850
## 028    2   8   880
## 029    2   9   900
## 030    2  10   840
## 031    2  11   830
## 033    2  13   810
## 034    2  14   880
## 035    2  15   880
## 036    2  16   830
## 037    2  17   800
## 040    2  20   800
## 041    3   1   880
## 042    3   2   880
## 043    3   3   880
## 044    3   4   860
## 048    3   8   860
## 049    3   9   970
## 050    3  10   950
## 051    3  11   880
## 052    3  12   910
## 053    3  13   850
## 054    3  14   870
## 055    3  15   840
## 056    3  16   840
## 057    3  17   850
## 058    3  18   840
## 059    3  19   840
## 060    3  20   840
## 061    4   1   890
## 062    4   2   810
## 063    4   3   810
## 064    4   4   820
## 065    4   5   800
## 071    4  11   910
## 072    4  12   920
## 073    4  13   890
## 074    4  14   860
## 075    4  15   880
## 077    4  17   840
## 078    4  18   850
## 079    4  19   850
## 081    5   1   890
## 082    5   2   840
## 084    5   4   810
## 086    5   6   810
## 088    5   8   810
## 089    5   9   820
## 090    5  10   850
## 091    5  11   870
## 092    5  12   870
## 093    5  13   810
## 095    5  15   810
## 096    5  16   940
## 097    5  17   950
## 098    5  18   800
## 099    5  19   810
## 100    5  20   870
morley  %>% mutate(max=Speed*Run)
##     Expt Run Speed   max
## 001    1   1   850   850
## 002    1   2   740  1480
## 003    1   3   900  2700
## 004    1   4  1070  4280
## 005    1   5   930  4650
## 006    1   6   850  5100
## 007    1   7   950  6650
## 008    1   8   980  7840
## 009    1   9   980  8820
## 010    1  10   880  8800
## 011    1  11  1000 11000
## 012    1  12   980 11760
## 013    1  13   930 12090
## 014    1  14   650  9100
## 015    1  15   760 11400
## 016    1  16   810 12960
## 017    1  17  1000 17000
## 018    1  18  1000 18000
## 019    1  19   960 18240
## 020    1  20   960 19200
## 021    2   1   960   960
## 022    2   2   940  1880
## 023    2   3   960  2880
## 024    2   4   940  3760
## 025    2   5   880  4400
## 026    2   6   800  4800
## 027    2   7   850  5950
## 028    2   8   880  7040
## 029    2   9   900  8100
## 030    2  10   840  8400
## 031    2  11   830  9130
## 032    2  12   790  9480
## 033    2  13   810 10530
## 034    2  14   880 12320
## 035    2  15   880 13200
## 036    2  16   830 13280
## 037    2  17   800 13600
## 038    2  18   790 14220
## 039    2  19   760 14440
## 040    2  20   800 16000
## 041    3   1   880   880
## 042    3   2   880  1760
## 043    3   3   880  2640
## 044    3   4   860  3440
## 045    3   5   720  3600
## 046    3   6   720  4320
## 047    3   7   620  4340
## 048    3   8   860  6880
## 049    3   9   970  8730
## 050    3  10   950  9500
## 051    3  11   880  9680
## 052    3  12   910 10920
## 053    3  13   850 11050
## 054    3  14   870 12180
## 055    3  15   840 12600
## 056    3  16   840 13440
## 057    3  17   850 14450
## 058    3  18   840 15120
## 059    3  19   840 15960
## 060    3  20   840 16800
## 061    4   1   890   890
## 062    4   2   810  1620
## 063    4   3   810  2430
## 064    4   4   820  3280
## 065    4   5   800  4000
## 066    4   6   770  4620
## 067    4   7   760  5320
## 068    4   8   740  5920
## 069    4   9   750  6750
## 070    4  10   760  7600
## 071    4  11   910 10010
## 072    4  12   920 11040
## 073    4  13   890 11570
## 074    4  14   860 12040
## 075    4  15   880 13200
## 076    4  16   720 11520
## 077    4  17   840 14280
## 078    4  18   850 15300
## 079    4  19   850 16150
## 080    4  20   780 15600
## 081    5   1   890   890
## 082    5   2   840  1680
## 083    5   3   780  2340
## 084    5   4   810  3240
## 085    5   5   760  3800
## 086    5   6   810  4860
## 087    5   7   790  5530
## 088    5   8   810  6480
## 089    5   9   820  7380
## 090    5  10   850  8500
## 091    5  11   870  9570
## 092    5  12   870 10440
## 093    5  13   810 10530
## 094    5  14   740 10360
## 095    5  15   810 12150
## 096    5  16   940 15040
## 097    5  17   950 16150
## 098    5  18   800 14400
## 099    5  19   810 15390
## 100    5  20   870 17400
morley %>% group_by(Speed)%>%summarise(sum=sum(Run))
## # A tibble: 30 x 2
##    Speed   sum
##    <int> <int>
##  1   620     7
##  2   650    14
##  3   720    27
##  4   740    24
##  5   750     9
##  6   760    56
##  7   770     6
##  8   780    23
##  9   790    37
## 10   800    66
## # ... with 20 more rows
morley 
##     Expt Run Speed
## 001    1   1   850
## 002    1   2   740
## 003    1   3   900
## 004    1   4  1070
## 005    1   5   930
## 006    1   6   850
## 007    1   7   950
## 008    1   8   980
## 009    1   9   980
## 010    1  10   880
## 011    1  11  1000
## 012    1  12   980
## 013    1  13   930
## 014    1  14   650
## 015    1  15   760
## 016    1  16   810
## 017    1  17  1000
## 018    1  18  1000
## 019    1  19   960
## 020    1  20   960
## 021    2   1   960
## 022    2   2   940
## 023    2   3   960
## 024    2   4   940
## 025    2   5   880
## 026    2   6   800
## 027    2   7   850
## 028    2   8   880
## 029    2   9   900
## 030    2  10   840
## 031    2  11   830
## 032    2  12   790
## 033    2  13   810
## 034    2  14   880
## 035    2  15   880
## 036    2  16   830
## 037    2  17   800
## 038    2  18   790
## 039    2  19   760
## 040    2  20   800
## 041    3   1   880
## 042    3   2   880
## 043    3   3   880
## 044    3   4   860
## 045    3   5   720
## 046    3   6   720
## 047    3   7   620
## 048    3   8   860
## 049    3   9   970
## 050    3  10   950
## 051    3  11   880
## 052    3  12   910
## 053    3  13   850
## 054    3  14   870
## 055    3  15   840
## 056    3  16   840
## 057    3  17   850
## 058    3  18   840
## 059    3  19   840
## 060    3  20   840
## 061    4   1   890
## 062    4   2   810
## 063    4   3   810
## 064    4   4   820
## 065    4   5   800
## 066    4   6   770
## 067    4   7   760
## 068    4   8   740
## 069    4   9   750
## 070    4  10   760
## 071    4  11   910
## 072    4  12   920
## 073    4  13   890
## 074    4  14   860
## 075    4  15   880
## 076    4  16   720
## 077    4  17   840
## 078    4  18   850
## 079    4  19   850
## 080    4  20   780
## 081    5   1   890
## 082    5   2   840
## 083    5   3   780
## 084    5   4   810
## 085    5   5   760
## 086    5   6   810
## 087    5   7   790
## 088    5   8   810
## 089    5   9   820
## 090    5  10   850
## 091    5  11   870
## 092    5  12   870
## 093    5  13   810
## 094    5  14   740
## 095    5  15   810
## 096    5  16   940
## 097    5  17   950
## 098    5  18   800
## 099    5  19   810
## 100    5  20   870

Melakukan kelima perintah bersamaan

morley %>% select(Expt,Run,Speed) %>% arrange(desc(Run))%>% filter(Speed>795)%>% mutate(max=Speed*Run)%>% group_by(Speed)%>%summarise(sum=sum(Run))
## # A tibble: 21 x 2
##    Speed   sum
##    <int> <int>
##  1   800    66
##  2   810    99
##  3   820    13
##  4   830    27
##  5   840   117
##  6   850    91
##  7   860    26
##  8   870    57
##  9   880    84
## 10   890    15
## # ... with 11 more rows