Pemrograman dalam Bahasa R

Author

Muhammad Syafiq

Rangkuman Materi

Tipe Objek Data

R mempunyai beberapa jenis mode objek dasar, atau disebut sebagai “atomic” class dari objek, yaitu:

  • character, misalnya "ipb", "mahasiswa", "statistika"

  • numeric, misalnya 12, 2.3, 1.2e-2

  • complex, misalnya 1.2e6+2i

  • logical, misalnya T, F, TRUE, FALSE

Objek di R

Terdapat beberapa tipe objek data standar dalam R, yaitu:

  • Vector: tipe sederhana dari objek data dalam R di mana setiap elemennya mempunyai mode yang sama

  • Factor: vektor dengan anggota/elemennya berupa kategori

  • Matrix: vektor yang berdimensi dua yaitu baris dan kolom

  • Array: tipe objek yang dapat menyimpan data lebih dari dua dimensi

  • Data frame: objek yang menyimpan data dalam bentuk tabular (baris dan kolom)

  • List: vektor dengan anggota/elemennya berupa objek. Mode dari elemen list boleh berbeda-beda

Vector

v_num <- c(1.5, 2.3, 5.4, 3.3)
v_seq <- seq(1, 10, by = 2)
v_rep <- rep(c("A", "B"), times = 3)
labs  <- paste(c("X", "Y"), 1:6, sep = "")
v_num
[1] 1.5 2.3 5.4 3.3
v_seq
[1] 1 3 5 7 9
v_rep
[1] "A" "B" "A" "B" "A" "B"
labs
[1] "X1" "Y2" "X3" "Y4" "X5" "Y6"

Matrix

m <- matrix(1:9, nrow = 3, ncol = 3)
v <- 1:6
dim(v) <- c(2, 3)
m
     [,1] [,2] [,3]
[1,]    1    4    7
[2,]    2    5    8
[3,]    3    6    9
v
     [,1] [,2] [,3]
[1,]    1    3    5
[2,]    2    4    6

Array

arr <- array(1:24, dim = c(3, 4, 2))
arr
, , 1

     [,1] [,2] [,3] [,4]
[1,]    1    4    7   10
[2,]    2    5    8   11
[3,]    3    6    9   12

, , 2

     [,1] [,2] [,3] [,4]
[1,]   13   16   19   22
[2,]   14   17   20   23
[3,]   15   18   21   24

Factor

warna <- factor(c("merah", "biru", "merah", "hijau"))
warna
[1] merah biru  merah hijau
Levels: biru hijau merah

List

my_list <- list(angka = 1:3, teks = c("A","B"), logis = TRUE)
my_list
$angka
[1] 1 2 3

$teks
[1] "A" "B"

$logis
[1] TRUE

Data Frame

df <- data.frame(
  nama = c("Ani","Budi","Cici"),
  umur = c(21, 22, 20),
  lulus = c(TRUE, FALSE, TRUE)
)
df
  nama umur lulus
1  Ani   21  TRUE
2 Budi   22 FALSE
3 Cici   20  TRUE

Pengolahan Objek

Operasi Aljabar Vektor

  • +, -, *, /, ^

  • Bersifat recycling jika panjang berbeda.

x <- c(2,4,6); y <- c(1,3,5)
x + y
[1]  3  7 11
x * y
[1]  2 12 30

Operasi Dasar String

  • nchar() → menghitung jumlah karakter
  • substr(x, start, stop)
  • substring(x, start, stop)
s <- "Institut Pertanian Bogor"
nchar(s)
[1] 24
substr(s, 15, 18)
[1] "nian"
substring(s, 4, 8)
[1] "titut"

Operasi Matriks

  • t() → transpose
  • %*% → perkalian matriks
  • diag() → diagonal
  • solve() → inverse
  • eigen() → nilai eigen
# 1. Membuat matriks 2x2
M <- matrix(c(1, 2, 3, 4), nrow = 2, byrow = TRUE)
M
     [,1] [,2]
