Pengantar R

Author

Windi Pangesti

Pendahuluan

R is a scripting language for statistical data manipulation and analysis. It was inspired by, and is mostly compatible with, the statistical language S developed by AT&T. The name S, for statistics, was an allusion to another programming language with a one-letter name developed at AT&T—the famous C language. S later was sold to a small firm, which added a graphical user interface (GUI) and named the result S-Plus. (Matloff, 2011)

R adalah bahasa pemrograman skrip untuk manipulasi dan analisis data statistik. Bahasa ini terinspirasi dari, dan sebagian besar kompatibel dengan, bahasa statistik S yang dikembangkan oleh AT&T. Nama S, yang merupakan singkatan dari statistics, merupakan kiasan terhadap bahasa pemrograman lain dengan nama satu huruf yang juga dikembangkan di AT&T—yaitu bahasa C yang terkenal. Kemudian, S dijual ke sebuah perusahaan kecil yang menambahkan antarmuka grafis (GUI) dan menamainya sebagai S-Plus. (Matloff, 2011)

R adalah bahasa pemrograman yang bersifat interpreter, artinya setiap perintah yang kita tulis akan langsung dijalankan oleh R tanpa perlu proses kompilasi. R juga bersifat interaktif, sehingga kita bisa mengetik perintah, mengeksekusinya, dan langsung melihat hasilnya di layar.

Memasukkan Nilai ke Objek di R

Apa itu Objek di R?

Objek adalah wadah untuk menyimpan suatu nilai atau data. Di R, kita bisa membuat objek menggunakan operator assignment. Ada tiga cara utama untuk memasukkan nilai ke objek:

Operator Assignment Format Umum Contoh Keterangan
<- obj <- expr x <- 10 Cara paling umum dan direkomendasikan
= obj = expr x = 10 Sama artinya, tapi jarang dipakai
-> expr -> obj 10 -> x Nilai di kiri dimasukkan ke variabel kanan

Dalam R, sangat disarankan untuk menggunakan tanda <- sebagai operator assigment. obj <- expr berarti masukkan nilai hasil dari operasi di sisi kanan (expr) ke dalam objek di sisi kiri (obj).

Contoh Dasar Memasukkan Nilai

# Cara 1: Menggunakan operator <-
a <- 5
b <- 10

Artinya, kita memasukkan nilai 5 ke dalam objek a dan nilai 10 ke dalam objek b.

# Cara 2: Menggunakan operator =
c = 15
# Cara 3: Assignment kanan-ke-kiri
20 -> d

Untuk menampilkan nilai yang ada di suatu Objek, kita cukup mengetikkan nama variabel terkait lalu enter, contohnya

a
[1] 5
b
[1] 10
c
[1] 15
d
[1] 20

atau bisa juga dengan fungsi print():

print(a)
[1] 5

Contoh lainnya adalah

e <- 14+12
print(e)
[1] 26

Working Directory

Apa itu working directory?

Working Directory (folder kerja) adalah lokasi atau direktori aktif tempat R menjalankan semua proses saat ini. Semua proses membaca dan menyimpan file akan dilakukan secara default di working directory tersebut.

Mengecek working directory saat ini

Untuk mengetahui working directory yang sedang digunakan, gunakan fungsi getwd():

getwd()
[1] "D:/S2/Praktikum-STA1341"

"D:/S2/Praktikum-STA1341" merupakan working directory yang saya gunakan untuk membuat materi ini.

Mengganti working directory

Untuk mengganti working directory, gunakan fungsi setwd() dengan menuliskan alamat directory tujuan:

setwd("D:/Statistika dan Sains Data IPB")

Jika kita mengecek working directory saat dengan getwd(), maka akan menghasilkan

getwd()
[1] "D:/Statistika dan Sains Data IPB"

Terlihat bahwa working directory saat ini adalah "D:/Statistika dan Sains Data IPB"

Pastikan saat menulis lokasi folder atau nama file di R, gunakan format path yang benar. Ada dua hal penting:

