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 %>%
.
Cakupan Materi
Materi yang akan dibahas:
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
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.
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
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
“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: aephidayatuloh.mail@gmail.com GitHub: https://github.com/aephidayatuloh
LS0tDQp0aXRsZTogIk9wZXJhdG9yIFBpcGVzIGAlPiVgIg0KYXV0aG9yOiAiQWVwIEhpZGF5YXR1bG9oIg0KZGF0ZTogIlVwZGF0ZSBUZXJha2hpcjogMjAxOS0wNS0xOSINCm91dHB1dDogDQogIGh0bWxfbm90ZWJvb2s6DQogICAgbnVtYmVyX3NlY3Rpb25zOiB5ZXMNCiAgICB0aGVtZTogc3BhY2VsYWINCiAgICBkZl9wcmludDogcGFnZWQNCiAgICB0b2M6IHllcw0KICAgIHRvY19kZXB0aDogNA0KICAgIHRvY19mbG9hdDogdHJ1ZQ0KICBodG1sX2RvY3VtZW50Og0KICAgIG51bWJlcl9zZWN0aW9uczogeWVzDQogICAgdGhlbWU6IHNwYWNlbGFiDQogICAgZGZfcHJpbnQ6IHBhZ2VkDQogICAgdG9jOiB5ZXMNCiAgICB0b2NfZGVwdGg6ICc0Jw0KICAgIHRvY19mbG9hdDogdHJ1ZQ0KLS0tDQoNCjxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+DQoNCmJvZHl7IC8qIE5vcm1hbCAgKi8NCiAgICAgIGZvbnQtc2l6ZTogMTJweDsNCiAgfQ0KdGQgeyAgLyogVGFibGUgICovDQogIGZvbnQtc2l6ZTogMTJweDsNCn0NCmgxLnRpdGxlIHsNCiAgZm9udC1zaXplOiAzOHB4Ow0KICBjb2xvcjogbGlnaHRibHVlOw0KICBmb250LXdlaWdodDogYm9sZDsNCn0NCmgxIHsgLyogSGVhZGVyIDEgKi8NCiAgZm9udC1zaXplOiAyNHB4Ow0KICBjb2xvcjogRGFya0JsdWU7DQp9DQpoMiB7IC8qIEhlYWRlciAyICovDQogIGZvbnQtc2l6ZTogMjBweDsNCiAgY29sb3I6IERhcmtCbHVlOw0KfQ0KaDMgeyAvKiBIZWFkZXIgMyAqLw0KICBmb250LXNpemU6IDE2cHg7DQojICBmb250LWZhbWlseTogIlRpbWVzIE5ldyBSb21hbiIsIFRpbWVzLCBzZXJpZjsNCiAgY29sb3I6IERhcmtCbHVlOw0KfQ0KaDQgeyAvKiBIZWFkZXIgNCAqLw0KICBmb250LXNpemU6IDE0cHg7DQogIGNvbG9yOiBEYXJrQmx1ZTsNCn0NCmNvZGUucnsgLyogQ29kZSBibG9jayAqLw0KICAgIGZvbnQtc2l6ZTogMTJweDsNCn0NCnByZSB7IC8qIENvZGUgYmxvY2sgLSBkZXRlcm1pbmVzIGNvZGUgc3BhY2luZyBiZXR3ZWVuIGxpbmVzICovDQogICAgZm9udC1zaXplOiAxMnB4Ow0KfQ0KPC9zdHlsZT4NCg0KDQpgYGB7ciBzZXR1cCwgaW5jbHVkZT1GQUxTRX0NCiNrbml0cjo6b3B0c19jaHVuayRzZXQoZWNobyA9IFRSVUUpDQprbml0cjo6b3B0c19jaHVuayRzZXQoZWNobz1UUlVFLCBmaWcuaGVpZ2h0PTMuNSwgZmlnLndpZHRoPTkuMiwgcmVzdWx0cz0naG9sZCcsIHdhcm5pbmc9RkFMU0UsIGZpZy5zaG93PSdob2xkJywgbWVzc2FnZT1GQUxTRSkgDQpvcHRpb25zKHNjaXBlbiA9IDk5KQ0KYGBgDQoNCiMgT2JqZWt0aWYNCg0KSW5pIGFkYWxhaCBjYXRhdGFuIHVudHVrIG1lbWFuZHUgc2VjYXJhIHNpbmdrYXQgZGFsYW0gbWVsYWt1a2FuIHZpc3VhbGlzYXNpIGRhdGEgdW50dWsga2VidXR1aGFuIGVrc3Bsb3Jhc2kgZGF0YSBhdGF1IHB1Ymxpa2FzaSBtZW5nZ3VuYWthbiBSIGRhbiBiZWJlcmFwYSBwYWNrYWdlIHlhbmcgbWVuamFkaSBiYWdpYW4gZGFyaSBwYWNrYWdlIGB0aWR5dmVyc2VgLiBUdWp1YW4gZGFyaSB0dXRvcmlhbCBpbmkgYWRhbGFoIHVudHVrIG1lbWJhbnR1IEFuZGEgbWVtYWhhbWkgb3BlcmF0b3IgYCU+JWAuIA0KDQojIENha3VwYW4gTWF0ZXJpDQpNYXRlcmkgeWFuZyBha2FuIGRpYmFoYXM6DQoNCiogT3BlcmF0b3IgYCU+JWANCg0KIyBQcmFzeWFyYXQNCg0KVW50dWsgZGFwYXQgbWVuZ2lrdXRpIHR1dG9yaWFsIGluaSBkZW5nYW4gYmFpaywgYWRhIGJlYmVyYXBhIGhhbCB5YW5nIHBlcmx1IGRpcGVyc2lhcGthbiBvbGVoIHBlc2VydGEuIFlhaXR1Og0KDQoxLiBLb25la3NpIGludGVybmV0IHlhbmcgYmFpaw0KDQoyLiBNZW5naW5zdGFsbCBzb2Z0d2FyZQ0KDQogICAgYS4gUiBwcm9ncmFtIDxodHRwczovL2NyYW4uci1wcm9qZWN0Lm9yZy8+DQoNCiAgICBiLiBSU3R1ZGlvIDxodHRwczovL3d3dy5yc3R1ZGlvLmNvbS9wcm9kdWN0cy9yc3R1ZGlvL2Rvd25sb2FkLz4NCg0KMy4gRGF0YSAmIFNjcmlwdCB5YW5nIGRhcGF0IGRpcGVyb2xlaCBkYXJpIFtyZXBvc2l0b3J5IGluaV0oaHR0cHM6Ly9naXRodWIuY29tL2FlcGhpZGF5YXR1bG9oL2Vrc3Bsb3Jhc2ktZGF0YSkgZGFuIHBhZGEgZGF0YWJhc2UgeWFuZyBkaXNlZGlha2FuIHBlbWJpY2FyYS4NCg0KNC4gUGFja2FnZSBSIHlhbmcgZGlidXR1aGthbjogYHRpZHlyYCwgYGRwbHlyYCwgYGdncGxvdDJgIChhdGF1IGB0aWR5dmVyc2VgKQ0KDQojIEluc3RhbGwgZGFuIExvYWQgUGFja2FnZXMNCg0KSmFsYW5rYW4gcGVyaW50YWggZGkgYmF3YWggaW5pIHVudHVrIGluc3RhbGwgcGFja2FnZSAoKipqaWthIEFuZGEgYmVsdW0gcGVybmFoIGluc3RhbGwqKikgeWFuZyBha2FuIGRpZ3VuYWthbiB1bnR1ayBkYXBhdCBtZW5naWt1dGkgdHV0b3JpYWwgaW5pIHNhbXBhaSBzZWxlc2FpLg0KDQpgYGB7ciBldmFsPUZBTFNFfQ0KaW5zdGFsbC5wYWNrYWdlcyhjKCJ0aWR5ciIsICJkcGx5ciIsICJnZ3Bsb3QyIikpDQojIGF0YXUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQppbnN0YWxsLnBhY2thZ2VzKGMoInRpZHl2ZXJzZSIpKSAgICAgICAgICAgICAgICAgICAgICAgICANCmBgYA0KDQpQYW5nZ2lsIHBhY2thZ2UgeWFuZyBzdWRhaCBBbmRhIGluc3RhbGwgZGVuZ2FuIGZ1bmdzaSBgbGlicmFyeSgpYC4NCg0KYGBge3IgbG9hZHBrZ30NCiMgUGFuZ2dpbCBwYWNrYWdlIHlhbmcgc3VkYWggdGVyaXNudGFsbA0KbGlicmFyeSh0aWR5cikNCmxpYnJhcnkoZHBseXIpDQpsaWJyYXJ5KGdncGxvdDIpDQoNCiMgYXRhdSBjdWt1cCBtZW1hbmdnaWwNCiMgbGlicmFyeSh0aWR5dmVyc2UpDQojIHVudHVrIG1lbWFuZ2dpbCBwYWNrYWdlIGRpIGF0YXMNCmBgYA0KDQojIE9wZXJhdG9yIFBpcGVzIChgJT4lYCkNCg0KU2ViZWx1bSBraXRhIG11bGFpLCBraXRhIGFrYW4gbWVtYmFoYXMgdGVybGViaWggZGFodWx1IHNlYnVhaCBvcGVyYXRvciB5YW5nIHNhbmdhdCBiZXJndW5hIGRhbiBiYW55YWsgZGlndW5ha2FuIG9sZWggcGVuZ2d1bmEgUiB5YW5nIG1lbmdndW5ha2FuIGB0aWR5dmVyc2VgLiBPcGVyYXRvciBpbiBhZGFsYWggKipQaXBlcyoqIChgJT4lYCkuIFBlcmhhdGlrYW4gY29udG9oIGRpIGJhd2FoIGluaS4NCg0KYGBge3IgcGlwZXMxfQ0KbWVhbihpcmlzJFNlcGFsLkxlbmd0aCkNCmBgYA0KYXRhdQ0KYGBge3IgcGlwZXMyfQ0KaXJpcyRTZXBhbC5MZW5ndGggJT4lIG1lYW4oKQ0KYGBgDQpLZWR1YSBmdW5nc2kgdGVyc2VidXQgbWVsYWt1a2FuIGhhbCB5YW5nIHNhbWEgZGFuIG1lbmhhc2lsa2FuIG5pbGFpIHlhbmcgc2FtYS4NCg0KYGBge3IgZXZhbD1GQUxTRX0NCm91dHB1dCA8LSBmdW5fbiguLi4oZnVuMyhmdW4yKGZ1bjEoZGF0YWZyYW1lLCBhcmcxKSwgYXJnMiksIGFyZzMpLCAuLi4pLCBhcmdfbikNCmBgYA0KDQpKaWthIEFuZGEgZGltaW50YSB1bnR1ayBtZW1wZWxhamFyaSBzY3JpcHQgc2VwZXJ0aSBpbmkgc2F5YSBjdWt1cCB5YWtpbiBiYWh3YSBBbmRhIGFrYW4gbWVyYXNhIGtlc3VsaXRhbiB1bnR1ayBtZW5nZXRhaHVpIHByb3NlcyB5YW5nIGFrYW4gZGlsYWt1a2FuIG9sZWggc2NyaXB0IHRlcnNlYnV0LiBTY3JpcHQgZGkgYXRhcyBtYXNpaCBzZWRlcmhhbmEsIGhhbnlhIGFkYSB0aWdhIGZ1bmdzaS4gQmF5YW5na2FuIGppa2EgYmFueWFrIGZ1bmdzaSB5YW5nIGRpZ3VuYWthbiBzZWNhcmEgYmVydXJ1dGFuLCBiZW50dWsgZGkgYXRhcyBha2FuIG1lbmphZGk6DQoNCkRlbmdhbiBrb25zZXAgYHRpZHl2ZXJzZWAsIGtpdGEgZGFwYXQgbWVuZ2d1bmFrYW4gb3BlcmF0b3IgUGlwZXMgYCU+JWAgYWdhciBsZWJpaCBtdWRhaCBkYWxhbSBtZW1haGFtaSBzY3JpcHQga2FyZW5hIHNjcmlwdCB0ZXJzZWJ1dCBtZW51bmp1a2thbiB1cnV0YW4uIFBlcmhhdGlrYW4gY29udG9oIGRpIGJhd2FoIGluaS4NCg0KIyMgUGVuamVsYXNhbiBPcGVyYXRvciBgJT4lYA0KDQpTYXlhIGFrYW4gY29iYSBtZW5qZWxhc2thbiBsZWJpaCBkYWxhbSB1bnR1ayBsZWJpaCBtZW1haGFtaSBvcHJhdG9yIGAlPiVgLg0KDQpNaXNhbGthbiBgZihhLCB4KWAgYWRhbGFoIHNlYnVhaCBmdW5nc2kgZGkgUiBkZW5nYW4gYXJndW1lbiBgYWAgZGFuIGB4YC4ga2VtdWRpYW4gZnVuZ3NpIGBnKGIsIHopYCBhZGFsYWggZnVuZ3NpIGxhaW4gZGkgUiBkZW5nYW4gYXJndW1lbiBgYmAgZGFuIGB6YC4gRGVuZ2FuIG1lbmdndW5ha2FuIG9wZXJhdG9yIGAlPiVgIGtpdGEgZGFwYXQgbWVudWxpc2thbm55YSBzZWJhZ2FpIGJlcmlrdXQuDQoNCmBgYHtyIGV2YWw9RkFMU0V9DQojIGZ1bmdzaSBmKGEsIHgpDQpmKGEsIHgpICMgYXRhdQ0KYSAlPiUgZih4KQ0KDQojIGZ1bmdzaSBnKGIsIHopDQpnKGIsIHopICMgYXRhdQ0KYiAlPiUgZyh6KQ0KYGBgDQoNCkRhcmkga2VkdWEgY29udG9oIGRpIGF0YXMsIGRhcGF0IGRpbGloYXQgYmFod2EgYGFgIGFkYWxhaCBhcmd1bWVuIHBlcnRhbWEgdW50dWsgZnVuZ3NpIGBmKClgIGRhbiBgYmAgYWRhbGFoIGFyZ3VtZW4gcGVydGFtYSB1bnR1ayBmdW5nc2kgYGcoKWAuIE9wZXJhdG9yIGAlPiVgICJtZW55YW1wYWlrYW4iIG9iamVrIGBhYCBzZWJhZ2FpIG5pbGFpIHVudHVrIG1lbmdpc2kgYXJndW1lbiBwZXJ0YW1hIHBhZGEgZnVuZ3NpIGBmKClgLiBQZXJoYXRpa2FuIGlsdXN0cmFzaSBkaSBiYXdhaCBpbmkuDQoNCjxwIGFsaWduPSJjZW50ZXIiPg0KICAgIDxpbWcgc3JjPSJEOi9hZXBoaWRheWF0dWxvaC9SL2xlYXJuaW5nL1JkYi9waXBlcy5wbmciIGhlaWdodD0iMTQ4IiB3aWR0aD0iMTQ4IiBhbHQ9IklsdXN0cmFzaSBQaXBlcyAxIj4NCiAgICA8YnIvPg0KICAgIDxici8+DQogICAgPGVtPklsdXN0cmFzaSBQaXBlcyAxPC9lbT4NCjwvcD4NCg0KTWlzYWxrYW4gb2JqZWsgYGFgIG1lbmphZGkgYXJndW1lbiBwZXJ0YW1hIGZ1bmdzaSBgZigpYCBkZW5nYW4gYGEgJT4lIGYoeClgLiBLZW11ZGlhIGhhc2lsIGRhcmkgYGEgJT4lIGYoeClgIGRpamFkaWthbiBhcmd1bWVuIHBlcnRhbWEgZGFyaSBmdW5nc2kgYGcoKWAuIERlbmdhbiBrYXRhIGxhaW4gYGIgPC0gYSAlPiUgZih4KWAgc2VoaW5nZ2EgYGIgJT4lIGcoeilgLiBIYWwgaW5pIGRhcGF0IGRpbGFrdWthbiBzZWNhcmEgYmVydXJ1dGFuIGRlbmdhbiBvcGVyYXRvciBgJT4lYCBzZWJhZ2FpIGJlcmlrdXQuDQoNCmBgYHtyIGV2YWw9RkFMU0V9DQphICU+JQ0KICAgIGYoeCkgJT4lDQogICAgZyh6KQ0KYGBgDQoNCjxwIGFsaWduPSJjZW50ZXIiPg0KICAgIDxpbWcgc3JjPSJEOi9hZXBoaWRheWF0dWxvaC9SL2xlYXJuaW5nL1JkYi9waXBlczIucG5nIiBoZWlnaHQ9IjE0OCIgd2lkdGg9IjI0OCIgYWx0PSJJbHVzdHJhc2kgUGlwZXMgMiI+DQogICAgPGJyLz4NCiAgICA8YnIvPg0KICAgIDxlbT5JbHVzdHJhc2kgUGlwZXMgMjwvZW0+DQo8L3A+DQoNCj4gIkZ1bmdzaSBgZigpYCBkaXRlcmFwa2FuIHRlcmhhZGFwIG9iamVrIGBhYCBzZWJhZ2FpIGFyZ3VtZW4gcGVydGFtYSBkYW4gYHhgIHNlYmFnYWkgYXJndW1lbiBrZWR1YSBkYXJpIGZ1bmdzaSBgZigpYCB5YW5nIGtlbXVkaWFuIGhhc2lsbnlhIGRpZ3VuYWthbiBzZWJhZ2FpIGFyZ3VtZW4gcGVydGFtYSBwYWRhIGZ1bmdzaSBgZygpYCBkZW5nYW4gYHpgIHNlYmFnYWkgYXJndW1lbiBrZWR1YS4iDQoNCmBgYHtyIGV2YWw9RkFMU0V9DQpvdXRwdXQgPC0gZnVuX24oLi4uKGZ1bjMoZnVuMihmdW4xKGRhdGFmcmFtZSwgYXJnMSksIGFyZzIpLCBhcmczKSwgLi4uKSwgYXJnX24pDQpgYGANCg0KSmlrYSBzY3JpcHQgZGkgYXRhcyBkaXR1bGlza2FuIGRlbmdhbiBtZW5nZ3VuYWthbiBvcGVyYXRvciBgJT4lYCBha2FuIHNlcGVydGkgYmVyaWt1dCBpbmkuDQoNCmBgYHtyIGV2YWw9RkFMU0V9DQpvdXRwdXQgPC0gZGF0YWZyYW1lICU+JSANCiAgZnVuMShhcmcxKSAlPiUgDQogIGZ1bjIoYXJnMikgJT4lIA0KICBmdW4zKGFyZzMpICU+JSANCiAgLi4uICU+JSANCiAgZnVuX24oYXJnX24pDQpgYGANCg0KDQo8cCBhbGlnbj0iY2VudGVyIj4NCjxzdHJvbmc+LS0tLS0tLS0tLS0tLS0tLS0tLSBTZW1vZ2EgQmVybWFuZmFhdCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPC9zdHJvbmc+DQo8L3A+DQoNCg0KKipDb250YWN0IG1lOioqDQoqKkFlcCoqIEhpZGF5YXR1bG9oDQoNCkVtYWlsOiA8YWVwaGlkYXlhdHVsb2gubWFpbEBnbWFpbC5jb20+DQpHaXRIdWI6IDxodHRwczovL2dpdGh1Yi5jb20vYWVwaGlkYXlhdHVsb2g+DQo=