Fundamental Series — Part 4 of 20
Operator adalah simbol yang melakukan operasi pada nilai. Part ini membahas operator aritmatika, perbandingan, dan logika — bahan dasar untuk setiap perhitungan dan filter data.
Operator Aritmatika
10 + 3 # 13 — penjumlahan
10 - 3 # 7 — pengurangan
10 * 3 # 30 — perkalian
10 / 3 # 3.333... — pembagian
10 %/% 3 # 3 — pembagian bulat (floor division)
10 %% 3 # 1 — sisa bagi (modulo)
2^3 # 8 — pangkatPada Vektor (Vektorisasi)
x <- c(10, 20, 30)
x + 5 # 15 25 35
x * 2 # 20 40 60
x^2 # 100 400 900Fungsi Matematika
abs(-5) # 5
sqrt(16) # 4
log(100) # 4.605 (natural log)
log10(100) # 2 (log base 10)
exp(1) # 2.718 (e^1)
round(3.14159, 2) # 3.14
ceiling(3.2) # 4 (bulatkan ke atas)
floor(3.8) # 3 (bulatkan ke bawah)Operator Perbandingan
Menghasilkan TRUE atau FALSE:
5 == 5 # TRUE — sama dengan
5 != 3 # TRUE — tidak sama dengan
5 > 3 # TRUE — lebih besar
5 < 3 # FALSE — lebih kecil
5 >= 5 # TRUE — lebih besar atau sama
5 <= 3 # FALSE — lebih kecil atau samaPada Vektor
x <- c(10, 20, 30, 40, 50)
x > 25 # FALSE FALSE TRUE TRUE TRUE
x == 30 # FALSE FALSE TRUE FALSE FALSE
x != 10 # FALSE TRUE TRUE TRUE TRUE
Peringatan
== untuk Perbandingan, <- untuk Assignment
x == 5 # Apakah x sama dengan 5? (TRUE/FALSE)
x <- 5 # Simpan 5 ke xJangan tertukar!
Operator Logika
Menggabungkan beberapa kondisi:
# AND — keduanya harus TRUE
TRUE & TRUE # TRUE
TRUE & FALSE # FALSE
# OR — salah satu cukup TRUE
TRUE | FALSE # TRUE
FALSE | FALSE # FALSE
# NOT — membalik
!TRUE # FALSE
!FALSE # TRUEPada Vektor
x <- c(10, 20, 30, 40, 50)
# Kombinasi kondisi
x > 15 & x < 45 # FALSE TRUE TRUE TRUE FALSE
x < 20 | x > 40 # TRUE FALSE FALSE FALSE TRUE
!(x == 30) # TRUE TRUE FALSE TRUE TRUEContoh Praktis: Filter Data
df <- data.frame(
kota = c("Jakarta", "Bandung", "Surabaya", "Medan"),
populasi = c(10.5, 2.4, 2.9, 2.1),
pulau = c("Jawa", "Jawa", "Jawa", "Sumatera")
)
# Kota di Jawa dengan populasi > 3 juta
df[df$pulau == "Jawa" & df$populasi > 3, ]
# Kota di Sumatera ATAU populasi < 2.5
df[df$pulau == "Sumatera" | df$populasi < 2.5, ]Operator %in%
Mengecek apakah nilai ada dalam sebuah vektor:
5 %in% c(1, 3, 5, 7) # TRUE
4 %in% c(1, 3, 5, 7) # FALSE
kota <- c("Jakarta", "Bandung", "Medan")
kota %in% c("Jakarta", "Surabaya") # TRUE FALSE FALSESangat berguna untuk filter:
df[df$kota %in% c("Jakarta", "Surabaya"), ]Operator Precedence (Urutan Eksekusi)
R mengeksekusi operator sesuai prioritas (dari tinggi ke rendah):
| Prioritas | Operator |
|---|---|
| 1 (tertinggi) | ^ |
| 2 | - (unary, misal: -5) |
| 3 | *, / |
| 4 | +, - |
| 5 | <, >, <=, >=, ==, != |
| 6 | ! |
| 7 | & |
| 8 (terendah) | | |
# Tanpa kurung
2 + 3 * 4 # 14 (bukan 20) — perkalian dulu
# Dengan kurung — lebih jelas!
(2 + 3) * 4 # 20
TipGunakan Kurung!
Meskipun R punya aturan precedence, selalu gunakan kurung untuk kejelasan. Kode (x > 5) & (x < 10) jauh lebih mudah dibaca daripada x > 5 & x < 10.
Latihan
BahayaLatihan 4.1 — Aritmatika
# Tanpa menjalankan, prediksi hasilnya:
7 %% 3
7 %/% 3
2^3^2 # Hint: ^ bersifat right-to-left
(2^3)^2
BahayaLatihan 4.2 — Logika
x <- c(12, 5, 28, 3, 17, 45, 8, 31)
# 1. Ambil elemen yang > 10 DAN < 30
# 2. Ambil elemen yang < 5 ATAU > 40
# 3. Ambil elemen yang BUKAN kelipatan 3 (hint: x %% 3 != 0)
# 4. Berapa jumlah elemen yang > 20? (hint: sum())
BahayaLatihan 4.3 — Filter Data
data(mtcars)
# 1. Mobil dengan mpg antara 20 dan 30 (inklusif)
# 2. Mobil dengan cyl == 4 ATAU cyl == 6 (pakai %in%)
# 3. Mobil dengan hp > 100 DAN berat (wt) < 3
# 4. Berapa jumlah mobil yang memenuhi kondisi nomor 3?Ringkasan
| Operator | Fungsi | Contoh |
|---|---|---|
+ - * / |
Aritmatika dasar | 10 + 3 |
%% |
Modulo (sisa bagi) | 10 %% 3 → 1 |
%/% |
Floor division | 10 %/% 3 → 3 |
^ |
Pangkat | 2^3 → 8 |
== != > < >= <= |
Perbandingan | 5 == 5 → TRUE |
& | ! |
Logika (AND, OR, NOT) | TRUE & FALSE → FALSE |
%in% |
Keanggotaan | 5 %in% c(1,3,5) → TRUE |
Sebelumnya: Part 3 — Data Frame Selanjutnya: Part 5 — Kontrol Alur: Conditional