Mengakses Lokasi Folder atau File dengan Benar

Pastikan saat menulis lokasi folder atau nama file di R, gunakan format path yang benar. Ada beberapa hal penting yang perlu diperhatikan.

Gunakan Slash (/) atau Double Backslash (\\)** Pada Windows, tanda backslash (\) digunakan di Explorer, tapi di R harus diganti dengan slash (/) atau double backslash (\\).

Contoh salah

setwd("D:\R Project\Materi")   # ERROR!

Contoh benar

setwd("D:/R Project/Materi")   # Disarankan

# atau
setwd("D:\\R Project\\Materi") # Alternatif aman

Untuk mengakses file yang berada dalam folder kerja, cukup menuliskan nama filenya saja, misalnya

data <- read.csv("Data.csv")

Jika kesulitan menentukan lokasi file, gunakan fungsi file.choose():

data <- read.csv(file.choose())

R akan membuka jendela file picker, sehingga kita bisa memilih file langsung tanpa mengetik path.

💡 Tips Penting:

  • Gunakan slash (/) untuk menghindari error.
  • Jika menggunakan backslash (\), tulis ganda menjadi \\.
  • Selalu gunakan tanda kutip "..." untuk path dan nama file.

Penamaan Objek di R

Segala hal dalam R dipandang sebagai objek, misalnya data, fungsi, dan lain-lain. Objek-objek tersebut dapat “diberi nama” dengan apapun yang kita mau. Pada contoh sebelumnya, kita mempunyai objek dengan nama a, b, c, d dan e. Meskipun demikian, ada beberapa aturan penamaan objek dalam R yang harus dipenuhi, yaitu:

  • Menggunakan kombinasi alfabet (a-z, A-Z), angka (0-9), titik (.) atau underscore (_),

  • Hanya dapat diawali oleh alfabet, titik atau underscore dan tidak boleh diawali dengan angka,

  • Tidak mengandung spasi, tab atau karakter khusus seperti !, @, #,

  • Sebaiknya tidak menggunakan penamaan atau nilai yang sudah digunakan oleh R, seperti c, df, rnorm dan lainnya.

Ketika membuat sebuah program dalam R (atau bahasa pemrograman apapun), disarankan untuk menggunakan penamaan yang lazim dan konsisten, seperti:

Gaya Penamaan Contoh
alllowercase data
period.separated data.hasil
underscore_separated data_hasil
lowerCamelCase dataHasilPanen
UpperCamelCase DataHasilPanen

💡 Meskipun diizinkan, penggunaan underscore (_) sebaiknya dihindari karena jarang diterapkan di R.

R bersifat case-sensitive baik dalam penamaan objek maupun isi dari objek tersebut. Huruf kecil dan huruf besar menunjukkan hal berbeda. ABC berbeda dengan abc, berbeda pula dengan Abc maupun AbC dan seterusnya. Contohnya adalah

Operator Operasi pada R

Terdapat sejumlah operator operasi yang penting untuk diketahui, antara lain:

Operator Aritmatika

Dalam operator aritmatika, apabila tidak ditetapkan urutan perhitungan menggunakan tanda kurung, maka R akan mengikuti aturan prioritas operasi matematika. Perkalian dan pembagian akan dihitung terlebih dahulu sebelum penjumlahan dan pengurangan.

Operator Keterangan Contoh Output
+ Penjumlahan 5 + 3 8
- Pengurangan 5 - 3 2
* Perkalian 5 * 3 15
/ Pembagian 10 / 2 5
^ / ** Pemangkatan 2 ^ 3 8
%% Sisa bagi (modulus) 10 %% 3 1
%/% Pembagian bulat 10 %/% 3 3
%*% Perkalian matriks A %*% B Matriks

Contoh Penggunaan Operator Aritmatika:

a <- 5
b <- 3

tambah      <- a + b   # Penjumlahan
kurang      <- a - b   # Pengurangan
kali        <- a * b   # Perkalian
bagi        <- a / b   # Pembagian
pangkat     <- a^b     # Pangkat
mod   <- a %% b  # Modulus (sisa bagi)