[1,]    1    2
[2,]    3    4
# 2. Transpose
t(M)
     [,1] [,2]
[1,]    1    3
[2,]    2    4
# 3. Perkalian matriks
A <- matrix(c(1, 2, 3, 4), nrow = 2)
B <- matrix(c(2, 0, 1, 2), nrow = 2)
A %*% B
     [,1] [,2]
[1,]    2    7
[2,]    4   10
# 4. Matriks diagonal
diag(3)
     [,1] [,2] [,3]
[1,]    1    0    0
[2,]    0    1    0
[3,]    0    0    1
diag(M)
[1] 1 4
# 5. Inverse matriks
solve(M)
     [,1] [,2]
[1,] -2.0  1.0
[2,]  1.5 -0.5
M %*% solve(M)
     [,1]         [,2]
[1,]    1 1.110223e-16
[2,]    0 1.000000e+00
# 6. Nilai & vektor eigen
eigen(M)
eigen() decomposition
$values
[1]  5.3722813 -0.3722813

$vectors
           [,1]       [,2]
[1,] -0.4159736 -0.8245648
[2,] -0.9093767  0.5657675

Struktur Kendali

Kondisional

x <- 5
if(x > 0){
  print("positif")
} else {
  print("nol/negatif")
}
[1] "positif"

ifelse() untuk vektor:

v <- -2:2
ifelse(v > 0, "positif", "non-positif")
[1] "non-positif" "non-positif" "non-positif" "positif"     "positif"    

Looping

for
a <- 0
for(i in 1:5){
  a <- a + i
  print(a)
}
[1] 1
[1] 3
[1] 6
[1] 10
[1] 15
while
i <- 1; z <- 1
while(z < 15){
  z <- z + i
  print(z)
  i <- i + 1
}
[1] 2
[1] 4
[1] 7
[1] 11
[1] 16
repeat
i <- 1; z <- 1
repeat{
  z <- z + i
  print(z)
  i <- i + 1
  if(z > 15) break
}
[1] 2
[1] 4
[1] 7
[1] 11
[1] 16

Latihan Soal

  1. Buat sebuah vektor berisi bilangan genap dari 2 sampai 20. Hitung jumlah elemen dan rata-ratanya.

  2. Buat matriks 3×3 berisi angka 1 sampai 9. Tampilkan:

    1. Transpose-nya
    2. Determinannya
  3. Diketahui string:

    x <- "Pemrograman Statistik R"
    • Hitung jumlah karakternya
    • Ambil kata "Statistik" dengan fungsi substring
  4. Buat data.frame dengan kolom: Nama, Umur, Nilai. Isi dengan minimal 3 baris data. Tampilkan hanya baris dengan Nilai >= 80.

  5. Diberikan vektor:

    a <- 1:8
    b <- c(2, 4)

    Lakukan a * b dan jelaskan kenapa hasilnya demikian.

  6. Buat kode yang membaca satu nilai bilangan bulat x. Jika:

    • x > 0 cetak “positif”

    • x < 0 cetak “negatif”

    • x = 0 cetak “nol”

  7. Gunakan for untuk menghitung jumlah kuadrat dari 1 sampai 10. (Hint: hasil akhir = 1²+2²+…+10²).

  8. Gunakan while untuk menampilkan deret Fibonacci pertama 10 suku.

  9. Gunakan repeat untuk mencari bilangan bulat terkecil yang jika dipangkatkan 2 melebihi 200.

  10. Buatlah sebuah program R dengan ketentuan berikut:

    1. Bentuk sebuah data.frame berisi 5 orang dengan kolom Nama, Nilai.

    2. Gunakan ifelse untuk menambahkan kolom baru bernama Kategori dengan aturan:

    -   Nilai ≥ 85 → `"A"`
    
    -   Nilai 70–84 → `"B"`
    
    -   Nilai \< 70 → `"C"`
    1. Hitung rata-rata nilai tiap kategori.

Referensi: rpubs.com/alfanugraha/r-basic