Variabel

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"

Tipe Data Variabel

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"

Struktur Data Pada R

Vektor

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)

Matriks

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

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)
## [[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

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"