1 Objektif

Ini adalah catatan untuk memandu secara singkat dalam melakukan visualisasi data untuk kebutuhan eksplorasi data atau publikasi menggunakan R dan beberapa package yang menjadi bagian dari package tidyverse. Tujuan dari tutorial ini adalah untuk membantu Anda memahami operator %>%.

2 Cakupan Materi

Materi yang akan dibahas:

  • Operator %>%

3 Prasyarat

Untuk dapat mengikuti tutorial ini dengan baik, ada beberapa hal yang perlu dipersiapkan oleh peserta. Yaitu:

  1. Koneksi internet yang baik

  2. Menginstall software

    1. R program https://cran.r-project.org/

    2. RStudio https://www.rstudio.com/products/rstudio/download/

  3. Data & Script yang dapat diperoleh dari repository ini dan pada database yang disediakan pembicara.

  4. Package R yang dibutuhkan: tidyr, dplyr, ggplot2 (atau tidyverse)

4 Install dan Load Packages

Jalankan perintah di bawah ini untuk install package (jika Anda belum pernah install) yang akan digunakan untuk dapat mengikuti tutorial ini sampai selesai.

install.packages(c("tidyr", "dplyr", "ggplot2"))
# atau                                                                         
install.packages(c("tidyverse"))                         

Panggil package yang sudah Anda install dengan fungsi library().

# Panggil package yang sudah terisntall
library(tidyr)
library(dplyr)
library(ggplot2)

# atau cukup memanggil
# library(tidyverse)
# untuk memanggil package di atas

5 Operator Pipes (%>%)

Sebelum kita mulai, kita akan membahas terlebih dahulu sebuah operator yang sangat berguna dan banyak digunakan oleh pengguna R yang menggunakan tidyverse. Operator in adalah Pipes (%>%). Perhatikan contoh di bawah ini.

mean(iris$Sepal.Length)
[1] 5.843333

atau

iris$Sepal.Length %>% mean()
[1] 5.843333

Kedua fungsi tersebut melakukan hal yang sama dan menhasilkan nilai yang sama.

output <- fun_n(...(fun3(fun2(fun1(dataframe, arg1), arg2), arg3), ...), arg_n)

Jika Anda diminta untuk mempelajari script seperti ini saya cukup yakin bahwa Anda akan merasa kesulitan untuk mengetahui proses yang akan dilakukan oleh script tersebut. Script di atas masih sederhana, hanya ada tiga fungsi. Bayangkan jika banyak fungsi yang digunakan secara berurutan, bentuk di atas akan menjadi:

Dengan konsep tidyverse, kita dapat menggunakan operator Pipes %>% agar lebih mudah dalam memahami script karena script tersebut menunjukkan urutan. Perhatikan contoh di bawah ini.

5.1 Penjelasan Operator %>%

Saya akan coba menjelaskan lebih dalam untuk lebih memahami oprator %>%.

Misalkan f(a, x) adalah sebuah fungsi di R dengan argumen a dan x. kemudian fungsi g(b, z) adalah fungsi lain di R dengan argumen b dan z. Dengan menggunakan operator %>% kita dapat menuliskannya sebagai berikut.

# fungsi f(a, x)
f(a, x) # atau
a %>% f(x)

# fungsi g(b, z)
g(b, z) # atau
b %>% g(z)

Dari kedua contoh di atas, dapat dilihat bahwa a adalah argumen pertama untuk fungsi f() dan b adalah argumen pertama untuk fungsi g(). Operator %>% “menyampaikan” objek a sebagai nilai untuk mengisi argumen pertama pada fungsi f(). Perhatikan ilustrasi di bawah ini.

Ilustrasi Pipes 1

Ilustrasi Pipes 1

Misalkan objek a menjadi argumen pertama fungsi f() dengan a %>% f(x). Kemudia hasil dari a %>% f(x) dijadikan argumen pertama dari fungsi g(). Dengan kata lain b <- a %>% f(x) sehingga b %>% g(z). Hal ini dapat dilakukan secara berurutan dengan operator %>% sebagai berikut.

a %>%
    f(x) %>%
    g(z)

Ilustrasi Pipes 2

