Kursus

Sebelum kita mulai dengan pengantar dan mempelajari berbagai tipe data di R, mari cepat menyiapkan lingkungan R baik di Terminal maupun Jupyter Notebook.
Perintah berikut untuk sistem operasi Mac, yang akan menginstal R di terminal Anda.
brew install r --build-from-source
Untuk memverifikasi instalasi berhasil, cukup ketik R (huruf besar) di terminal, dan Anda akan masuk ke sesi R seperti ditunjukkan di bawah.

Untuk instalasi pada sistem operasi lain, silakan cek tutorial ini.
Sekarang mari tambahkan bahasa pemrograman R sebagai kernel di jupyter notebook. Pastikan jupyter notebook sudah terinstal di sistem Anda.
Buka terminal Anda dan jalankan sesi R lalu masukkan dua perintah di bawah, yang akan menambahkan kernel R ke jupyter notebook Anda.
install.packages('IRkernel')
IRkernel::installspec()
Setelah dua perintah di atas berhasil, jalankan jupyter dari terminal dan buka notebook dengan kernel R seperti ditunjukkan di bawah:

Sekarang Anda siap menulis kode R pertama Anda di jupyter notebook.
Pendahuluan
Untuk memaksimalkan penggunaan R, sangat penting mengetahui dan memahami berbagai tipe data dan struktur data yang ada di R serta cara kerjanya. Keduanya berperan penting di hampir semua masalah, terutama saat Anda mengerjakan masalah machine learning yang sangat berpusat pada data.
Dalam bahasa pemrograman, kita biasanya membutuhkan variabel untuk menyimpan informasi, yang bisa berupa bilangan bulat, karakter, floating-point, boolean, dan lain-lain. type dari variabel murni didasarkan pada jenis informasi yang dikandungnya. Jika diisi bilangan bulat, maka tipe data variabel adalah int. Variabel hanyalah lokasi memori yang dicadangkan tempat nilai disimpan. Begitu Anda membuat variabel, sebagian ruang memori dicadangkan untuknya.
Berdasarkan tipe data variabel, sejumlah memori akan dialokasikan oleh sistem operasi. Misalnya, dalam pemrograman R, variabel yang menyimpan bilangan bulat akan mencadangkan memori 4 byte dan 1 byte untuk karakter.
Pada bahasa pemrograman seperti C, C++, dan Java, variabel dideklarasikan sebagai tipe data; namun, di Python dan R, variabel adalah objek. Objek tidak lain adalah struktur data yang memiliki beberapa atribut dan metode yang diterapkan pada atributnya.
Ada berbagai jenis objek R atau struktur data yang akan dibahas dalam tutorial ini seperti:
-
Vektor
-
List
-
Matriks
-
Array
-
Faktor
Mari terlebih dahulu memahami beberapa tipe data dasar yang menjadi fondasi objek R, seperti Numeric, Integer, Character, Factor, dan Logical.
- Numeric: Angka yang memiliki nilai desimal atau bersifat pecahan bertipe data numeric.
num <- 1.2
print(num)
[1] 1.2
Anda dapat memeriksa tipe data a menggunakan kata kunci class().
class(num)
'numeric'
- Integer: Angka yang tidak mengandung nilai desimal bertipe data integer. Namun, untuk membuat tipe data integer, Anda secara eksplisit menggunakan
as.integer()dan meneruskan variabel sebagai argumen.
int <- as.integer(2.2)
print(int)
[1] 2
class(int)
'integer'
- Character: Seperti namanya, berupa huruf atau kombinasi huruf yang diapit tanda kutip dan dianggap sebagai tipe data karakter oleh R. Bisa berupa alfabet atau angka.
char <- "datacamp"
print(char)
[1] "datacamp"
class(char)
'character'
char <- "12345"
print(char)
[1] "12345"
class(char)
'character'
- Logical: Variabel yang dapat bernilai True dan False seperti boolean disebut variabel logical.
log_true <- TRUE
print(log_true)
[1] TRUE
class(log_true)
'logical'
log_false <- FALSE
print(log_false)
[1] FALSE
class(log_false)
'logical'
- Factor: Tipe data yang digunakan untuk menyatakan relasi kualitatif seperti warna, baik & buruk, rating kursus atau film, dan sebagainya. Berguna dalam pemodelan statistik.
Untuk mencapainya, Anda akan menggunakan fungsi c() yang mengembalikan vektor (satu dimensi) dengan menggabungkan semua elemen.
fac <- factor(c("good", "bad", "ugly","good", "bad", "ugly"))
print(fac)
[1] good bad ugly good bad ugly
Levels: bad good ugly
class(fac)
'factor'
Faktor fac memiliki tiga level yaitu good, bad, dan ugly, yang dapat diperiksa menggunakan kata kunci levels, dan tipe dari level adalah karakter.
levels(fac)
- 'bad'
- 'good'
- 'ugly'
nlevels(fac)
3
class(levels(fac))
'character'
Sebelum lanjut, mari pahami beberapa kiat penting yang bisa berguna!
- Selalu ingat bahwa bahasa pemrograman R peka huruf besar-kecil (case-sensitive). Semua objek yang didefinisikan di atas harus digunakan dengan cara yang sama, baik huruf besar maupun kecil, seperti ditunjukkan pada contoh di bawah.
Num
Error in eval(expr, envir, enclos): object 'Num' not found
Traceback:
- Di R, Anda dapat memeriksa semua variabel atau objek yang telah Anda definisikan di lingkungan kerja dengan menggunakan kata kunci
ls(), seperti ditunjukkan di bawah.
ls()
- 'char'
- 'int'
- 'num'
List
Berbeda dengan vektor, list dapat berisi elemen dari berbagai tipe data dan sering disebut sebagai kumpulan nilai yang terurut. List dapat berisi vektor, fungsi, matriks, bahkan list lain di dalamnya (nested-list).
List di R menggunakan indeks mulai dari satu (one-indexed), yakni indeks dimulai dari satu.
Mari pahami konsep list dengan contoh cepat yang berisi tiga tipe data berbeda disimpan dalam satu list.
lis1 <- 1:5 # Integer Vector
lis1
- 1
- 2
- 3
- 4
- 5
lis2 <- factor(1:5) # Factor Vector
lis2
- 1
- 2
- 3
- 4
- 5
Levels:
- '1'
- '2'
- '3'
- '4'
- '5'
lis3 <- letters[1:5] # Character Vector
lis3
- 'a'
- 'b'
- 'c'
- 'd'
- 'e'
combined_list <- list(lis1, lis2, lis3)
combined_list
-
- 1
- 2
- 3
- 4
- 5
- 1
- 2
- 3
- 4
- 5
Levels:
- '1'
- '2'
- '3'
- '4'
- '5'
- 'a'
- 'b'
- 'c'
- 'd'
- 'e'
Mari akses tiap vektor di dalam list secara terpisah. Untuk itu, Anda akan menggunakan double square brackets karena ketiga vektor ditempatkan pada satu level di dalam list. python
combined_list[[1]]
- 1
- 2
- 3
- 4
- 5
python
combined_list[[2]]
- 1
- 2
- 3
- 4
- 5
Levels:
- '1'
- '2'
- '3'
- '4'
- '5'
combined_list[[3]]
- 'a'
- 'b'
- 'c'
- 'd'
- 'e'
Sekarang, mari coba mengakses elemen kelima dari vektor ketiga, yang menghasilkan huruf e.
combined_list[[3]][5]
'e'
Terakhir, mari coba memipihkan (flatten) list. Satu hal penting untuk diingat adalah karena combined_list merupakan gabungan tipe data character dan numeric, maka tipe data character akan memiliki prioritas, dan tipe data seluruh list akan menjadi character.
flat_list <- unlist(combined_list)
class(flat_list)
'character'
flat_list
- '1'
- '2'
- '3'
- '4'
- '5'
- '1'
- '2'
- '3'
- '4'
- '5'
- 'a'
- 'b'
- 'c'
- 'd'
- 'e'
length(flat_list)
15
Vektor
Vektor adalah objek yang digunakan untuk menyimpan banyak informasi atau nilai dengan tipe data yang sama. Satu vektor tidak bisa berisi kombinasi integer dan karakter sekaligus. Misalnya, jika Anda ingin menyimpan total nilai 100 siswa, alih-alih membuat 100 variabel berbeda untuk tiap siswa, Anda akan membuat vektor dengan panjang 100 yang menyimpan seluruh nilai siswa tersebut.
Vektor dapat dibuat dengan fungsi c(), yang akan menggabungkan semua elemen dan mengembalikan array satu dimensi.
Mari buat vektor marks dengan data lima siswa bertipe numeric.
marks <- c(88,65,90,40,65)
class(marks)
'numeric'
Mari periksa panjang vektor, yang akan mengembalikan jumlah elemen di dalamnya.
length(marks)
5
Sekarang, mari coba mengakses elemen tertentu berdasarkan indeksnya.
marks[4]
40
marks[5]
65
marks[6] #mengembalikan NA karena tidak ada elemen keenam dalam vektor
<NA>
-
Slicing: Mirip dengan Python, konsep slicing juga dapat diterapkan di R.
Mari coba mengakses elemen dari indeks kedua hingga kelima menggunakan slicing.
marks[2:5]
- 65
- 90
- 40
- 65
Sekarang buat vektor character yang mirip cara pembuatannya dengan vektor numeric.
char_vector <- c("a", "b", "c")
print(char_vector)
[1] "a" "b" "c"
class(char_vector)
'character'
length(char_vector)
3
char_vector[1:3]
- 'a'
- 'b'
- 'c'
Jika kita membuat vektor yang berisi nilai numeric dan character, nilai numeric akan dikonversi menjadi tipe data character.
char_num_vec <- c(1,2, "a")
char_num_vec
- '1'
- '2'
- 'a'
class(char_num_vec)
'character'
Mari buat vektor dengan 1024 nilai numeric dengan bantuan konsep slicing.
vec <- c(1:1024)
Sekarang, coba akses elemen tengah dan elemen terakhir. Untuk melakukannya, Anda akan menggunakan fungsi length.
vec[length(vec)]
1024
vec[length(vec)/2]
512
- Bagaimana cara membuat vektor bilangan ganjil?
Untuk membuat vektor bilangan ganjil, Anda dapat menggunakan fungsi seq, yang menerima tiga parameter: awal, akhir, dan ukuran langkah.
seq(1,10, by = 2)
- 1
- 3
- 5
- 7
- 9
Matriks
Mirip dengan vektor, matriks digunakan untuk menyimpan informasi dengan tipe data yang sama. Namun, berbeda dengan vektor, matriks mampu menyimpan informasi dua dimensi di dalamnya.
Sintaks untuk mendefinisikan matriks adalah:
M <- matrix(vector, nrow=r, ncol=c, byrow=FALSE, dimnames=list(char_vector_rownames, char_vector_colnames))
byrow=TRUE menandakan matriks diisi per baris. byrow=FALSE menunjukkan matriks diisi per kolom (default).
Mari cepat mendefinisikan matriks M berukuran $2\times3$.
M = matrix( c('AI','ML','DL','Tensorflow','Pytorch','Keras'), nrow = 2, ncol = 3, byrow = TRUE)
print(M)
[,1] [,2] [,3]
[1,] "AI" "ML" "DL"
[2,] "Tensorflow" "Pytorch" "Keras"
Mari gunakan konsep slicing dan ambil elemen dari suatu baris dan kolom.
M[1:2,1:2] #dimensi pertama memilih kedua baris sedangkan dimensi kedua akan memilih
#elemen dari kolom ke-1 dan ke-2
| AI | ML |
| Tensorflow | Pytorch |
DataFrame
Berbeda dengan matriks, Data frame adalah bentuk yang lebih umum dari matriks. Ia berisi data dalam bentuk tabel. Data dalam data frame dapat tersebar di berbagai kolom dengan tipe data berbeda. Kolom pertama bisa berupa karakter, kolom kedua bisa berupa integer, dan kolom ketiga bisa logical.
Variabel atau fitur berada dalam bentuk kolom, juga dikenal sebagai header, sementara observasi berada dalam baris dengan elemen pertama sebagai nama baris diikuti oleh data aktual, juga dikenal sebagai data rows.
DataFrame dapat dibuat menggunakan fungsi data.frame().
DataFrame telah banyak digunakan untuk membaca file comma-separated (CSV), file teks. Penggunaannya tidak hanya terbatas pada membaca data, tetapi Anda juga dapat menggunakannya untuk masalah machine learning, terutama saat menangani data numerik. DataFrame berguna untuk memahami data, pengolahan data (wrangling), membuat plot dan visualisasi.
Mari buat dataset dummy dan pelajari beberapa fungsi khusus data frame.
dataset <- data.frame(
Person = c("Aditya", "Ayush","Akshay"),
Age = c(26, 26, 27),
Weight = c(81,85, 90),
Height = c(6,5.8,6.2),
Salary = c(50000, 80000, 100000)
)
print(dataset)
Person Age Weight Height Salary
1 Aditya 26 81 6.0 5e+04
2 Ayush 26 85 5.8 8e+04
3 Akshay 27 90 6.2 1e+05
class(dataset)
'data.frame'
nrow(dataset) # ini akan memberi Anda jumlah baris yang ada di dataframe dataset
3
ncol(dataset) # ini akan memberi Anda jumlah kolom yang ada di dataframe dataset
5
df1 = rbind(dataset, dataset) # penggabungan baris yang akan menambahkan argumen secara baris.
df1
| Person | Age | Weight | Height | Salary |
|---|---|---|---|---|
| <fct> | <dbl> | <dbl> | <dbl> | <dbl> |
| Aditya | 26 | 81 | 6.0 | 5e+04 |
| Ayush | 26 | 85 | 5.8 | 8e+04 |
| Akshay | 27 | 90 | 6.2 | 1e+05 |
| Aditya | 26 | 81 | 6.0 | 5e+04 |
| Ayush | 26 | 85 | 5.8 | 8e+04 |
| Akshay | 27 | 90 | 6.2 | 1e+05 |
df2 = cbind(dataset, dataset) # penggabungan kolom yang akan menambahkan argumen secara kolom.
df2
| Person | Age | Weight | Height | Salary | Person | Age | Weight | Height | Salary |
|---|---|---|---|---|---|---|---|---|---|
| <fct> | <dbl> | <dbl> | <dbl> | <dbl> | <fct> | <dbl> | <dbl> | <dbl> | <dbl> |
| Aditya | 26 | 81 | 6.0 | 5e+04 | Aditya | 26 | 81 | 6.0 | 5e+04 |
| Ayush | 26 | 85 | 5.8 | 8e+04 | Ayush | 26 | 85 | 5.8 | 8e+04 |
| Akshay | 27 | 90 | 6.2 | 1e+05 | Akshay | 27 | 90 | 6.2 | 1e+05 |
Mari lihat fungsi head yang sangat berguna ketika Anda memiliki jutaan catatan dan ingin melihat beberapa baris pertama data Anda. Demikian pula, fungsi tail akan menampilkan beberapa baris terakhir data Anda.
head(df1,3) # di sini hanya tiga baris yang akan dicetak
| Person | Age | Weight | Height | Salary | |
|---|---|---|---|---|---|
| <fct> | <dbl> | <dbl> | <dbl> | <dbl> | |
| 1 | Aditya | 26 | 81 | 6.0 | 5e+04 |
| 2 | Ayush | 26 | 85 | 5.8 | 8e+04 |
| 3 | Akshay | 27 | 90 | 6.2 | 1e+05 |
str(dataset) #ini mengembalikan informasi kelas atau tipe data masing-masing untuk setiap kolom.
'data.frame': 3 obs. of 5 variables:
$ Person: Factor w/ 3 levels "Aditya","Akshay",..: 1 3 2
$ Age : num 26 26 27
$ Weight: num 81 85 90
$ Height: num 6 5.8 6.2
$ Salary: num 5e+04 8e+04 1e+05
Sekarang mari lihat fungsi summary(), yang berguna ketika Anda ingin memahami statistik dari dataset Anda. Seperti ditunjukkan di bawah, fungsi ini membagi data Anda menjadi tiga kuartil, berdasarkan itu Anda bisa memperoleh intuisi tentang distribusi data. Fungsi ini juga menunjukkan apakah ada nilai hilang dalam dataset Anda.
summary(dataset)
Person Age Weight Height Salary
Aditya:1 Min. :26.00 Min. :81.00 Min. :5.8 Min. : 50000
Akshay:1 1st Qu.:26.00 1st Qu.:83.00 1st Qu.:5.9 1st Qu.: 65000
Ayush :1 Median :26.00 Median :85.00 Median :6.0 Median : 80000
Mean :26.33 Mean :85.33 Mean :6.0 Mean : 76667
3rd Qu.:26.50 3rd Qu.:87.50 3rd Qu.:6.1 3rd Qu.: 90000
Max. :27.00 Max. :90.00 Max. :6.2 Max. :100000
Kesimpulan
Selamat telah menyelesaikan tutorial ini.
Tutorial ini merupakan titik awal yang baik bagi pemula yang ingin mempelajari bahasa pemrograman R. Sebagai latihan yang baik, silakan eksplor lebih banyak fungsi pembantu terkait tiap tipe data.
Masih banyak informasi terkait R yang belum dibahas seperti Kondisional dan Alur Kontrol di R, Utilitas di R, dan yang paling menarik Machine Learning menggunakan R, yang akan dibahas di tutorial mendatang, jadi pantau terus!
Jangan ragu untuk mengajukan pertanyaan terkait tutorial ini di kolom komentar di bawah.
Jika Anda ingin belajar lebih lanjut tentang R, ikuti kursus Intermediate R dari DataCamp dan lihat juga tutorial Introduction to Data frames in R.
