Variabel adalah tempat untuk menyimpan data, untuk menuliskan sebuah variabel, berikut ketentuan-ketentuan penamaan variabel dalam R : 1. Variabel berupa kombinasi huruf, angka, titik dan garis bawah (underscore). 2. Harus diawali dengan huruf atau titik, jika berawal dengan titik, selanjutnya tidak bisa menggunakan angka. 3. Syntax R tidak dapat digunakan sebagai nama variabel. 4. 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 :
s <- "Assalamualaikum"
s1 <- 'Assalamualaikum w.w.'
s2 <- "Assalamualaikum warahmatullahi wabarakatuh"
print(s) #Hasil : "Assalamualaikum"
## [1] "Assalamualaikum"
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.
###Numerik
#Note: Bilangan Bulat/Integer
x=2L
typeof(x)
## [1] "integer"
#Note: Bilangan Real/Double
y=2
typeof(y)
## [1] "double"
#Note: Bilangan Kompleks/Complex
# z=a+bi, i=akar(-1)
z=2+3i
typeof(z)
## [1] "complex"
### Karakter
#Note: Karakter/Huruf/String
#pakai tanda petik ("")
a="Nama"
typeof(a)
## [1] "character"
#Note: Logical/Nilai Kebenaran Proposisi
b=FALSE
typeof(b)
## [1] "logical"
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).
#Inisialisasi Vektor
x <- c(1, 5, 4, 9, 0)
y <- c(1, 5.4, TRUE, "hello")
print(y) #Hasil "5.4", Indeks pada R dimulai dari angka 1 bukan 0
## [1] "1" "5.4" "TRUE" "hello"
#Operasi Vektor
x <- c(1, 2, 3, 4, 5)
y <- c(1, 1, 1, 1, 1)
print(x + y) #Tiap elemen vector akan ditambahkan
## [1] 2 3 4 5 6
#Mengakses isi Vektor
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)
## [1] 2 1 0 -1 -2
print(y[c(1,2)]) #hanya menampilkan index pertama dan kedua dari y
## [1] 2 1
print(y[y<0]) #filter y, tampilkan nilai dibawah 0
## [1] -1 -2
print(z[c("dua")]) #menampilkan index dengan string
## dua
## 4
#Memodifikasi anggota vektor
x[2] <- 5 #memodifikasi index kedua dengan nilai 5
x <- x[1:3] #memotong index jadi hanya 3
print(x)
## [1] 1 5 3
Operator Untuk Vektor
Aritmatik : +,–,*,/,(,)
Pangkat : ^
Modulus : %%
Pembagian integer : %/%
Komparasi : <,>,<=,>=,==,!=
Logikal : ! (NOT),& (AND untuk vector),&& (AND),
| (OR untuk vector),|| (OR)
Set variabel : <-, <<- (untuk variabel global), =,->,
->>(untuk variabel global)
Jika Vector menyimpan nilai 1 dimensi maka Matrix dapat menyimpan nilai 2 dimensi.
a <- matrix(1:9, nrow = 3, ncol = 3) #diisi baris dulu
print('Matriks A')
## [1] "Matriks A"
print(a)
## [,1] [,2] [,3]
## [1,] 1 4 7
## [2,] 2 5 8
## [3,] 3 6 9
b <- matrix(1:9, nrow = 3, ncol = 3, byrow = TRUE) #diisi kolom dulu
print('Matriks B')
## [1] "Matriks B"
print(b)
## [,1] [,2] [,3]
## [1,] 1 2 3
## [2,] 4 5 6
## [3,] 7 8 9
colnames(a) <- c("K1","K2","K3") #memberi nama index kolom
rownames(a) <- c("B1","B2","B3") #memberi nama index baris
print (a)
## K1 K2 K3
## B1 1 4 7
## B2 2 5 8
## B3 3 6 9
#Membuat Matrix dengan menggabungkan dari 2 Vector
C<-cbind(c(1,2,3),c(4,5,6)) #digunakan untuk menggabungkan kolom
print("Matriks C")
## [1] "Matriks C"
print(C)
## [,1] [,2]
## [1,] 1 4
## [2,] 2 5
## [3,] 3 6
D<-rbind(c(1,2,3),c(4,5,6)) #digunakan untuk menggabungkan baris
print("Matriks D")
## [1] "Matriks D"
print(D)
## [,1] [,2] [,3]
## [1,] 1 2 3
## [2,] 4 5 6
#Mengakses Matrix
E <- matrix(1:9, nrow = 3, ncol = 3) #diisi baris dulu
print("Matriks E")
## [1] "Matriks E"
print(E)
## [,1] [,2] [,3]
## [1,] 1 4 7
## [2,] 2 5 8
## [3,] 3 6 9
print(a[2,3]) #menampilkan baris ke-2 kolom ke-3
## [1] 8
print(a[2,]) #menampilkan semua baris ke-2
## K1 K2 K3
## 2 5 8
print(a[,3]) #menampilkan semua baris ke-3
## B1 B2 B3
## 7 8 9
print(a[c(1,2),c(2,3)]) #menampilkan potongan matrix dari titik kiri atas sampai kanan bawah
## K2 K3
## B1 4 7
## B2 5 8
print(a[-1,]) #menampilkan semua kecuali baris ke-1
## K1 K2 K3
## B2 2 5 8
## B3 3 6 9
print(t(a)) #menampilkan transpose matrix
## B1 B2 B3
## K1 1 2 3
## K2 4 5 6
## K3 7 8 9
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)
## [[1]]
## [1] 5.5
##
## [[2]]
## [1] TRUE
##
## [[3]]
## [1] 1 2 3 4 5
x <- list("a" = 5.5, "b" = TRUE, "c" = 1:5)
str(x) #str dipakai untuk melihat stuktur dari jenis data structure
## List of 3
## $ a: num 5.5
## $ b: logi TRUE
## $ c: int [1:5] 1 2 3 4 5
print(x[1]) #menampilkan list index pertama
## $a
## [1] 5.5
print(x[[1]]) #menampilkan value dari list index pertama
## [1] 5.5
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", "Bambang", "Agus"),
"Umur" = c(21,28,30),
"Tanggal.Lahir" = c("1997–02–05",
"1990–07–23","1988–12–13")
)
print(df)
## ID Nama Umur Tanggal.Lahir
## 1 1 Budi 21 1997–02–05
## 2 2 Bambang 28 1990–07–23
## 3 3 Agus 30 1988–12–13
Mengakses variabel dalam dataframe
print(df["Nama"]) #menampilkan kolom nama, sama dengan print(df[2])
## Nama
## 1 Budi
## 2 Bambang
## 3 Agus
print(df$Nama) #menampilkan kolom nama dan diubah menjadi vector
## [1] Budi Bambang Agus
## Levels: Agus Bambang Budi
print(df[2,2:3]) #menampilkan kolom nama dan umur Agus (baris 2)
## Nama Umur
## 2 Bambang 28
Memodifikasi Data Frame
df <- data.frame("ID" = c(1,2,3),
"Nama" = c("Budi", "Bambang", "Agus"),
"Umur" = c(21,28,30),
"Tanggal.Lahir" = c("1997–02–05",
"1990–07–23","1988–12–13")
)
print(df)
## ID Nama Umur Tanggal.Lahir
## 1 1 Budi 21 1997–02–05
## 2 2 Bambang 28 1990–07–23
## 3 3 Agus 30 1988–12–13
df[2,"Nama"] <- "Mahmud"
## Warning in `[<-.factor`(`*tmp*`, iseq, value = "Mahmud"): invalid factor level,
## NA generated
print(df)
## ID Nama Umur Tanggal.Lahir
## 1 1 Budi 21 1997–02–05
## 2 2 <NA> 28 1990–07–23
## 3 3 Agus 30 1988–12–13
Tempat.Lahir <- c("Jakarta","Sorong","Bandung")
df <- cbind(df, Tempat.Lahir)
print(df)
## ID Nama Umur Tanggal.Lahir Tempat.Lahir
## 1 1 Budi 21 1997–02–05 Jakarta
## 2 2 <NA> 28 1990–07–23 Sorong
## 3 3 Agus 30 1988–12–13 Bandung
df["Tempat.Lahir"] <- NULL #hapus kolom
df <- rbind(df,list(4,"Ani",19,"1999-10-30")) #tambah baris
## Warning in `[<-.factor`(`*tmp*`, ri, value = "Ani"): invalid factor level, NA
## generated
## Warning in `[<-.factor`(`*tmp*`, ri, value = "1999-10-30"): invalid factor
## level, NA generated
print(df)
## ID Nama Umur Tanggal.Lahir
## 1 1 Budi 21 1997–02–05
## 2 2 <NA> 28 1990–07–23
## 3 3 Agus 30 1988–12–13
## 4 4 <NA> 19 <NA>
df <- 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","Laki-laki","Perempuan"),
levels <- c("Laki-laki","Perempuan"))
print(x)
## [1] Laki-laki Perempuan Laki-laki Perempuan
## Levels: Laki-laki Perempuan
levels(x) <- c(levels(x), "Tidak jelas") #untuk menambah level baru
print(x)
## [1] Laki-laki Perempuan Laki-laki Perempuan
## Levels: Laki-laki Perempuan Tidak jelas
#Percabangan
##If, else if, dan else
x <- 0
if (x < 0) {
print("Negatif")
} else if (x > 0) {
print("Positif")
} else
print("Nol")
## [1] "Nol"
##Ifelse
a <- c(6,3,2,9)
ifelse(a %% 2 == 0, "genap", "ganjil")
## [1] "genap" "ganjil" "genap" "ganjil"
##Switch
a <- 2
switch(a,"merah", "hijau", "biru")
## [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)
## [1] 3
##While
i <- 1
while (i < 4) {
print(i)
i = i + 1
}
## [1] 1
## [1] 2
## [1] 3
##Repeat
x <- 1
repeat {
print(x)
x = x + 1
if (x == 3) {
break
}
}
## [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))
## [1] "Pangkat 3 dari 2 adalah : 8"