Halo, Sobat Exsight ! belakangan ini Aplikasi R semakin terkenal saja yah. Kami jadi bersemangat menyusun panduan lengkap Belajar R untuk Pemula ini. Artikel ini khusus buat kamu yang ingin belajar Aplikasi R dan sedang kebingungan cari tempat belajar yang komprehensif sobb. Jadi, simak sampai selesai yaa! kamu juga bisa request tambahan bahasan di kolom komentar. Selamat Belajar ^^
Intro
Tau gak sih sobb, belakangan penggunaan R semakin marak saja. Hal ini seiring dengan makin terkenalnya Data Science belakangan ini, juga pertumbuhan Ilmu Statistika yang seringkali mengunakan Aplikasi R. Seringkali R dibandingkan penggunaannya dengan Software Python. Semoga kita bisa juga membuat panduan Python ya, aaminn.
R juga sangat luas digunakan di sektor Riset maupun di ranah Praktisi oleh berbagai perusahaan. Untuk menambah semangat kamu, berikut list company yang menggunakan R.
Apa itu R
R adalah aplikasi Open Source yang digunakan secara masif untuk kegunaan statistik dan representasi grafik. R dikembangkan oleh Ross lhaka dan Robert Gentleman pada tahun 1993. Kamu bisa baca selengkapnya tentang R disini.
Belakangan R tambah popular linear dengan Statistika yang tambah popular karena berkembangnya Data Science.
Apa itu Rstudio
Rstudio adalah sebuah Integrated Development Environment (IDE) untuk R. Rstudio selaku IDE buat R digunakan untuk mengkakses R dengan lebih mudah dan dalam lingkungan yang lebih terintegrasi.
Rstudio salah satu IDE yang digunakan buat kenyamanan yang lebih untuk akses R yak sobb. Kamu bisa juga pakai IDE buat R yang lain.
Bedanya R dan Rstudio
Mengetahui beda R dan Rstudio bisa menambah wawasan kita. Singkatnya R adalah bahasa pemrograman untuk komputasi statisika dan grafik, sedangkan Rstudio adalah IDE yang dapat memudahkan kita untuk menggunakan R.
R dapat kita gunakan sekalipun kita belum install Rstudio, sebaliknya Rstudio tidak dapat kita gunakan sebelum kita install R dulu di device kita. Lagi, hal ini karena pada dasarnya Rstudio digunakan untuk mengoptimalkan penggunaan R dengan grafik yang lebih tinggi kualitasnya, workspace management, dan fitur pelengkap lainnya. Lihat perbedaan tampilan R dan Rstudio berikut :
Dari kedua gambar diatas, semakin jelas terlihat perbedaan R dan Rstudio, bukan?. Terlihat pada gambar Rstudio tampilannya lebih lengkap dan terlihat juga fitur – fitur yang memudahkan kamu buat analisis data pakai R.
Kegunaan Aplikasi R
Begitu beragam kegunaan R, sifatnya yang flexible sesuai kegunaan user mengarahkan R kepada kegunaan yang beragam. Berikut beberapa contoh kegunaannya :
- Olah Data. R bisa digunakan untuk olah data dari yang sederhana sampai yang kompleks. Kamu juga bisa custom apakah penggunaannya menggunakan Package atau mau membangun syntax sendiri dari awal agar lebih flexible dengan kebutuhan kamu. Beberapa contohnya adalah Korelasi Spearman Rho di R, Analisis Regresi Logistik Ordinal di R, Uji t independen dan Mann-Whitney di R, dan lain – lain.
- Ragam Komputasi Statistik. Berbagai komputasi statistik mulai dari pembangkitan bilangan acak, Bootstrapping, Experimental Design, dan seterusnya bisa kamu gunakan pakai R.
- Machine Learning. Metode Unsupervised Learning, Supervised Learning, atau metode tuning hyperparameter pun kamu bisa cobakan di R. begitu luas bukan kegunaannya ?
- Text Mining. Text mining, metode yang popular belakangan ini juga kamu bisa lakukan dengan R.
- Neural Network. Bahkan sampai Neural Network pun kamu bisa lakuin lho, dengan R. Walaupun untuk advanced AI, kamu bisa juga menggunakan platform – platform lain.
- Web-based Application. Yapp, begitu luasnya penggunaan R, kamu sampai bisa membuat aplikasi berbasis website dengan Shiny di R.
Dan masih banyak lagi lainnya untuk kegunaan R yang bisa kamu manfaatin buat kebutuhan kamu.
Kelebihan R
Banyak sekali kelebihan R, terutama dibanding aplikasi olah data lainnya. Berikut kami sudah rangkumkan untuk kamu :
- Open Source. R salah satunya terkenal karena merupakan Aplikasi Open Source yang powerful, bahkan sudah begitu terkenal di dunia penelitian internasional. Salah satu manfaat yang kamu rasakan adalah bahwa kamu bisa mendownload R gratis, alih-alih membayar lisensi aplikasi seperti SPSS, Minitab, dan lainnya.
- Kaya akan Package. Aplikasi R memiliki berbagai Package yang siap membantu kamu menyelesaikan analisis data sesuai kebutuhan. Bahkan kalau tertarik kamu bisa membuat package sendiri lho. Pembahasan apa itu Package dibahas di artikel ini bagian bawah.
- Grafik yang mumpuni. R juga terkenal dengan Grafik nya yang mumpuni, jadi kamu ga bakal rugi belajar R dehh. Tetap semangat ya !
- Machine learning support. Betul, R begitu banyak algoritma Machine Learning. Pun kamu bisa custom syntax sendiri dari nol karena R memang Open Source.
Tentu masih banyak kelebihan R yang bisa kamu peroleh ya sobb. Diatas hanyalah beberapa contohnya.
Get Started
Sebelum mulai belajar menggunakan R, kamu bisa download dulu R nya disini sobb. Kami sudah menyiapkan artikel tutorial untuk kamu ikuti, cukup dengan klik link – link berikut :
- Pertama, kamu bisa ikuti Tutorial cara install R dan Rstudio : BEGINI CARA MUDAH INSTALL R DAN RSTUDIO DI WINDOWS
- Lalu, kamu bisa atur Rstudio agar jadi dark mode. Ini opsional saja yak sob, beberapa user lebih suka menggunakan Rstudio dalam mode gelap (dark mode) : TERNYATA RSTUDIO JUGA BISA DARK MODE. BEGINI CARANYA!
- Selanjutnya, kamu bisa juga menggunakan R di Google Colab kalau memang membutuhkannya sobb. Kalau kamu run R di Google Colab, kamu tidak perlu khawatir disk dan RAM tidak mencukupi jika menganalisis data yang besar, hal ini dikarenakan semua proses yang berjalan di Colab akan dilakukan pada cloud yang disediakan dari Google. Kamu hanya memerlukan browser dan koneksi internet yang stabil untuk mengaksesnya. Berikut link tutorialnya : RUN R DI GOOGLE COLAB? IKUTI LANGKAH MUDAH BERIKUT!
Tampilan Rstudio
Oke, langkah terakhir sebelum kita mulai belajar menggunakan R. Kita perlu tahu interface (tampilan) Rstudio yak sobb. By the way, kita memakai Rstudio dalam artikel ini yak, jadi pastiin kamu udah ikutin cara install Rstudio sesuai panduan diatas sobb ^^
Gambar diatas menunjukan Overview dari tampilan Rstudio, berikut penjelasannya :
1. Source Panel
Source panel, sering juga disebut Source Code panel. Ini karena panel ini berfungsi sebagai source (sumber) dari code yang bakal kamu run. Yapp, disini kamu bisa melakukan oret-oretan sebelum kamu benar – benar menjalankan/run code tersebut sobb.
Panel ini juga berfungsi untuk menyimpan syntax/code kamu menjadi file.R, sehingga kamu ga bingung kalau harus memakai code yang sama di kemudian hari atau sekadar menyimpan code yang belum kamu selesein.
2. Console
Console adalah tempat dimana code yang sudah kamu buat akan dijalankan. Pada console juga kamu bisa membuat command (perintah) dan langsung menjalankannya, sehingga panel ini sering juga disebut sebagai Command Line.
Code atau perintah yang kamu jalankan secara langsung di panel ini, tidak akan disimpan menjadi file.R. Hal ini berbeda tentunya dengan Source panel.
Kamu bisa menjalankan perintah yang sudah kamu tulis di Console dengan menekan Enter.
3. Files, Plots, Packages, Help, Viewer
Yapp, di panel pojok kanan bawah ini kita disuguhi beberapa fitur sekaligus. Berikut perinciannya :
- Files, fungsinya mirip sama File Manager di PC kamu sobb. Kamu bisa buka file dari sini dengan satu klik, atau kamu juga bisa mengubah Working Directory hanya dengan klik klik saja melalui panel ini.
- Plots, kamu bisa melihat hasil visualisasi atau grafik yang kamu buat menggunakan Rstudio melalui panel ini. Kamu bisa melakukan zoom dan export hanya dengan klik-klik saja.
- Packages, panel ini menyajikan packages yang sudah diinstall juga membuat kamu bisa install dan update packages yang diinginkan dengan klik saja.
- Help, kamu bisa mendapatkan info terkait R Documentation tentang apa saja terkait R yang sudah tersedia documentationnya. Berikut adalah contohnya :
4. Environment dan History
Panel yang terakhir terletak di pojok kanan atas. Panel ini memiliki beberapa kegunaan yang sangat bermanfaat, berikut rinciannya :
- Panel Environment bisa sangat membantu kamu untuk mengetahui object apa saja yang ada di worspace yang kamu jalankan. Objek bisa berupa Dataframe, Matrix, Function, Array, dan lain – lain. Kamu juga bisa klik objek tersebut dan akan muncul overview object tersebut.
- Pada Panel History kamu bisa melihat history dari syntax apa saja yang sudah kamu run di workspace kamu. Menariknya, kamu bisa menjalankan lagi syntax tersebut di Panel Source ataupun Console.
Basics
Yapp, langkah awal kita akan belajar mengenai hal-hal mendasar yang perlu diketahui sebelum kita melanjutkan menggunakan R untuk hal-hal yang bersifat praktis, sobb.
Hal-hal berikut perlu banget kamu pahami sampai mahir yaa.
*kamu bisa DOWNLOAD file.R nya disini
Syntax
Di tahap awal, yang perlu kamu ketahui adalah bahwa kamu bisa membuat Output berupa Text (teks) atau Numeric (angka). Untuk membuat Output berupa teks, kamu cukup menuliskan teks ynag kamu inginkan di dalam tanda kutip ganda “…” seperti contoh berikut (* catatatn : ketikkan di Console dan tekan Enter):
> "Exsight Make It Original"
[1] "Exsight Make It Original"
Sedangkan untuk membuat Output berupa numeric, kamu bisa langsung menuliskan angka yang kamu inginkan. Berikut disajikan contoh penulisan dan contoh hitungan numerik berupa penjumlahan :
> 1
[1] 1
> 2
[1] 2
> 3
[1] 3
> 12 + 100
[1] 112
Selain itu, kamu juga bisa menambahakn print() untuk menampilkan kedua jenis Output tersebut. Contoh :
> print(123)
[1] 123
> print("Exsight Make It Original")
[1] "Exsight Make It Original"
Perbedaannya, adalah penggunaan print() diwajibkan pada beberapa kondisi tertentu. Misal pada saat kamu menggunakan loop for berikut :
> for(x in 1:5){
+ print("Exsight")
+ }
[1] "Exsight"
[1] "Exsight"
[1] "Exsight"
[1] "Exsight"
[1] "Exsight"
Comments (komentar)
Seperti pada bahasa pemrograman lainnya, kamu juga bisa menambahkan comments untuk memudahkan pembaca lain memahami apa yang kamu tulis dan kerjakan sobb. Adapun comments di R menggunakan #, berikut adalah contohnya :
> 12 + 5 #taruh komentar disini
[1] 17
Bisa kita lihat, apapun setelah tanda # tidak akan dieksekusi oleh R.
Hal ini yang menjadikan comments bisa begitu bebas ditulis apapun.
Usahain comments berisi hal yang bisa membuat syntax kamu readable yak sobb, bukan spam :))
Aritmatika Sederhana di R
Ingat sobb, sejatinya R adalah software untuk Statistik. Sehingga kamu bisa juga pakai R untuk penghitungan aritmatika dasar.
Berikut kami sajikan tabel buat panduan kamu ngejalanin Aritmatika di R.
Operator | Keterangan | Contoh |
a + b | a ditambah b | 2 + 9 = 11 |
a – b | a dikurangi b | 9 – 1 = 8 |
a * b | a dikali b | 2 * 10 = 20 |
a / b | a dibagi b | 20 / 5 = 4 |
a ^ b atau a ** b | a pangkat b | 2 ^ 5 = 32 |
a %% b | sisa hasil bagi dari pembagian a oleh b | 7 %% 2 = 1 |
Berikut contoh penerapannya langsung di R :
> 1 + 2
[1] 3
> 10-5
[1] 5
> 3*4
[1] 12
> 90/5
[1] 18
> 2^5
[1] 32
> 13%%2
[1] 1
Penamaan Variabel di R
Untuk membuat variabel di R, secara umum kita boleh memilih dari dua cara :
- Pertama, menggunakan tanda <-. Tanda tersebut bisa kamu buat dengan kombinasi “Alt” + “-” .
- Kedua, kamu bisa menggunakan tanda =.
Lalu untuk memanggil variabel tersebut, kamu cukup mengetikan nama yang sudah kamu beri ke variabel tersebut.
Berikut adalah contoh penamaan variabel dengan kedua cara tersebut ;
> a <- "aku"
> b = "suka makan"
> a
[1] "aku"
> b
[1] "suka makan"
Sebelum kamu mulai membuat variabel di R, alangkah baiknya kamu perhatikan aturan penamaan variabel di R berikut ya :
- Case Sensitive. Maksudnya penamaan menggunakan huruf kapital akan berbeda jika menggunakan huruf biasa. Misal : VariabelSatu dan variabelSatu ditafsirkan sebagai dua variabel yang berbeda
- Nama variabel dapat berupa kombinasi antara huruf, angka, titik(.), dan underscore(_)
- Nama variabel tidak dapat dimulai dengan underscore(_)
Untuk mempermudah kamu, sudah disediakan contoh penamaan variabel yang kurang tepat berikut.
Tipe Data di R
Berikut ada beberapa tipe data yang perlu diketahui di awal – awal mempelajari R. Tipe data ini bukan pembatasan ya sobb, bisa jadi kamu menemukan tipe data yang advance ketika sudah lama bermain dengan R !
1. Numeric
Karena R biasanya digunakan untuk mengolah data, dan data yang paling sering dianalisisi adalah data numerik.. maka tipe data ini adalah tipe data yang paling sering kamu temui kala bermain R. Contoh : 23.5, 90, 1 , 45.2, dan seterusnya
2. Integer
Integer (bilangan bulat) adalah tipe data numeric yang bukan desimal. Contoh : 23,72,6, dan seterusnya
3. Complex
Tipe berikutnya adalah bilangan kompleks. Yapp, di beberapa kesempatan, kita mungkin akan berinteraksi dengan bilangan kompleks. Contoh : 7i + 5, 3i, dan seterusnya.
4. Characters
Characters atau sering juga disebut dengan string digunakan untuk membuat variabel dengan tipe teks. Contoh : “Exsight”, “Make It Original”, dan seterusnya.
5. Boolean (Logic)
Dalam penggunaan R, seringkali ketika membuat function kita memerlukan kondisi True dan False. Sehingga tipe data ini juga dibutuhkan saat kamu baru mempelajari R. Contoh tipe data ini ada dua saja yaitu : TRUE dan FALSE.
Penerapan Tipe Data di R
Yapp, berikut penerapan dari Tipe Data yang sudah kamu pelajari. Tentu saja ini untuk permulaan ya, kamu bisa pelajari sendiri setelah tahu basic nya. Ingat prinsip pareto principle ^^
> #penerapan data types
|
Konversi Tipe Data di R
Yapp, tipe data yang sudah kamu pelajari tadi bisa dikonversi menjadi tipe data lainnya. Simak contoh berikut untuk lebih memahami.
> #Konversi data di R
> a <- 12.3 #numeric
> b <- 14L #penulisan integer
> c <- 3i + 12 #penulisan bilangan complex
> d <- "Exsight" #penulisan character
> a <- as.integer(a) #konversi menjadi integer
> class(a)
[1] "integer"
> print(a)
[1] 12
> b <- as.complex(b) #konversi menjadi bil kompleks
> class(b)
[1] "complex"
> print(b)
[1] 14+0i
> c <- as.numeric(c) #konversi menjadi numerik
Warning message:
imaginary parts discarded in coercion
> class(c)
[1] "numeric"
> print(c)
[1] 12
> e <- as.character(a) #konversi menjadi string/character
> class(e)
[1] "character"
> print(e)
[1] "12"
Rangkuman dari simulasi diatas dapat dilihat pada tabel berikut :
Konversi ke- | Sintaks | Aturan |
Numerik | as.numeric | FALSE -> 0 TRUE -> 1 “1”, “2”, … -> 1, 2, … “abc”, … -> NA |
Logic/Boolean | as.logical | 0 -> FALSE angka selain 0 -> TRUE “FALSE”, “F” -> FALSE “TRUE”, “T” -> TRUE “abc”, … -> NA |
Character | as.character | 1, 2, … -> “1”, “2”, … FALSE -> “FALSE” TRUE -> “TRUE” |
DATA STRUCTURES
Data Structures (Struktur Data) di R berarti bagaimana semua tipe data yang kita sudah pelajari bisa disusun dan digunakan untuk beragam kepentingan.
Macam Data Structures di R ada : Vector, List, Matrices (Matriks), Arrays, Factor, dan Dataframe.
Vector
Overview
Vector singkatnya adalah list dari item dengan tipe yang sama.
Untuk membuat Vector, cukup gunakan instruksi c(…).
> #contoh Vector
> bilangan.ganjil <- c(1,3,5,7,9) #contoh vector bilangan
> alfabet <- c("a","b","c","d","e") #contoh vector huruf
> sort(alfabet) #mengurutkan vector alfabet
[1] "a" "b" "c" "d" "e"
> sort(bilangan.ganjil) #mengurutkan vector bilangan
[1] 1 3 5 7 9
Mengakses Vector
Kamu bisa mengakses vector dengan cara sebagai berikut :
> bilangan.ganjil[2] #mengakses satu nilai vector
[1] 3
> alfabet[5]
[1] "e"
> bilangan.ganjil[c(1,3)] #mengakses dua nilai vector
[1] 1 5
> alfabet[c(2,5)]
[1] "b" "e"
Mengganti Nilai Vector
Mengganti nilai atau isi dari sebuah Vector seringkali diperlukan sobb, berikut caranya :
> #mengganti nilai vector
> bilangan.ganjil[2] <- 15 #menganti bilangan ganjil kedua
> bilangan.ganjil #print bilangan ganjil
[1] 1 15 5 7 9
> alfabet[5] <- "z" #mengganti alfabet kelima
> alfabet #print nilai alfabet terbaru
[1] "a" "b" "c" "d" "z"
masih banyak lagi sebenarnya beragam yang bisa kita lakukan dengan vector, seperti mengurutkan vector, mengetahui panjang vector, dan seterusnya. Namun untuk bahasan sekarang, kami rasa cukup sampai disini dulu. Rekan – rekan bisa request ya, jika membutuhkan bahasannya.
List
Overview
Tidak seperti Vector, List bisa diisi dengan data dengan tipe yang berbeda. List bisa dibuat dengan perintah list(…).
Contoh :
> ##LIST
> list1 <- list("a","b","c") #membuat list 1 berisi character/string
> list2 <- list(1,2,3) #membuat list 2 berisi numeric
> list3 <- c(list1,list2) #menggabungkan list 1 dan list 2 dengan berbeda tipe data
> list3 #memanggil list3 dan menampilkan isinya
[[1]]
[1] "a"
[[2]]
[1] "b"
[[3]]
[1] "c"
[[4]]
[1] 1
[[5]]
[1] 2
[[6]]
[1] 3
> "b" %in% list1 #melakukan cek apakah b ada dalam List1
[1] TRUE
Mengakses List
berikut dicontohkan beberapa akses terhadap List, seperti : melakukan cek terhadap isi List, mengubah isi List, menghapus isi List.
> list2[3] #mengakses isi list2 urutan ke-3
[[1]]
[1] 3
> list2[1:3] #mengakses list urutan 1 sampai 3
[[1]]
[1] 1
[[2]]
[1] 2
[[3]]
[1] 3
> list1[2] <- "z" #mengganti isi list1 urutan ke-2
> length(list3) #mengetahui panjang List3
[1] 6
> append(list2,"abc") #menambah isi pada List2
[[1]]
[1] 1
[[2]]
[1] 2
[[3]]
[1] 3
[[4]]
[1] "abc"
> append(list2, "tambahan", after = 2) #menambah item dalam list setelah item ke-2
[[1]]
[1] 1
[[2]]
[1] 2
[[3]]
[1] "tambahan"
[[4]]
[1] 3
> list2[-3] #menghapus item ke-3 pada list2
[[1]]
[1] 1
[[2]]
[1] 2
Matrix
Overview
Matriks di R, sama seperti Matriks pada umumnya adalah struktur data yang berbentuk baris dan kolom.
Matriks di R dibentuk dengan perintah matrix().
Seperti yang tertera, Matriks di R perlu menambahkan keterangan berapa jumlah kolom (ncol) atau berapa jumlah baris(nrow) dari Matriks yang ingin dibuat.
Contoh :
matriks1 <- matrix(c("Andre","Budi","Cantika","Doni"), nrow = 2) #membuat Matriks 2 baris
matriks2 <- matrix(c("Andre","Budi","Cantika","Doni","Edgar","Fanny"), nrow = 2)
matriks1 #memanggil matriks1
[,1] [,2]
[1,] "Andre" "Cantika"
[2,] "Budi" "Doni"
Mengakses Matrix
Berikut diberikan contoh beberapa operasi yang dilakukan dengan Matriks :
> matriks1[2,1] #mengakses item dari matriks1, baris 2 kolom 1
[1] "Budi"
> matriks1[2,] #mengakses item dari matriks1, baris 2
[1] "Budi" "Doni"
> matriks1[1,] #mengakses item dari matriks1, baris 1
[1] "Andre" "Cantika"
> matriks2[c(1:2),] #mengakses matrik 1 baris satu dan dua
[,1] [,2] [,3]
[1,] "Andre" "Cantika" "Edgar"
[2,] "Budi" "Doni" "Fanny"
> matriks2[,c(1:2)] #mengakses matrik 1 kolom satu dan dua
[,1] [,2]
[1,] "Andre" "Cantika"
[2,] "Budi" "Doni"
> cbind(matriks1, c("Yandi","Zich")) #menambah kolom baru
[,1] [,2] [,3]
[1,] "Andre" "Cantika" "Yandi"
[2,] "Budi" "Doni" "Zich"
> rbind(matriks1, c("Weny","Xien")) #menambah baris baru
[,1] [,2]
[1,] "Andre" "Cantika"
[2,] "Budi" "Doni"
[3,] "Weny" "Xien"
> matriks1[-c(1),] #menghapus baris satu
[1] "Budi" "Doni"
> matriks1[-c(2),] #menghapus baris dua
[1] "Andre" "Cantika"
> matriks1[,-c(1)] #menghapus kolom satu
[1] "Cantika" "Doni"
> matriks1[,-c(2)] #menghapus kolom dua
[1] "Andre" "Budi"
> dim(matriks1) #mengetahui dimensi matriks
[1] 2 2
Data Frame
Overview
Data Frame adalah Struktur Data yang relatif lebih banyak digunakan. Hal ini karena Data Frame berbentuk seperti tabel dalam kehidupan sehari – hari.
Yap, Data Frame merupakan Struktur Data dengan format baris dan kolom. Data Frame bisa menampung berbagai jenis Tipe Data, namun dalam satu kolom hanya bisa satu jenis Tipe Data.
Data Frame dapat dibuat dengan perintah data.frame(…).
Contoh :
Bahkan kita bisa tau summary dari Data Frame yang sudah dibuat.
mengakses Data Frame
> #mengakses Data Frame
> nilai.mahasiswa$Nama #mengakses Data Frame dengan $
[1] Andre Bram Colo Deni Eryan
Levels: Andre Bram Colo Deni Eryan
> nilai.mahasiswa[1] #mengakses Data Frame dengan []
Nama
1 Andre
2 Bram
3 Colo
4 Deni
5 Eryan
> nilai.mahasiswa[["Nama"]] #mengakses Data Framse dengan [[]]
[1] Andre Bram Colo Deni Eryan
Levels: Andre Bram Colo Deni Eryan
Baca juga: Panduan sederhana memahami Loop di Aplikasi Rstudio
Penutup
Demikian Panduan Belajar Aplikasi R untuk Pemula.
Silahkan request tambahan bahasan jika ada, di kolom komentar ^^
Terimakasih sudah menyimak dan semoga bermanfaat !
Keren bgt penjelasan materinya #2jempol
Terima kasih kak! Semoga bermanfaat yaa