Operasi Dasar

2 + 3
## [1] 5
5-1
## [1] 4
4*2
## [1] 8
10/2
## [1] 5
2^3
## [1] 8

Pembuatan Variabel

a <- 10  # Membuat variabel 'a' dan mengisinya dengan nilai 10
b <- 5   # Membuat variabel 'b' dan mengisinya dengan nilai 5
c <- a + b  # Membuat variabel 'c' yang berisi hasil penjumlahan 'a' dan 'b'
c  # Menampilkan nilai dari variabel 'c'
## [1] 15

Struktur Data Dasar

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

Mmebuat Vector Karakter

warna <- c("Merah", "Biru", "Hijau", "Merah", "Biru", "Hijau", "Merah")
warna  # Menampilkan isi vektor karakter
## [1] "Merah" "Biru"  "Hijau" "Merah" "Biru"  "Hijau" "Merah"

Mengonversi ke Faktor

warna_factor <- factor(warna)  # Mengubah vektor karakter menjadi faktor

Menampilkan Struktur Faktor

str(warna_factor)  # Menampilkan struktur dari faktor 'warna_factor'
##  Factor w/ 3 levels "Biru","Hijau",..: 3 1 2 3 1 2 3

Menampilkan Level yang Ada dalam Faktor

levels(warna_factor)  # Menampilkan level atau kategori unik dalam faktor
## [1] "Biru"  "Hijau" "Merah"

Frekuensi Tiap Kategori

table(warna_factor)  # Menampilkan frekuensi masing-masing kategori dalam faktor
## warna_factor
##  Biru Hijau Merah 
##     2     2     3

Membuat List yang Berisi Berbagai Jenis Data

data_list <- list(
  angka = c(10, 20, 30, 40),
  teks = c("A", "B", "C"),
  kategori = factor(c("Baik", "Sedang", "Buruk"))
)

Menampilkan Isi List

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

Mengakses Elemen List

data_list$angka   # Mengakses elemen 'angka' dalam list
## [1] 10 20 30 40
data_list[[2]]    # Mengakses elemen kedua dalam list (vektor 'teks')
## [1] "A" "B" "C"

Membuat Dataframe

data_karyawan <- data.frame(
  Nama = c("Andi", "Budi", "Citra", "Dewi"),  # Kolom Nama
  Usia = c(25, 30, 27, 35),                   # Kolom Usia
  Pekerjaan = factor(c("Pegawai", "Wirausaha", "Mahasiswa", "Pegawai"))  # Kolom Pekerjaan
)

Menampilkan Dataframe

print(data_karyawan)  # Menampilkan seluruh isi dataframe
##    Nama Usia Pekerjaan
## 1  Andi   25   Pegawai
## 2  Budi   30 Wirausaha
## 3 Citra   27 Mahasiswa
## 4  Dewi   35   Pegawai

Menampilkan Ringkasan Dataframe

summary(data_karyawan)  # Menampilkan ringkasan statistik dari dataframe
##      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

Membuat Array 3 Dimensi

array_data <- array(1:24, dim = c(3, 4, 2))  # Membuat array dengan dimensi 3x4x2

Menampilkan Array

print(array_data)  # Menampilkan isi array
## , , 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

Menampilkan Dimensi Array

dim(array_data)  # Menampilkan dimensi dari array
## [1] 3 4 2

Membuat Vector dengan Nilai NA

nilai <- c(90, 85, NA, 75, 80, NA, 95)  # Membuat vektor dengan beberapa nilai NA

# Mengecek nilai yang hilang
is.na(nilai)  # Mengecek apakah ada nilai NA dalam vektor
## [1] FALSE FALSE  TRUE FALSE FALSE  TRUE FALSE
# Menghitung jumlah nilai NA dalam vektor
sum(is.na(nilai))  # Menghitung total nilai NA dalam vektor
## [1] 2