tambah
[1] 8
kurang
[1] 2
kali
[1] 15
bagi
[1] 1.666667
pangkat
[1] 125
mod
[1] 2

Operator perbandingan

Operator relasi digunakan untuk membandingkan satu objek dengan objek lainnya.

Operator Keterangan Contoh Output
== Sama dengan 5 == 5 TRUE
!= Tidak sama dengan 5 != 3 TRUE
> Lebih besar 5 > 3 TRUE
< Lebih kecil 5 < 3 FALSE
>= Lebih besar sama 5 >= 5 TRUE
<= Lebih kecil sama 3 <= 5 TRUE

Contoh Penggunaan Operator Perbandingan:

a <- 5
b <- 3

a == b   # Sama dengan
[1] FALSE
a != b   # Tidak sama dengan
[1] TRUE
a > b    # Lebih besar
[1] TRUE

Operator Logika

Operator logika digunakan untuk menggabungkan atau memodifikasi beberapa kondisi perbandingan. Hasil dari operator logika selalu berupa nilai logika, yaitu TRUE atau FALSE

Operator Keterangan Contoh Output
& AND elementwise c(TRUE, FALSE) & c(TRUE, TRUE) TRUE FALSE
&& AND tunggal (5 > 3) && (2 < 4) TRUE
| OR elementwise c(TRUE, FALSE) | c(FALSE, TRUE) TRUE TRUE
|| OR tunggal (5 > 3) || (2 > 4) TRUE
! NOT !TRUE FALSE

Contoh Penggunaan Operator Logika:

(5 > 3) && (2 < 4)
[1] TRUE

Operator Penugasan

Operator penugasan digunakan untuk menyimpan nilai ke dalam suatu objek (variabel). Dalam R, operator ini digunakan untuk memberikan nilai hasil perhitungan atau data ke sebuah nama objek sehingga dapat digunakan kembali.

Operator Keterangan Contoh
<- Penugasan ke kiri x <- 10
-> Penugasan ke kanan 10 -> x
= Alternatif assign x = 10
<<- Penugasan global x <<- 5

Operator Lain