Ilustrasi Pipes 2

“Fungsi f() diterapkan terhadap objek a sebagai argumen pertama dan x sebagai argumen kedua dari fungsi f() yang kemudian hasilnya digunakan sebagai argumen pertama pada fungsi g() dengan z sebagai argumen kedua.”

output <- fun_n(...(fun3(fun2(fun1(dataframe, arg1), arg2), arg3), ...), arg_n)

Jika script di atas dituliskan dengan menggunakan operator %>% akan seperti berikut ini.

output <- dataframe %>% 
  fun1(arg1) %>% 
  fun2(arg2) %>% 
  fun3(arg3) %>% 
  ... %>% 
  fun_n(arg_n)

——————- Semoga Bermanfaat ————————-

Contact me: Aep Hidayatuloh

Email: GitHub: https://github.com/aephidayatuloh

LS0tDQp0aXRsZTogIk9wZXJhdG9yIFBpcGVzIGAlPiVgIg0KYXV0aG9yOiAiQWVwIEhpZGF5YXR1bG9oIg0KZGF0ZTogIlVwZGF0ZSBUZXJha2hpcjogMjAxOS0wNS0xOSINCm91dHB1dDogDQogIGh0bWxfbm90ZWJvb2s6DQogICAgbnVtYmVyX3NlY3Rpb25zOiB5ZXMNCiAgICB0aGVtZTogc3BhY2VsYWINCiAgICBkZl9wcmludDogcGFnZWQNCiAgICB0b2M6IHllcw0KICAgIHRvY19kZXB0aDogNA0KICAgIHRvY19mbG9hdDogdHJ1ZQ0KICBodG1sX2RvY3VtZW50Og0KICAgIG51bWJlcl9zZWN0aW9uczogeWVzDQogICAgdGhlbWU6IHNwYWNlbGFiDQogICAgZGZfcHJpbnQ6IHBhZ2VkDQogICAgdG9jOiB5ZXMNCiAgICB0b2NfZGVwdGg6ICc0Jw0KICAgIHRvY19mbG9hdDogdHJ1ZQ0KLS0tDQoNCjxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+DQoNCmJvZHl7IC8qIE5vcm1hbCAgKi8NCiAgICAgIGZvbnQtc2l6ZTogMTJweDsNCiAgfQ0KdGQgeyAgLyogVGFibGUgICovDQogIGZvbnQtc2l6ZTogMTJweDsNCn0NCmgxLnRpdGxlIHsNCiAgZm9udC1zaXplOiAzOHB4Ow0KICBjb2xvcjogbGlnaHRibHVlOw0KICBmb250LXdlaWdodDogYm9sZDsNCn0NCmgxIHsgLyogSGVhZGVyIDEgKi8NCiAgZm9udC1zaXplOiAyNHB4Ow0KICBjb2xvcjogRGFya0JsdWU7DQp9DQpoMiB7IC8qIEhlYWRlciAyICovDQogIGZvbnQtc2l6ZTogMjBweDsNCiAgY29sb3I6IERhcmtCbHVlOw0KfQ0KaDMgeyAvKiBIZWFkZXIgMyAqLw0KICBmb250LXNpemU6IDE2cHg7DQojICBmb250LWZhbWlseTogIlRpbWVzIE5ldyBSb21hbiIsIFRpbWVzLCBzZXJpZjsNCiAgY29sb3I6IERhcmtCbHVlOw0KfQ0KaDQgeyAvKiBIZWFkZXIgNCAqLw0KICBmb250LXNpemU6IDE0cHg7DQogIGNvbG9yOiBEYXJrQmx1ZTsNCn0NCmNvZGUucnsgLyogQ29kZSBibG9jayAqLw0KICAgIGZvbnQtc2l6ZTogMTJweDsNCn0NCnByZSB7IC8qIENvZGUgYmxvY2sgLSBkZXRlcm1pbmVzIGNvZGUgc3BhY2luZyBiZXR3ZWVuIGxpbmVzICovDQogICAgZm9udC1zaXplOiAxMnB4Ow0KfQ0KPC9zdHlsZT4NCg0KDQpgYGB7ciBzZXR1cCwgaW5jbHVkZT1GQUxTRX0NCiNrbml0cjo6b3B0c19jaHVuayRzZXQoZWNobyA9IFRSVUUpDQprbml0cjo6b3B0c19jaHVuayRzZXQoZWNobz1UUlVFLCBmaWcuaGVpZ2h0PTMuNSwgZmlnLndpZHRoPTkuMiwgcmVzdWx0cz0naG9sZCcsIHdhcm5pbmc9RkFMU0UsIGZpZy5zaG93PSdob2xkJywgbWVzc2FnZT1GQUxTRSkgDQpvcHRpb25zKHNjaXBlbiA9IDk5KQ0KYGBgDQoNCiMgT2JqZWt0aWYNCg0KSW5pIGFkYWxhaCBjYXRhdGFuIHVudHVrIG1lbWFuZHUgc2VjYXJhIHNpbmdrYXQgZGFsYW0gbWVsYWt1a2FuIHZpc3VhbGlzYXNpIGRhdGEgdW50dWsga2VidXR1aGFuIGVrc3Bsb3Jhc2kgZGF0YSBhdGF1IHB1Ymxpa2FzaSBtZW5nZ3VuYWthbiBSIGRhbiBiZWJlcmFwYSBwYWNrYWdlIHlhbmcgbWVuamFkaSBiYWdpYW4gZGFyaSBwYWNrYWdlIGB0aWR5dmVyc2VgLiBUdWp1YW4gZGFyaSB0dXRvcmlhbCBpbmkgYWRhbGFoIHVudHVrIG1lbWJhbnR1IEFuZGEgbWVtYWhhbWkgb3BlcmF0b3IgYCU+JWAuIA0KDQojIENha3VwYW4gTWF0ZXJpDQpNYXRlcmkgeWFuZyBha2FuIGRpYmFoYXM6DQoNCiogT3BlcmF0b3IgYCU+JWANCg0KIyBQcmFzeWFyYXQNCg0KVW50dWsgZGFwYXQgbWVuZ2lrdXRpIHR1dG9yaWFsIGluaSBkZW5nYW4gYmFpaywgYWRhIGJlYmVyYXBhIGhhbCB5YW5nIHBlcmx1IGRpcGVyc2lhcGthbiBvbGVoIHBlc2VydGEuIFlhaXR1Og0KDQoxLiBLb25la3NpIGludGVybmV0IHlhbmcgYmFpaw0KDQoyLiBNZW5naW5zdGFsbCBzb2Z0d2FyZQ0KDQogICAgYS4gUiBwcm9ncmFtIDxodHRwczovL2NyYW4uci1wcm9qZWN0Lm9yZy8+DQoNCiAgICBiLiBSU3R1ZGlvIDxodHRwczovL3d3dy5yc3R1ZGlvLmNvbS9wcm9kdWN0cy9yc3R1ZGlvL2Rvd25sb2FkLz4NCg0KMy4gRGF0YSAmIFNjcmlwdCB5YW5nIGRhcGF0IGRpcGVyb2xlaCBkYXJpIFtyZXBvc2l0b3J5IGluaV0oaHR0cHM6Ly9naXRodWIuY29tL2FlcGhpZGF5YXR1bG9oL2Vrc3Bsb3Jhc2ktZGF0YSkgZGFuIHBhZGEgZGF0YWJhc2UgeWFuZyBkaXNlZGlha2FuIHBlbWJpY2FyYS4NCg0KNC4gUGFja2FnZSBSIHlhbmcgZGlidXR1aGthbjogYHRpZHlyYCwgYGRwbHlyYCwgYGdncGxvdDJgIChhdGF1IGB0aWR5dmVyc2VgKQ0KDQojIEluc3RhbGwgZGFuIExvYWQgUGFja2FnZXMNCg0KSmFsYW5rYW4gcGVyaW50YWggZGkgYmF3YWggaW5pIHVudHVrIGluc3RhbGwgcGFja2FnZSAoKipqaWthIEFuZGEgYmVsdW0gcGVybmFoIGluc3RhbGwqKikgeWFuZyBha2FuIGRpZ3VuYWthbiB1bnR1ayBkYXBhdCBtZW5naWt1dGkgdHV0b3JpYWwgaW5pIHNhbXBhaSBzZWxlc2FpLg0KDQpgYGB7ciBldmFsPUZBTFNFfQ0KaW5zdGFsbC5wYWNrYWdlcyhjKCJ0aWR5ciIsICJkcGx5ciIsICJnZ3Bsb3QyIikpDQojIGF0YXUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQppbnN0YWxsLnBhY2thZ2VzKGMoInRpZHl2ZXJzZSIpKSAgICAgICAgICAgICAgICAgICAgICAgICANCmBgYA0KDQpQYW5nZ2lsIHBhY2thZ2UgeWFuZyBzdWRhaCBBbmRhIGluc3RhbGwgZGVuZ2FuIGZ1bmdzaSBgbGlicmFyeSgpYC4NCg0KYGBge3IgbG9hZHBrZ30NCiMgUGFuZ2dpbCBwYWNrYWdlIHlhbmcgc3VkYWggdGVyaXNudGFsbA0KbGlicmFyeSh0aWR5cikNCmxpYnJhcnkoZHBseXIpDQpsaWJyYXJ5KGdncGxvdDIpDQoNCiMgYXRhdSBjdWt1cCBtZW1hbmdnaWwNCiMgbGlicmFyeSh0aWR5dmVyc2UpDQojIHVudHVrIG1lbWFuZ2dpbCBwYWNrYWdlIGRpIGF0YXMNCmBgYA0KDQojIE9wZXJhdG9yIFBpcGVzIChgJT4lYCkNCg0KU2ViZWx1bSBraXRhIG11bGFpLCBraXRhIGFrYW4gbWVtYmFoYXMgdGVybGViaWggZGFodWx1IHNlYnVhaCBvcGVyYXRvciB5YW5nIHNhbmdhdCBiZXJndW5hIGRhbiBiYW55YWsgZGlndW5ha2FuIG9sZWggcGVuZ2d1bmEgUiB5YW5nIG1lbmdndW5ha2FuIGB0aWR5dmVyc2VgLiBPcGVyYXRvciBpbiBhZGFsYWggKipQaXBlcyoqIChgJT4lYCkuIFBlcmhhdGlrYW4gY29udG9oIGRpIGJhd2FoIGluaS4NCg0KYGBge3IgcGlwZXMxfQ0KbWVhbihpcmlzJFNlcGFsLkxlbmd0aCkNCmBgYA0KYXRhdQ0KYGBge3IgcGlwZXMyfQ0KaXJpcyRTZXBhbC5MZW5ndGggJT4lIG1lYW4oKQ0KYGBgDQpLZWR1YSBmdW5nc2kgdGVyc2VidXQgbWVsYWt1a2FuIGhhbCB5YW5nIHNhbWEgZGFuIG1lbmhhc2lsa2FuIG5pbGFpIHlhbmcgc2FtYS4NCg0KYGBge3IgZXZhbD1GQUxTRX0NCm91dHB1dCA8LSBmdW5fbiguLi4oZnVuMyhmdW4yKGZ1bjEoZGF0YWZyYW1lLCBhcmcxKSwgYXJnMiksIGFyZzMpLCAuLi4pLCBhcmdfbikNCmBgYA0KDQpKaWthIEFuZGEgZGltaW50YSB1bnR1ayBtZW1wZWxhamFyaSBzY3JpcHQgc2VwZXJ0aSBpbmkgc2F5YSBjdWt1cCB5YWtpbiBiYWh3YSBBbmRhIGFrYW4gbWVyYXNhIGtlc3VsaXRhbiB1bnR1ayBtZW5nZXRhaHVpIHByb3NlcyB5YW5nIGFrYW4gZGlsYWt1a2FuIG9sZWggc2NyaXB0IHRlcnNlYnV0LiBTY3JpcHQgZGkgYXRhcyBtYXNpaCBzZWRlcmhhbmEsIGhhbnlhIGFkYSB0aWdhIGZ1bmdzaS4gQmF5YW5na2FuIGppa2EgYmFueWFrIGZ1bmdzaSB5YW5nIGRpZ3VuYWthbiBzZWNhcmEgYmVydXJ1dGFuLCBiZW50dWsgZGkgYXRhcyBha2FuIG1lbmphZGk6DQoNCkRlbmdhbiBrb25zZXAgYHRpZHl2ZXJzZWAsIGtpdGEgZGFwYXQgbWVuZ2d1bmFrYW4gb3BlcmF0b3IgUGlwZXMgYCU+JWAgYWdhciBsZWJpaCBtdWRhaCBkYWxhbSBtZW1haGFtaSBzY3JpcHQga2FyZW5hIHNjcmlwdCB0ZXJzZWJ1dCBtZW51bmp1a2thbiB1cnV0YW4uIFBlcmhhdGlrYW4gY29udG9oIGRpIGJhd2FoIGluaS4NCg0KIyMgUGVuamVsYXNhbiBPcGVyYXRvciBgJT4lYA0KDQpTYXlhIGFrYW4gY29iYSBtZW5qZWxhc2thbiBsZWJpaCBkYWxhbSB1bnR1ayBsZWJpaCBtZW1haGFtaSBvcHJhdG9yIGAlPiVgLg0KDQpNaXNhbGthbiBgZihhLCB4KWAgYWRhbGFoIHNlYnVhaCBmdW5nc2kgZGkgUiBkZW5nYW4gYXJndW1lbiBgYWAgZGFuIGB4YC4ga2VtdWRpYW4gZnVuZ3NpIGBnKGIsIHopYCBhZGFsYWggZnVuZ3NpIGxhaW4gZGkgUiBkZW5nYW4gYXJndW1lbiBgYmAgZGFuIGB6YC4gRGVuZ2FuIG1lbmdndW5ha2FuIG9wZXJhdG9yIGAlPiVgIGtpdGEgZGFwYXQgbWVudWxpc2thbm55YSBzZWJhZ2FpIGJlcmlrdXQuDQoNCmBgYHtyIGV2YWw9RkFMU0V9DQojIGZ1bmdzaSBmKGEsIHgpDQpmKGEsIHgpICMgYXRhdQ0KYSAlPiUgZih4KQ0KDQojIGZ1bmdzaSBnKGIsIHopDQpnKGIsIHopICMgYXRhdQ0KYiAlPiUgZyh6KQ0KYGBgDQoNCkRhcmkga2VkdWEgY29udG9oIGRpIGF0YXMsIGRhcGF0IGRpbGloYXQgYmFod2EgYGFgIGFkYWxhaCBhcmd1bWVuIHBlcnRhbWEgdW50dWsgZnVuZ3NpIGBmKClgIGRhbiBgYmAgYWRhbGFoIGFyZ3VtZW4gcGVydGFtYSB1bnR1ayBmdW5nc2kgYGcoKWAuIE9wZXJhdG9yIGAlPiVgICJtZW55YW1wYWlrYW4iIG9iamVrIGBhYCBzZWJhZ2FpIG5pbGFpIHVudHVrIG1lbmdpc2kgYXJndW1lbiBwZXJ0YW1hIHBhZGEgZnVuZ3NpIGBmKClgLiBQZXJoYXRpa2FuIGlsdXN0cmFzaSBkaSBiYXdhaCBpbmkuDQoNCjxwIGFsaWduPSJjZW50ZXIiPg0KICAgIDxpbWcgc3JjPSJEOi9hZXBoaWRheWF0dWxvaC9SL2xlYXJuaW5nL1JkYi9waXBlcy5wbmciIGhlaWdodD0iMTQ4IiB3aWR0aD0iMTQ4IiBhbHQ9IklsdXN0cmFzaSBQaXBlcyAxIj4NCiAgICA8YnIvPg0KICAgIDxici8+DQogICAgPGVtPklsdXN0cmFzaSBQaXBlcyAxPC9lbT4NCjwvcD4NCg0KTWlzYWxrYW4gb2JqZWsgYGFgIG1lbmphZGkgYXJndW1lbiBwZXJ0YW1hIGZ1bmdzaSBgZigpYCBkZW5nYW4gYGEgJT4lIGYoeClgLiBLZW11ZGlhIGhhc2lsIGRhcmkgYGEgJT4lIGYoeClgIGRpamFkaWthbiBhcmd1bWVuIHBlcnRhbWEgZGFyaSBmdW5nc2kgYGcoKWAuIERlbmdhbiBrYXRhIGxhaW4gYGIgPC0gYSAlPiUgZih4KWAgc2VoaW5nZ2EgYGIgJT4lIGcoeilgLiBIYWwgaW5pIGRhcGF0IGRpbGFrdWthbiBzZWNhcmEgYmVydXJ1dGFuIGRlbmdhbiBvcGVyYXRvciBgJT4lYCBzZWJhZ2FpIGJlcmlrdXQuDQoNCmBgYHtyIGV2YWw9RkFMU0V9DQphICU+JQ0KICAgIGYoeCkgJT4lDQogICAgZyh6KQ0KYGBgDQoNCjxwIGFsaWduPSJjZW50ZXIiPg0KICAgIDxpbWcgc3JjPSJEOi9hZXBoaWRheWF0dWxvaC9SL2xlYXJuaW5nL1JkYi9waXBlczIucG5nIiBoZWlnaHQ9IjE0OCIgd2lkdGg9IjI0OCIgYWx0PSJJbHVzdHJhc2kgUGlwZXMgMiI+DQogICAgPGJyLz4NCiAgICA8YnIvPg0KICAgIDxlbT5JbHVzdHJhc2kgUGlwZXMgMjwvZW0+DQo8L3A+DQoNCj4gIkZ1bmdzaSBgZigpYCBkaXRlcmFwa2FuIHRlcmhhZGFwIG9iamVrIGBhYCBzZWJhZ2FpIGFyZ3VtZW4gcGVydGFtYSBkYW4gYHhgIHNlYmFnYWkgYXJndW1lbiBrZWR1YSBkYXJpIGZ1bmdzaSBgZigpYCB5YW5nIGtlbXVkaWFuIGhhc2lsbnlhIGRpZ3VuYWthbiBzZWJhZ2FpIGFyZ3VtZW4gcGVydGFtYSBwYWRhIGZ1bmdzaSBgZygpYCBkZW5nYW4gYHpgIHNlYmFnYWkgYXJndW1lbiBrZWR1YS4iDQoNCmBgYHtyIGV2YWw9RkFMU0V9DQpvdXRwdXQgPC0gZnVuX24oLi4uKGZ1bjMoZnVuMihmdW4xKGRhdGFmcmFtZSwgYXJnMSksIGFyZzIpLCBhcmczKSwgLi4uKSwgYXJnX24pDQpgYGANCg0KSmlrYSBzY3JpcHQgZGkgYXRhcyBkaXR1bGlza2FuIGRlbmdhbiBtZW5nZ3VuYWthbiBvcGVyYXRvciBgJT4lYCBha2FuIHNlcGVydGkgYmVyaWt1dCBpbmkuDQoNCmBgYHtyIGV2YWw9RkFMU0V9DQpvdXRwdXQgPC0gZGF0YWZyYW1lICU+JSANCiAgZnVuMShhcmcxKSAlPiUgDQogIGZ1bjIoYXJnMikgJT4lIA0KICBmdW4zKGFyZzMpICU+JSANCiAgLi4uICU+JSANCiAgZnVuX24oYXJnX24pDQpgYGANCg0KDQo8cCBhbGlnbj0iY2VudGVyIj4NCjxzdHJvbmc+LS0tLS0tLS0tLS0tLS0tLS0tLSBTZW1vZ2EgQmVybWFuZmFhdCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPC9zdHJvbmc+DQo8L3A+DQoNCg0KKipDb250YWN0IG1lOioqDQoqKkFlcCoqIEhpZGF5YXR1bG9oDQoNCkVtYWlsOiA8YWVwaGlkYXlhdHVsb2gubWFpbEBnbWFpbC5jb20+DQpHaXRIdWI6IDxodHRwczovL2dpdGh1Yi5jb20vYWVwaGlkYXlhdHVsb2g+DQo=