Di R, operasi matematika dasar seperti penjumlahan, pengurangan, perkalian, pembagian, dan perpangkatan dapat dilakukan dengan mudah. Syntax ini menunjukkan cara penggunaannya secara langsung.
16+21 #penjumlahan
## [1] 37
5-1 #pengurangan
## [1] 4
4*4 #perkalian
## [1] 16
10/2 #pembagian
## [1] 5
2^3 #pangkat
## [1] 8
Variabel di R digunakan untuk menyimpan nilai, baik angka, teks,
maupun data lainnya. Dengan menggunakan operator <-,
kita dapat mendefinisikan variabel untuk mempermudah pengolahan data dan
perhitungan.
a <- 15 #membuat variabel 'a' dan mengisinya dengan nilai 15
b <- 4 #membuat variabel 'b' dan mengisinya dengan nilai 4
c <- a+b #membuat variabel 'c' yang berisi hasil penjumlahan 'a' dan 'b'
c #menampilkan nilai dari variabel 'c'
## [1] 19
R memiliki berbagai struktur data seperti vektor, faktor, matriks, data frame, dan list. Struktur data ini memungkinkan penyimpanan serta pengolahan data dengan cara yang efisien sesuai kebutuhan analisis.
vektor <- c(1,2,3,4,5) #membuat vektor numerik dengan nilai 1 hingga 5
vektor #menampilkan isi vektor
## [1] 1 2 3 4 5
Vektor karakter di R digunakan untuk menyimpan kumpulan teks dalam
satu struktur data. Dibuat dengan c(), vektor ini berguna
untuk mengelola data kategori atau string.
warna <- c("Burgundy", "Gold", "Emerald", "Brown", "Black", "Burgundy", "Emerald")
warna #menampilkan isi vektor karakter
## [1] "Burgundy" "Gold" "Emerald" "Brown" "Black" "Burgundy" "Emerald"
Di R, vektor karakter dapat dikonversi ke faktor menggunakan
factor(). Faktor berguna untuk data kategorik dalam
analisis statistik.
warna_factor <- factor(warna) #mengubah vektor karakter menjadi faktor
Untuk menampilkan struktur faktor di R, gunakan str().
Ini membantu memahami level dalam faktor.
str(warna_factor) #menampilkan struktur dari faktor 'warna_factor'
## Factor w/ 5 levels "Black","Brown",..: 3 5 4 2 1 3 4
Level adalah kategori unik dalam faktor. Gunakan
levels() untuk menampilkan level dalam faktor di R.
levels(warna_factor) #menampilkan level atau kategori unik dalam faktor
## [1] "Black" "Brown" "Burgundy" "Emerald" "Gold"
Gunakan table() untuk melihat frekuensi tiap kategori
dalam faktor. Ini berguna untuk analisis data kategorikal.
table(warna_factor) #menampilkan frekuensi masing-masing kategori dalam faktor
## warna_factor
## Black Brown Burgundy Emerald Gold
## 1 1 2 2 1
Di R, list dapat menyimpan berbagai jenis data dalam satu struktur.
Gunakan list() untuk membuatnya. Ini membuat list sangat
fleksibel. Fungsi print() digunakan untuk menampilkan seluruh isi list.
Ini membantu melihat data yang disimpan dalam list.
data_list <- list(
angka = c(10, 20, 30, 40),
teks = c("A", "B", "C"),
kategori = factor(c("Baik", "Sedang", "Buruk"))
)
print(data_list) #menampilkan seluruh isi list
## $angka
## [1] 10 20 30 40
##
## $teks
## [1] "A" "B" "C"
##
## $kategori
## [1] Baik Sedang Buruk
## Levels: Baik Buruk Sedang
Gunakan [[ ]] atau $ untuk mengakses elemen
dalam list di R.
data_list$angka #mengakses elemen 'angka' dalam list
## [1] 10 20 30 40
data_list[[2]] #mengakses elemen kedua dalam list (vektor'list')
## [1] "A" "B" "C"
Data frame di R adalah struktur data berbentuk tabel yang terdiri dari baris dan kolom, di mana setiap kolom dapat berisi tipe data berbeda. Data frame sering digunakan untuk analisis data. Gunakan data.frame() untuk membuat dataframe di R, yang berisi data dalam format tabel. Fungsi print() digunakan untuk menampilkan seluruh isi dataframe. Ini membantu melihat data dalam format tabel.
data_karyawan <- data.frame(
Nama = c("Alice", "Baron", "Chizy", "Dolby"),
Usia = c(25, 30, 27, 35),
Pekerjaan = factor(c("Pegawai", "Wirausaha", "Mahasiswa", "Pegawai"))
)
print(data_karyawan) #menampilkan dataframe
## Nama Usia Pekerjaan
## 1 Alice 25 Pegawai
## 2 Baron 30 Wirausaha
## 3 Chizy 27 Mahasiswa
## 4 Dolby 35 Pegawai
Gunakan summary(df) untuk melihat ringkasan statistik dari data frame, termasuk nilai minimum, maksimum, median, mean, dan jumlah data kosong jika ada.
summary(data_karyawan)
## Nama Usia Pekerjaan
## Length:4 Min. :25.00 Mahasiswa:1
## Class :character 1st Qu.:26.50 Pegawai :2
## Mode :character Median :28.50 Wirausaha:1
## Mean :29.25
## 3rd Qu.:31.25
## Max. :35.00
Array adalah struktur data multidimensi. Gunakan array()
untuk membuat array 3 dimensi di Fungsi print() digunakan untuk
menampilkan isi array. Ini membantu melihat data yang disimpan dalam
array.
array_data <- array(1:24, dim = c(2,3,4)) #membuat array dengan dimensi 2 baris, 3 kolom, dan 4 lapisan. Artinya, data akan disusun dalam 4 matriks berukuran 2x3.
print(array_data) #menampilkan isi array
## , , 1
##
## [,1] [,2] [,3]
## [1,] 1 3 5
## [2,] 2 4 6
##
## , , 2
##
## [,1] [,2] [,3]
## [1,] 7 9 11
## [2,] 8 10 12
##
## , , 3
##
## [,1] [,2] [,3]
## [1,] 13 15 17
## [2,] 14 16 18
##
## , , 4
##
## [,1] [,2] [,3]
## [1,] 19 21 23
## [2,] 20 22 24
Gunakan dim() untuk menampilkan dimensi array di R. Ini membantu memahami struktur array.
dim(array_data) #menampilkan jumlah baris, kolom, dan lapisan pada array.
## [1] 2 3 4
Nilai NA (Not Available) digunakan untuk merepresentasikan data yang
hilang. Kita bisa membuat vektor yang mengandung nilai NA dan melakukan
pengecekan. Gunakan NA untuk membuat vektor dengan nilai
yang belum tersedia.
nilai <- c(90, 85, NA, 75, 80, NA, 95) #membuat vektor dengan beberapa nilai NA
is.na(nilai) #mengecek apakah ada nilai NA dalam vektor
## [1] FALSE FALSE TRUE FALSE FALSE TRUE FALSE
sum(is.na(nilai)) #menghitung total nilai NA dalam vektor
## [1] 2
Sequence generation digunakan untuk membuat urutan angka dengan
interval tertentu. Gunakan seq() untuk membuat deret angka
dalam R.
x1 <- seq(0, 10, length=5) #membuat sequence dari 0 hingga 10 dengan 5 elemen
x1 #menampilkan sequence
## [1] 0.0 2.5 5.0 7.5 10.0
x2 <- seq(0, 10, length=6) #membuat deret angka dengan 6 elemen
x2
## [1] 0 2 4 6 8 10
x3 <- seq(0, 10, length=7) #membuat deret angka dengan 7 elemen
x3
## [1] 0.000000 1.666667 3.333333 5.000000 6.666667 8.333333 10.000000
#Pembulatan Pecahan Desimal Gunakan round() untuk membulatkan nilai ke bilangan bulat terdekat; ceiling() untuk membulatkan nilai ke atas; atau floor() untuk membulatkan nilai ke bawah.
round(x3) #membulatkan nilai dalam 'x3' ke bilangan bulat terdekat
## [1] 0 2 3 5 7 8 10
floor(x3) #membulatkan nilai dalam 'x3' ke bawah
## [1] 0 1 3 5 6 8 10
ceiling(x3) #membulatkan nilai dalam 'x3' ke atas
## [1] 0 2 4 5 7 9 10
Gunakan rep() untuk menduplikasi elemen vektor atau list
di R. Kita bisa mengulang seluruh vektor atau setiap elemennya secara
terpisah.
rep(c("A", "B", "C"), 5) #mengulang vektor "A", "B", "C" sebanyak 5 kali
## [1] "A" "B" "C" "A" "B" "C" "A" "B" "C" "A" "B" "C" "A" "B" "C"
rep(c("A", "B", "C"), each=5) #mengulang setiap elemen vektor "A", "B", "C" sebanyak 5 kali
## [1] "A" "A" "A" "A" "A" "B" "B" "B" "B" "B" "C" "C" "C" "C" "C"
rep(c("A", "B", "C"), each=2, 5) #mengulang setiap elemen vektor "A", "B", "C" sebanyak 2 kali, dan seluruhnya diulang 5 kali
## [1] "A" "A" "B" "B" "C" "C" "A" "A" "B" "B" "C" "C" "A" "A" "B" "B" "C" "C" "A"
## [20] "A" "B" "B" "C" "C" "A" "A" "B" "B" "C" "C"
rep(1:5, 5) #mengulang vektor 1 hingga 5 sebanyak 5 kali
## [1] 1 2 3 4 5 1 2 3 4 5 1 2 3 4 5 1 2 3 4 5 1 2 3 4 5
rep(1:5, each=5) #mengulang setiap elemen vektor 1 hingga 5 sebanyak 5 kali
## [1] 1 1 1 1 1 2 2 2 2 2 3 3 3 3 3 4 4 4 4 4 5 5 5 5 5
rep(1:5, each=2, 5) #mengulang setiap elemen vektor 1 hingga 5 sebanyak 2 kali, dan seluruhnya diulang 5 kali
## [1] 1 1 2 2 3 3 4 4 5 5 1 1 2 2 3 3 4 4 5 5 1 1 2 2 3 3 4 4 5 5 1 1 2 2 3 3 4 4
## [39] 5 5 1 1 2 2 3 3 4 4 5 5
Gunakan fungsi dasar statistika di R seperti min(), max(), mean(), median(), var(), dan cor() untuk analisis data.
#Membuat data x dan y
x <- c(3,4,5,6)
y <- c(2,3,4,5,6,6)
#Menghitung nilai statistik dasar
min(x) #nilai minimum dari vektor x
## [1] 3
max(y) #nilai maksimum dari vektor y
## [1] 6
mean(x) #rata-rata vektor x
## [1] 4.5
var(y) #menghitung variansi vektor y
## [1] 2.666667
cor(x,y[1:length(x)]) #menghitung korelasi antara vektor x dan y (panjang harus sama)
## [1] 1
range(x) #jangkauan nilai vektor x
## [1] 3 6
range(y) #jangkauan nilai vektor y
## [1] 2 6
Gunakan sample() untuk mengambil sampel acak di R.
Contoh: sample(1:10, 5) akan memilih 5 angka acak dari 1
hingga 10 tanpa pengembalian. set.seed digunakan untuk hasil sampel acak
yang konsisten. Angka di dalam kurung pada set.seed(n)
adalah nilai seed yang digunakan untuk mengontrol generator angka acak
di R. Angka bisa bebas dipilih dan tidak berpengaruh terhadap distribusi
data, hanya menentukan urutan angka acak yang sama setiap kali kode
dijalankan.
# Simulasi pelemparan koin (0 = ekor, 1 = kepala)
set.seed(1)
sample(0:1, 30, replace = TRUE) # Simulasi pelemparan koin sebanyak 30 kali
## [1] 0 1 0 0 1 0 0 0 1 1 0 0 0 0 0 1 1 1 1 0 0 0 0 0 0 0 1 0 0 1
# Simulasi pengambilan sampel huruf "A" dan "G" sebanyak 15 kali
sample(c("A", "G"), 15, replace = TRUE) # Simulasi pengambilan sampel huruf "A" dan "G"
## [1] "G" "G" "A" "G" "A" "A" "G" "A" "G" "G" "G" "G" "A" "G" "G"
# Simulasi pelemparan dadu sebanyak 30 kali
sample(1:6, 30, replace = TRUE) # Simulasi pelemparan dadu sebanyak 30 kali
## [1] 4 2 4 1 6 1 4 1 6 2 3 2 6 6 2 5 2 6 6 6 1 3 3 6 4 6 3 1 4 5
library(dplyr)
## Warning: package 'dplyr' was built under R version 4.4.2
##
## Attaching package: 'dplyr'
## The following objects are masked from 'package:stats':
##
## filter, lag
## The following objects are masked from 'package:base':
##
## intersect, setdiff, setequal, union
library(data.table)
##
## Attaching package: 'data.table'
## The following objects are masked from 'package:dplyr':
##
## between, first, last
library(ggplot2)
#membuatlah suatu variabel bernama “data” yang berupa data lokal dengan menggunakan fungsi tbl_df() yang berisikan data iris
data <- tbl_df(iris)
## Warning: `tbl_df()` was deprecated in dplyr 1.0.0.
## ℹ Please use `tibble::as_tibble()` instead.
## Call `lifecycle::last_lifecycle_warnings()` to see where this warning was
## generated.
class(data)
## [1] "tbl_df" "tbl" "data.frame"
data
## # A tibble: 150 × 5
## Sepal.Length Sepal.Width Petal.Length Petal.Width Species
## <dbl> <dbl> <dbl> <dbl> <fct>
## 1 5.1 3.5 1.4 0.2 setosa
## 2 4.9 3 1.4 0.2 setosa
## 3 4.7 3.2 1.3 0.2 setosa
## 4 4.6 3.1 1.5 0.2 setosa
## 5 5 3.6 1.4 0.2 setosa
## 6 5.4 3.9 1.7 0.4 setosa
## 7 4.6 3.4 1.4 0.3 setosa
## 8 5 3.4 1.5 0.2 setosa
## 9 4.4 2.9 1.4 0.2 setosa
## 10 4.9 3.1 1.5 0.1 setosa
## # ℹ 140 more rows
#mengambil data tersebut dari baris pertama hingga ke sepuluh dan masukkan ke dalam variabel baru yaitu data_slice
data_slice <- slice(data, 1:10)
data_slice
## # A tibble: 10 × 5
## Sepal.Length Sepal.Width Petal.Length Petal.Width Species
## <dbl> <dbl> <dbl> <dbl> <fct>
## 1 5.1 3.5 1.4 0.2 setosa
## 2 4.9 3 1.4 0.2 setosa
## 3 4.7 3.2 1.3 0.2 setosa
## 4 4.6 3.1 1.5 0.2 setosa
## 5 5 3.6 1.4 0.2 setosa
## 6 5.4 3.9 1.7 0.4 setosa
## 7 4.6 3.4 1.4 0.3 setosa
## 8 5 3.4 1.5 0.2 setosa
## 9 4.4 2.9 1.4 0.2 setosa
## 10 4.9 3.1 1.5 0.1 setosa
#mengurutkan data_slice berdasarkan nilai pada kolom Sepal.Length secara descending (terbesar ke terkecil)
arrange(data_slice, desc(data_slice$Sepal.Length))
## # A tibble: 10 × 5
## Sepal.Length Sepal.Width Petal.Length Petal.Width Species
## <dbl> <dbl> <dbl> <dbl> <fct>
## 1 5.4 3.9 1.7 0.4 setosa
## 2 5.1 3.5 1.4 0.2 setosa
## 3 5 3.6 1.4 0.2 setosa
## 4 5 3.4 1.5 0.2 setosa
## 5 4.9 3 1.4 0.2 setosa
## 6 4.9 3.1 1.5 0.1 setosa
## 7 4.7 3.2 1.3 0.2 setosa
## 8 4.6 3.1 1.5 0.2 setosa
## 9 4.6 3.4 1.4 0.3 setosa
## 10 4.4 2.9 1.4 0.2 setosa
#membuat variabel baru dengan fungsi data.table
data_table <- data.table(iris)
data_table
## Sepal.Length Sepal.Width Petal.Length Petal.Width Species
## <num> <num> <num> <num> <fctr>
## 1: 5.1 3.5 1.4 0.2 setosa
## 2: 4.9 3.0 1.4 0.2 setosa
## 3: 4.7 3.2 1.3 0.2 setosa
## 4: 4.6 3.1 1.5 0.2 setosa
## 5: 5.0 3.6 1.4 0.2 setosa
## ---
## 146: 6.7 3.0 5.2 2.3 virginica
## 147: 6.3 2.5 5.0 1.9 virginica
## 148: 6.5 3.0 5.2 2.0 virginica
## 149: 6.2 3.4 5.4 2.3 virginica
## 150: 5.9 3.0 5.1 1.8 virginica
#membuat kolom baru pada data_table dengan nama new_col menggunakan operator $ dengan elemen sama dengan kolom Species
data_table$new_col <- data_table$Species
data_table$new_col
## [1] setosa setosa setosa setosa setosa setosa
## [7] setosa setosa setosa setosa setosa setosa
## [13] setosa setosa setosa setosa setosa setosa
## [19] setosa setosa setosa setosa setosa setosa
## [25] setosa setosa setosa setosa setosa setosa
## [31] setosa setosa setosa setosa setosa setosa
## [37] setosa setosa setosa setosa setosa setosa
## [43] setosa setosa setosa setosa setosa setosa
## [49] setosa setosa versicolor versicolor versicolor versicolor
## [55] versicolor versicolor versicolor versicolor versicolor versicolor
## [61] versicolor versicolor versicolor versicolor versicolor versicolor
## [67] versicolor versicolor versicolor versicolor versicolor versicolor
## [73] versicolor versicolor versicolor versicolor versicolor versicolor
## [79] versicolor versicolor versicolor versicolor versicolor versicolor
## [85] versicolor versicolor versicolor versicolor versicolor versicolor
## [91] versicolor versicolor versicolor versicolor versicolor versicolor
## [97] versicolor versicolor versicolor versicolor virginica virginica
## [103] virginica virginica virginica virginica virginica virginica
## [109] virginica virginica virginica virginica virginica virginica
## [115] virginica virginica virginica virginica virginica virginica
## [121] virginica virginica virginica virginica virginica virginica
## [127] virginica virginica virginica virginica virginica virginica
## [133] virginica virginica virginica virginica virginica virginica
## [139] virginica virginica virginica virginica virginica virginica
## [145] virginica virginica virginica virginica virginica virginica
## Levels: setosa versicolor virginica
#membuat keys pada data_table dengan anggota keys berdasarkan kolom Speciies, dan kemudian panggil semua anggota keys dengan fungsi key()
setkey(data_table, Species)
key(data_table)
## [1] "Species"
#menghitung mean, interquartile, dan median dari data Sepal.Length berdasarkan grup yang diperoleh dari Species dengan fungsi by
data_table[,.(mean=mean(Sepal.Length), IQR=IQR(Sepal.Length), median=median(Sepal.Length)), by=Species]
## Key: <Species>
## Species mean IQR median
## <fctr> <num> <num> <num>
## 1: setosa 5.006 0.400 5.0
## 2: versicolor 5.936 0.700 5.9
## 3: virginica 6.588 0.675 6.5
#membuat plot data dengan menggunakan ggplot2 dan simpan plot dalam variabel plot_data. Kemudian tampilkan plot tersebut.
plot_data <- ggplot(data,aes(x=Sepal.Length, y=Sepal.Width)) + geom_point(aes(colour=Species))
plot_data
nama_vector <- c(5, FALSE, "true", "8.3", "Statistika")
nama_vector
## [1] "5" "FALSE" "true" "8.3" "Statistika"
Hasil output menunjukkan bahwa angka 5 dan FALSE berubah menjadi “5” dan “FALSE”, yang berarti semua elemen dalam vektor dikonversi ke tipe data karakter (character). Hal ini terjadi karena dalam R, ketika vektor dibuat dengan elemen campuran (numeric, logical, dan character), maka R akan melakukan coercion (konversi tipe data) ke tipe data yang memiliki tingkat prioritas tertinggi.Urutan prioritas tipe data di R: logical < numeric < character.Jika ingin mempertahankan tipe data aslinya, sebaiknya tidak mencampur tipe data dalam satu vektor.
contoh_list <- list(5, FALSE, "true", "8.3", "Statistika")
contoh_list
## [[1]]
## [1] 5
##
## [[2]]
## [1] FALSE
##
## [[3]]
## [1] "true"
##
## [[4]]
## [1] "8.3"
##
## [[5]]
## [1] "Statistika"
Perbedaan list dan vector: 1. Vector menampilkan elemen dalam satu baris dan mengonversi semua elemen ke tipe data yang sama (coercion), sehingga semua elemen dalam nama_vector menjadi karakter. 2. List menampilkan setiap elemen dalam indeksnya sendiri dan mempertahankan tipe data asli dari setiap elemen, sehingga angka tetap angka, boolean tetap boolean, dan string tetap string.
#membuat data frame
kelompok_kkn <- data_frame(
nama = c("Nero", "Michi", "Alice", "Baron", "Chizy", "Dolby", "Mimi", "Song", "Ginger", "GOlden"),
nim = c("140001", "140011", "140021", "140022", "140023", "140024", "140031", "140032", "140041", "140042"),
prodi = c("Kedokteran", "Ilmu Hukum", "Tata Busana", "Tata Boga", "Bisnis", "Keperawatan", "Psikologi", "Seni Rupa", "Teknik Geodesi", "Desain Interior")
)
## Warning: `data_frame()` was deprecated in tibble 1.1.0.
## ℹ Please use `tibble()` instead.
## This warning is displayed once every 8 hours.
## Call `lifecycle::last_lifecycle_warnings()` to see where this warning was
## generated.
kelompok_kkn #menampilkan data frame
## # A tibble: 10 × 3
## nama nim prodi
## <chr> <chr> <chr>
## 1 Nero 140001 Kedokteran
## 2 Michi 140011 Ilmu Hukum
## 3 Alice 140021 Tata Busana
## 4 Baron 140022 Tata Boga
## 5 Chizy 140023 Bisnis
## 6 Dolby 140024 Keperawatan
## 7 Mimi 140031 Psikologi
## 8 Song 140032 Seni Rupa
## 9 Ginger 140041 Teknik Geodesi
## 10 GOlden 140042 Desain Interior
#Pemanggilan Baris
kelompok_kkn[4, ] #memanggil baris keempat
## # A tibble: 1 × 3
## nama nim prodi
## <chr> <chr> <chr>
## 1 Baron 140022 Tata Boga
Sintaks [baris, ] digunakan untuk mengambil seluruh elemen dalam baris tertentu.
#Pemanggilan Kolom
kelompok_kkn$nama
## [1] "Nero" "Michi" "Alice" "Baron" "Chizy" "Dolby" "Mimi" "Song"
## [9] "Ginger" "GOlden"
Pemanggilan menggunakan $ digunakan untuk mengambil seluruh isi dari satu kolom dalam bentuk vector.
#Pemanggilan Elemen
kelompok_kkn[3, 2] #memanggil elemen di baris ke-3 dan kolom ke-2 (NIM Alice)
## # A tibble: 1 × 1
## nim
## <chr>
## 1 140021
Sintaks [baris, kolom] digunakan untuk mengambil satu elemen spesifik dalam data frame.
#membuat data frame
data_pembeli <- data.frame(
nama = c("Ifa", "Zara", NA, "Thala", "Aby", NA, "Rifda", NA, "Nindi"),
usia = c(NA, 26, NA, 22, 25, 21, NA, 25, 20)
)
data_pembeli
## nama usia
## 1 Ifa NA
## 2 Zara 26
## 3 <NA> NA
## 4 Thala 22
## 5 Aby 25
## 6 <NA> 21
## 7 Rifda NA
## 8 <NA> 25
## 9 Nindi 20
# Mengecek nilai yang hilang
is.na(data_pembeli)
## nama usia
## [1,] FALSE TRUE
## [2,] FALSE FALSE
## [3,] TRUE TRUE
## [4,] FALSE FALSE
## [5,] FALSE FALSE
## [6,] TRUE FALSE
## [7,] FALSE TRUE
## [8,] TRUE FALSE
## [9,] FALSE FALSE
# Menghitung jumlah nilai NA dalam data frame
sum(is.na(data_pembeli))
## [1] 6
Dalam data_pembeli, terdapat 6 data yang hilang (NA) yang tersebar di kolom nama dan usia. Dengan is.na() dan sum(is.na()), kita dapat mendeteksi dan menganalisis missing value dengan mudah. Perintah is.na(data_pembeli) menghasilkan matriks TRUE menunjukkan nilai yang hilang (NA) dan FALSE menunjukkan nilai yang ada.