Operator Keterangan Contoh
$ Mengakses elemen list/df df$kolom1
[ Mengambil subset x[1:3]
[[ Mengambil elemen tunggal list[[2]]
: Urutan angka 1:51 2 3 4 5
~ Formula statistik y ~ x

Input Data dari Penyimpanan

R dapat mengambil file yang sudah tersimpan dengan format csv, xlsx, txt, shp, atau sebagainya sesuai kebutuhan.

Data dengan Format xls atau xlsx

Untuk format ini, dibutuhkan package tambahan yaitu readxl, silahkan install package terlebih dahulu, lalu jalankan.

#install.packages("readxl")
library(readxl)

Setelah berhasil melakukan install package dan memanggil package, maka dapat langsung mengambil file yang disimpan dengan fungsi readxl(). Fungsi yang digunakan, yaitu readxl::read_xlsx(“Path/NamaFile.xlsx”). Perlu diperhatikan untuk path merupakan lokasi file tersimpan, pastikan lokasi penyimpanan benar dan simbol pemisah yang digunakan adalah / bukan \. data yang digunakan unduh disini

phone <- read_excel("D:/S2/Praktikum-STA1341/Data_contoh.xlsx")
head(phone)
# A tibble: 6 × 2
  Phone                   SAR
  <chr>                 <dbl>
1 Apple iPhone 4S       1.11 
2 BlackBerry Pearl 8120 1.48 
3 BlackBerry Tour 9630  1.43 
4 Cricket TXTM8         1.3  
5 HP/Palm Centro        1.09 
6 HTC One V             0.455

Jika file berada di dalam working directory, maka tidak perlu menuliskan lokasi penyimpanan secara lengkap. Cukup tuliskan nama file saja.

phone <- read_excel("Data_contoh.xlsx")
head(phone)
# A tibble: 6 × 2
  Phone                   SAR
  <chr>                 <dbl>
1 Apple iPhone 4S       1.11 
2 BlackBerry Pearl 8120 1.48 
3 BlackBerry Tour 9630  1.43 
4 Cricket TXTM8         1.3  
5 HP/Palm Centro        1.09 
6 HTC One V             0.455

Data dengan Format csv

Data dengan format csv dapat dipanggil dengan fungsi read.csv("Path/NamaFile.csv") tanpa menggunakan package. Pada fungsi read.csv(), dapat ditambahkan fungsi sep = "" untuk menjelaskan tanda pisah yang terdapat pada file csv yang dimiliki. Jika tanda pisah menggunakan tanda , maka dapt ditulis dengan sep = "," dan seterusnya. data yang digunakan unduh disini

phone <- read.csv("D:/S2/Praktikum-STA1341/Data_contoh2.csv", sep = ",")
head(phone)
                        Phone.SAR
Apple iPhone 4S;1              11
BlackBerry Pearl 8120;1        48
BlackBerry Tour 9630;1         43
Cricket TXTM8;1                 3
HP/Palm Centro;1                9
HTC One V;0                   455

Jika file berada di dalam working directory, maka tidak perlu menuliskan lokasi penyimpanan secara lengkap. Cukup tuliskan nama file saja.

phone <- read.csv("Data_contoh2.csv", sep = ",")
head(phone)
                        Phone.SAR
Apple iPhone 4S;1              11
BlackBerry Pearl 8120;1        48
BlackBerry Tour 9630;1         43
Cricket TXTM8;1                 3
HP/Palm Centro;1                9
HTC One V;0                   455

Install Package

Salah satu keunggulan R adalah tersedianya ribuan package (paket) yang dapat memperluas kemampuan analisis data. Package berisi kumpulan fungsi tambahan yang tidak tersedia di base R. Untuk menginstal package, gunakan fungsi install.packages(). Berikut beberapa package yang sering digunakan

install.packages("tidyverse")  # Paket untuk manipulasi dan visualisasi data
install.packages("ggplot2")    # Paket untuk visualisasi data
install.packages("dplyr")      # Paket untuk manipulasi data
install.packages("readr")      # Paket untuk membaca file
install.packages("psych")      # Paket untuk statistik deskriptif
install.packages("MASS")       # Paket untuk analisis statistik lanjutan
install.packages("readxl")     # Paket membaca file excel

Penjelasan:

  • Perintah ini hanya perlu dijalankan satu kali saja pada komputer.

  • R akan mengunduh dan menyimpan package ke dalam library lokal.

Setelah diinstal, package harus dipanggil menggunakan fungsi library() sebelum digunakan.

library(tidyverse)
library(ggplot2)
library(dplyr)
library(readr)
library(psych)
library(MASS)
library(readxl)
library(modeest)

Perintah ini harus dijalankan setiap kali memulai sesi R baru.

Statistika Deskriptif

data yang digunakan unduh disini

data <- read_excel("beratsiswa.xlsx")
head(data)  # Menampilkan 6 baris pertama
# A tibble: 6 × 2
  JenisKelamin BeratBadan
  <chr>             <dbl>
1 Perempuan            38
2 Perempuan            40
3 Perempuan            41
4 Laki-laki            41
5 Laki-laki            43
6 Laki-laki            45
library(psych)
Warning: package 'psych' was built under R version 4.5.1
summary(data$BeratBadan)
   Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
   38.0    44.5    50.0    50.7    55.0    68.0 
describe(data$BeratBadan) # Menggunakan package psych
   vars  n mean   sd median trimmed  mad min max range skew kurtosis   se
X1    1 20 50.7 8.62     50   50.12 7.41  38  68    30 0.42    -0.89 1.93
# Mengambil variabel Berat Badan
berat <- data$BeratBadan

# Ukuran Pemusatan
mean(berat)     # Mean (Rata-rata)
[1] 50.7
median(berat)   # Median
[1] 50
quantile(berat, probs = c(0.25, 0.5, 0.75)) # Kuartil
 25%  50%  75% 
44.5 50.0 55.0 
# Ukuran Penyebaran
range(berat)    # Range (Jangkauan)
[1] 38 68
diff(range(berat)) # Selisih min dan max (Range)
[1] 30
IQR(berat)      # Jarak Antar Kuartil (IQR)
[1] 10.5
var(berat)      # Varians
[1] 74.32632
sd(berat)       # Simpangan Baku
[1] 8.621271

Visualisasi Data Sederhana

# Menghitung jumlah frekuensi setiap kategori pada variabel JenisKelamin
jumlah <- table(data$JenisKelamin) 
print(jumlah)

Laki-laki Perempuan 
       11         9 
# Membuat barplot distribusi Jenis Kelamin
barplot(
  jumlah,
  col = c("#74C0FC", "#FFA94D"), 
  main = "Distribusi Jenis Kelamin",
  xlab = "Jenis Kelamin",
  ylab = "Frekuensi"
)

# Membuat pie chart distribusi Jenis Kelamin
pie(
  jumlah,
  col = c("#74C0FC", "#FFA94D"),
  main = "Distribusi Jenis Kelamin"
)

# Membuat boxplot Berat Siswa
boxplot(
  berat,
  main = "Boxplot Berat Siswa",
  ylab = "Berat (kg)",
  col = "#FFC8DD"
)

# Membuat histogram Berat Siswa 
hist(
  berat,
  main = "Histogram Berat Siswa",
  xlab = "Berat (kg)",
  col = "#A8DADC", 
  border = "white"
)

# Membuat stem-and-leaf plot untuk variabel berat
stem(berat)

  The decimal point is 1 digit(s) to the right of the |

  3 | 8
  4 | 011356779
  5 | 1335558
  6 | 368

Distribusi Normal dan t

Fungsi di R Bentuk Probabilitas Kegunaan
pnorm(z) (P(Z < z)) Mencari probabilitas kumulatif dari suatu nilai Z pada distribusi normal standar.
qnorm(p) (P(Z < z) = p) Mencari nilai Z jika diketahui probabilitas kumulatif (p).
qt(p, df) (P(T < t) = p) Mencari nilai t dari distribusi t-Student dengan derajat bebas (df).

contoh 1

Curah hujan di kota Bogor diketahui menyebar normal dengan rata-rata tingkat curah hujan 25 mm dan ragam 25 mm². Hitunglah peluang:

mu <- 25
sigma <- sqrt(25)
  1. Curah hujan di kota Bogor kurang dari 15 mm.

    p1 <- pnorm(15, mu, sigma)
    p1
    [1] 0.02275013

    jika transformasi normal baku

    z <- (15 - mu)/sigma
    pnorm(z)
    [1] 0.02275013
  2. Curah hujan di kota Bogor antara 10 mm sampai 20 mm.

    p2 <- pnorm(20, mu, sigma) - pnorm(10, mu, sigma)
    p2
    [1] 0.1573054
  3. Curah hujan di kota Bogor di atas 40 mm.

    p3 <- 1 - pnorm(40, mu, sigma)
    p3
    [1] 0.001349898

Contoh 2

Misalkan diketahui:
\[P(Z<z)=0.975\]
Tentukan nilai \(z\)

qnorm(0.975)
[1] 1.959964

Contoh dalam Uji Hipotesis

Misalkan taraf nyata: alpha = 5%

# uji satu arah kanan
alpha <- 0.05
qnorm(1 - alpha)
[1] 1.644854
# uji satu arah kiri
alpha <- 0.05
qnorm(alpha)
[1] -1.644854

Catatan

Belajar R bukan hanya tentang menulis kode, tapi tentang eksplorasi. Jangan ragu untuk bereksperimen, karena setiap langkah membawa kita lebih dekat pada pemahaman. Temukan pola, cobalah berbagai cara, dan biarkan proses trial and error menuntunmu untuk belajar dan berkembang.