R adalah bahasa pemrograman dan perangkat lunak untuk analisis statistika dan grafik yang awalnya dibuat oleh Ross Ihaka dan Robert Gentleman dan akhirnya lanjutkan oleh R Development Core Team.
R sangat baik digunakan untuk permodelan linier dan nonlinier, uji statistik parametrik dan nonparametrik, klasifikasi, klasterisasi, dan lainnya dan juga baik dalam visualisasi data. R dan Python saat ini adalah 2 platform yang paling populer untuk Data Science.
R dapat diunduh secara resmi untuk platform Windows disini.
Untuk platform Linux, install package r-base sesuai distro masing-masing.
Setelah instalasi, R bisa dijalankan dari
Windows Start Menu : Cari Aplikasi R dan jalankan
Linux terminal : user@hostname:~$ R
Berbeda dengan pemrograman lainnya Program R berupa interpreter yang dituliskan baris per baris seperti pada Command Line Interface (CLI) atau biasa disebut Shell.
R tidak sesulit bahasa pemrograman lainnya, R merupakan bahasa turunan dari S, dimana S juga turunan dari bahasa C, maka R akan terlihat mirip dengan bahasa C. Mari membahas bahasa pemrograman R dasar.
Variabel
Seperti bahasa pemrograman lainnya, R menggunakan variabel, aturan nama variabel sama dengan bahasa lainnya, yaitu :
- Variabel berupa kombinasi huruf, angka, titik dan garis bawah (underscore).
- Harus diawali dengan huruf atau titik, jika berawal dengan titik, selanjutnya tidak bisa menggunakan angka.
- Syntax R tidak dapat digunakan sebagai nama variabel.
- Huruf besar dan kecil berbeda (case sensitive)
Variabel memiliki tipe data tetapi tidak perlu secara eksplisit dituliskan tipe datanya.
Deklarasi variabel pada R cukup dengan memasukkan nilai kedalam variabelnya menggunakan operator = atau <-, operator <- lebih umum digunakan karena merupakan operator asli R, komentar pada R bisa menggunakan #, contoh :
Karakter
s <- "Hello World"
s1 <- "'Hello World dengan petik 1'"
s2 <- '"Hello World dengan petik 2"'
print(s) #Hasil : "Hello World"Output
[1] "Hello World"
Numerik
a <- 5 #Memasukkan nilai 5 bertipe double ke variabel a
print(a) #Hasil : 5Output
[1] 5a <- 5
b <- 6
print((a+b)/2) #Hasil berupa double 5.5Output
[1] 5.5
Untuk mengecek tipe data dan kelasnya suatu variable bisa menggunakan typeof() dan class(), contoh diatas typeof(a) akan menghasilkan “double” dan class(a) akan menghasilkan “numeric”, tipe lainnya untuk numeric : “integer” dan “complex”, secara default bilangan di R adalah double.
Vector
Vector adalah data array yang dapat menyimpan banyak data dalam 1 variabel saja dan diakses menggunakan indeks, berikut inisialisasi vector di R, menggunakan fungsi bernama c(), data yang dimasukkan harus seragam, jika tidak akan dikonversi menjadi karakter agar seragam), vector akan dibahas lagi lebih lanjut nantinya :
x <- c(1, 5, 4, 9, 0)
y <- c(1, 5.4, TRUE, "hello")
print(y[2]) #Hasil "5.4", Indeks pada R dimulai dari angka 1 bukan 0Output
[1] "5.4"
Operasi Vector
x <- c(1, 2, 3, 4, 5)
y <- c(1, 1, 1, 1, 1)
print(x + y) #Tiap elemen vector akan ditambahkanOutput
[1] 2 3 4 5 6
Operator
Aritmatik : +,–,*,/,(,)
Pangkat : ^
Modulus : %%
Pembagian integer : %/%
Komparasi : <,>,<=,>=,==,!=
Logikal : ! (NOT),& (AND untuk vector),&& (AND),
| (OR untuk vector),|| (OR)
Set variabel : <-, <<- (untuk variabel global), =,->,
->>(untuk variabel global)
Kondisi
If, else if, dan else
x <- 0
if (x < 0) {
print("Negatif")
}
else if (x > 0) {
print("Positif")
}
else
print("Nol")Output
[1] "Nol"
Ifelse
a <- c(6,3,2,9)
ifelse(a %% 2 == 0, "genap", "ganjil")Output
[1] "genap" "ganjil" "genap" "ganjil"
Switch
a <- 2
switch(a,”merah”, “hijau”, “biru”)Output
[1] "hijau"
Perulangan (Loop)
For
x <- c(2,5,3,9,8,11,6)
count <- 0
for (val in x) {
if (val %% 2 == 0) count = count + 1
}
print(count)Output
[1] 3
While
i <- 1
while (i < 4) {
print(i)
i = i + 1
}Output
[1] 1
[1] 2
[1] 3
Repeat
x <- 1
repeat {
print(x)
x = x + 1
if (x == 3) {
break
}
}Output
[1] 1
[1] 2
didalam loop bisa menggunakan syntax break untuk keluar dari loop dan next lanjut ke loop berikutnya.
Function
Fungsi atau function merupakan potongan code yang diberikan nama dan dapat mengembalikan nilai tertentu berdasarkan parameter yang dimasukkan, digunakan apabila potongan code tersebut digunakan berulang-ulang.
pangkat <- function (x, y) {
hasil <- x^y
return(hasil)
}z <- pangkat(2,3)
print(paste("Pangkat 3 dari 2 adalah : ",z))Output
[1] "Pangkat 3 dari 2 adalah : 8"
Struktur Data / Data Structure
Ini adalah bagian terpenting dari R yang akan sering digunakan untuk menyimpan dan memanipulasi data yang jumlahnya banyak dan akan sering digunakan dalam analisis Data Science terdiri dari :
- Vector
- Matrix
- List
- Data Frame
- Factor
Vector
Vector sudah dijelaskan sebelumnya digunakan untuk menyimpan nilai array 1 dimensi.
x <- c(1,2,3,4,5,6)
x <- 1:6 #sama dengan diatas, cara ini lebih cepat untuk data seri
y <- 2:-2 #membuat seri nilai menurun
z <- c("satu"=2, "dua"=4, "tiga"=6)
print(y)Output
[1] 2 1 0 -1 -2print(y[c(1,2)]) #hanya menampilkan index pertama dan kedua dari yOutput
[1] 2 1print(y[y<0]) #filter y, tampilkan nilai dibawah 0Output
[1] -1 -2print(z[c("dua")]) #menampilkan index dengan stringOutput
dua
4x[2] <- 5 #memodifikasi index kedua dengan nilai 5
x <- x[1:3] #memotong index jadi hanya 3
print(x)Output
[1] 1 5 3
Matrix
Jika Vector menyimpan nilai 1 dimensi maka Matrix dapat menyimpan nilai 2 dimensi.
Membuat Matrix
a <- matrix(1:9, nrow = 3, ncol = 3) #diisi baris dulu
print(a)Output
[,1] [,2] [,3]
[1,] 1 4 7
[2,] 2 5 8
[3,] 3 6 9a <- matrix(1:9, nrow = 3, ncol = 3, byrow = TRUE) #diisi kolom dulu
print(a)Output
[,1] [,2] [,3]
[1,] 1 2 3
[2,] 4 5 6
[3,] 7 8 9colnames(a) <- c("K1","K2","K3") #memberi nama index kolom
rownames(a) <- c("B1","B2","B3") #memberi nama index baris
print (a)Output
K1 K2 K3
B1 1 2 3
B2 4 5 6
B3 7 8 9
Membuat Matrix dengan menggabungkan dari 2 Vector
cbind(c(1,2,3),c(4,5,6)) #digunakan untuk menggabungkan kolomOutput
[,1] [,2]
[1,] 1 4
[2,] 2 5
[3,] 3 6rbind(c(1,2,3),c(4,5,6)) #digunakan untuk menggabungkan barisOutput
[,1] [,2] [,3]
[1,] 1 2 3
[2,] 4 5 6
Mengakses Matrix
a <- matrix(1:9, nrow = 3, ncol = 3) #diisi baris dulu
print(a)Output
[,1] [,2] [,3]
[1,] 1 4 7
[2,] 2 5 8
[3,] 3 6 9print(a[2,3]) #menampilkan baris ke-2 kolom ke-3Output
[1] 8print(a[2,]) #menampilkan semua baris ke-2Output
[1] 2 5 8print(a[,3]) #menampilkan semua baris ke-3Output
[1] 7 8 9print(a[c(1,2),c(2,3)]) #menampilkan potongan matrix dari titik kiri atas sampai kanan bawahOutput
[,1] [,2]
[1,] 4 7
[2,] 5 8print(a[-1,])) #menampilkan semua kecuali baris ke-1Output
[,1] [,2] [,3]
[1,] 2 5 8
[2,] 3 6 9print(t(a)) #menampilkan transpose matrixOutput
[,1] [,2] [,3]
[1,] 1 2 3
[2,] 4 5 6
[3,] 7 8 9
List
Jika Vector hanya dapat menyimpan data seragam maka List dapat menyimpan data yang tidak seragam / berbeda tipe data.
x <- list(5.5, TRUE, 1:5)
print(x)Output
x
[[1]]
[1] 5.5[[2]]
[1] TRUE[[3]]
[1] 1 2 3 4 5x <- list(“a” = 5.5, “b” = TRUE, “c” = 1:5)
str(x) #str dipakai untuk melihat stuktur dari jenis data structureOutput
List of 3
$ a: num 5.5
$ b: logi TRUE
$ c: int [1:3] 1 2 3 4 5print(x[1]) #menampilkan list index pertamaOutput
[[1]]
[1] 5.5print(x[[1]]) #menampilkan value dari list index pertamaOutput
[1] 5.5
Data Frame
Data Frame adalah stuktur data terpenting karena bentuknya seperti tabel yang memiliki kolom dan baris, mirip matrix, bedanya matrix menyimpan data seragam, sementara Data Frame dapat menyimpan data dengan berbagai tipe data seperti tabel pada Database. Kebanyakan library R menggunakan Data Frame sebagai parameter datanya.
Membuat Data Frame
df <- data.frame(“ID” = c(1,2,3),
“Nama” = c(“Budi”,”Agus”,”Bambang”),
“Umur” = c(21,28,30),
“Tanggal.Lahir” = c(“1997–02–05”,
”1990–07–23",”1988–12–13")
)
print(df)Output
ID Nama Umur Tanggal.Lahir
1 1 Budi 21 1997–02–05
2 2 Agus 28 1990–07–23
3 3 Bambang 30 1988–12–13print(df["Nama"]) #menampilkan kolom nama, sama dengan print(df[2])Output
Nama
1 Budi
2 Agus
3 Bambangprint(df$Nama) #menampilkan kolom nama dan diubah menjadi vectorOutput
[1] Budi Agus Bambang
Levels: Agus Bambang Budiprint(df[2,2:3]) #menampilkan kolom nama dan umur Agus (baris 2)Output
Nama Umur
2 Agus 28
Memodifikasi Data Frame
df <- data.frame(“ID” = c(1,2,3),
“Nama” = c(“Budi”,”Agus”,”Bambang”),
“Umur” = c(21,28,30),
“Tanggal.Lahir” = c(“1997–02–05”,
”1990–07–23",”1988–12–13"),
stringsAsFactors = FALSE #agar tidak menjadi factor
)
df[2,"Nama"] <- "Mahmud"
print(df)Output
ID Nama Umur Tanggal.Lahir
1 1 Budi 21 1997–02–05
2 2 Mahmud 28 1990–07–23
3 3 Bambang 30 1988–12–13Tempat.Lahir <- c("Jakarta","Sorong","Bandung")
df <- cbind(df, Tempat.Lahir)
print(df)Output
ID Nama Umur Tanggal.Lahir Tempat.Lahir
1 1 Budi 21 1997–02–05 Jakarta
2 2 Agus 28 1990–07–23 Sorong
3 3 Bambang 30 1988–12–13 Bandungdf["Tempat.Lahir"] <- NULL #hapus kolom
df <- rbind(df,list(4,"Ani",19,"1999-10-30")) #tambah baris
print(df)Output
ID Nama Umur Tanggal.Lahir
1 1 Budi 21 1997–02–05
2 2 Mahmud 28 1990–07–23
3 3 Bambang 30 1988–12–13
4 4 Ani 19 1999-10-30df <- df[1:3,] #menghapus baris keempat
Factor
Factor adalah struktur data yang menyimpan kategori dari vector bertipe karakter, misalnya terdapat vector berisi c(“Laki-laki”,”Perempuan”,”Perempuan”,”Laki-Laki”) maka Factornya adalah “Laki-laki” dan “Perempuan” saja, hanya 2 kategori.
Membuat factor
x <- factor(c(“Laki-laki”,”Perempuan”,”Perempuan”,”Laki-laki”), levels <- c("Laki-laki","Perempuan"))
print(x)Output
[1] Laki-laki Perempuan Perempuan Laki-laki
Levels: Laki-laki Perempuanlevels(x) <- c(levels(x), "Tidak jelas") #untuk menambah level baru
print(x)
Materi Terkait :