Sequence Generation

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

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
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
# Membuat data x dan y
x <- c(3, 4, 5, 6)  # Membuat vektor x
y <- c(2, 3, 4, 5, 6, 6)  # Membuat vektor y
# Menghitung nilai statistik dasar
min(x)  # Menghitung nilai minimum dari vektor x
## [1] 3
max(y)  # Menghitung nilai maksimum dari vektor y
## [1] 6
mean(x)
## [1] 4.5
var(y)
## [1] 2.666667
cor(x, y[1:length(x)])
## [1] 1
range(x)  
## [1] 3 6
range(y)
## [1] 2 6
# Simulasi pelemparan koin (0 = ekor, 1 = kepala)
set.seed(123)  # Mengatur seed untuk hasil yang konsisten
sample(0:1, 30, replace = TRUE)  # Simulasi pelemparan koin sebanyak 30 kali
##  [1] 0 0 0 1 0 1 1 1 0 0 1 1 1 0 1 0 1 0 0 0 0 1 0 0 0 0 1 1 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] "A" "G" "A" "G" "G" "A" "A" "A" "A" "G" "A" "G" "G" "A" "A"
# Simulasi pelemparan dadu sebanyak 30 kali
sample(1:6, 30, replace = TRUE)  # Simulasi pelemparan dadu sebanyak 30 kali
##  [1] 1 1 2 3 4 5 5 3 6 1 2 5 5 4 5 2 1 1 3 1 6 5 1 2 4 4 6 6 3 6
library(dplyr)
## Warning: package 'dplyr' was built under R version 4.3.3
## 
## 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)
## Warning: package 'data.table' was built under R version 4.3.3
## 
## Attaching package: 'data.table'
## The following objects are masked from 'package:dplyr':
## 
##     between, first, last
library(ggplot2)
## Warning: package 'ggplot2' was built under R version 4.3.3
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
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
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
datatable <- data.table(iris)
datatable
##      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
datatable$new_col <- datatable$Species
datatable$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
setkey(datatable, Species)
key(datatable)
## [1] "Species"
datatable[,.(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
plot_data <- ggplot(data,aes(x=Sepal.Length, y=Sepal.Width)) + geom_point(aes(colour=Species)) 
plot_data

Latihan

1. Ketikkan perintah di bawah ini dan berikan pernyataan apa saja yang dapat kalian peroleh dari perintah tersebut!

nama_vector <- c(5, FALSE, "true", "8.3", "Statistika")
nama_vector
## [1] "5"          "FALSE"      "true"       "8.3"        "Statistika"

Pernyataan yang diperoleh:

  • Perintah ini membuat sebuah vektor dengan nama nama_vector yang berisi lima elemen dengan tipe data berbeda: angka (numeric), boolean (logical), dan karakter (character).
  • Namun, dalam R, semua elemen dalam satu vektor harus memiliki tipe data yang sama. Karena terdapat campuran tipe data, semua elemen dalam vektor tersebut akan dikonversi menjadi tipe data karakter (character).

2. Cobalah untuk membuat List dengan nama contoh_list yang memiliki elemen sama dengan Latihan no.1, dan panggil seluruh elemen. Berikan perbedaan list dan vector yang dapat kalian peroleh setelah melakukan perintah tersebut.

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 antara List dan Vector:

  • Vektor: Semua elemen dalam vektor harus memiliki tipe data yang sama. Jika tidak, R akan otomatis mengonversi elemen-elemen ke tipe data yang paling umum (seperti karakter).
  • List: List dapat berisi elemen dengan tipe data yang berbeda tanpa mengubah tipe data asli elemen. Jadi dalam contoh_list, masing-masing elemen akan tetap memiliki tipe datanya sendiri, misalnya angka, boolean, dan string.

3. Dalam melakukan pemanggilan elemen, kita dapat menggunakan index elemen atau nama kolom. Buatlah data frame dengan nama kelompok_kkn berupa tabel tiga kolom terdiri atas: nama,nim, dan prodi. Isikan minimal 10 baris. Lakukan eksperimen pemanggilan isi tabel, meliputi pemanggilan baris, kolom, dan elemen tabel. Jelaskan mengenai perbedaan cara pemanggilan dalam data frame tersebut.

kelompok_kkn <- data.frame(
  nama = c("Ali", "Budi", "Citra", "Dewi", "Eko", "Fadli", "Gina", "Hana", "Iwan", "Joko"),
  nim = c("A123", "B456", "C789", "D012", "E345", "F678", "G901", "H234", "I567", "J890"),
  prodi = c("Fisika", "Kimia", "Biologi", "Matematika", "Statistika", "Informatika", "Geografi", "Biologi", "Fisika", "Kimia")
)
kelompok_kkn
##     nama  nim       prodi
## 1    Ali A123      Fisika
## 2   Budi B456       Kimia
## 3  Citra C789     Biologi
## 4   Dewi D012  Matematika
## 5    Eko E345  Statistika
## 6  Fadli F678 Informatika
## 7   Gina G901    Geografi
## 8   Hana H234     Biologi
## 9   Iwan I567      Fisika
## 10  Joko J890       Kimia
#Untuk memanggil kolom tertentu:
kelompok_kkn[, "nim"]  # Memanggil kolom 'nim'
##  [1] "A123" "B456" "C789" "D012" "E345" "F678" "G901" "H234" "I567" "J890"
#Untuk memanggil baris tertentu:
kelompok_kkn[1, ]  # Memanggil baris pertama
##   nama  nim  prodi
## 1  Ali A123 Fisika
#Untuk memanggil elemen tertentu (baris ke-2, kolom 'prodi'):
kelompok_kkn[2, "prodi"]
## [1] "Kimia"

Perbedaan cara pemanggilan dalam data frame:

  • Kolom dipanggil dengan menggunakan nama kolom atau index kolom.
  • Baris dipanggil berdasarkan index baris.
  • Elemen spesifik dipanggil dengan menyebutkan indeks baris dan nama/index kolom secara bersamaan.

4. Buatlah data frame yang beberapa datanya berupa missing value. Carilah letak atau posisi data yang berupa missing value tersebut dengan menggunakan perintah is.na.

data_missing <- data.frame(
  nama = c("Ali", "Budi", NA, "Dewi", "Eko", "Fadli"),
  nilai = c(80, 90, NA, 85, 88, 92)
)
is.na(data_missing)
##       nama nilai
## [1,] FALSE FALSE
## [2,] FALSE FALSE
## [3,]  TRUE  TRUE
## [4,] FALSE FALSE
## [5,] FALSE FALSE
## [6,] FALSE FALSE

Pernyataan: Perintah is.na digunakan untuk menemukan nilai yang hilang (missing value) dalam data frame. Hasilnya adalah matriks logika yang menunjukkan posisi nilai yang hilang (TRUE jika ada missing value)