Operasi Dasar

Operasi dasar matematika seperti penjumlahan, pengurangan, perkalian, pembagian, dan perpangkatan dapat langsung digunakan langsung di R. Syntax ini menunjukkan cara melakukan operasi tersebut

1+2
## [1] 3

Pembuatan Variabel

Variabel digunakan untuk menyimpan data. Di R, kita bisa membuat variabel dan mengisinya dengan nilai tertentu, lalu melakukan operasi dengan variabel tersebut.

a <- 10
b <- 5
c <- a+b
c
## [1] 15

Struktur Data Dasar

R memiliki beberapa struktur data dasar seperti vektor, faktor, list, dan dataframe. Struktur data ini digunakan untuk menyimpan dan mengelola data secara efisien.

vektor <- c(1,2,3,4,5)
vektor
## [1] 1 2 3 4 5

Membuat Vektor Karakter

Vektor karakter adalah kumpulan data teks yang disimpan dalam satu variabel. Di R, kita bisa membuat vektor karakter menggunakan fungsi c().

nama <- c("Dea", "Zidan", "Negara", "Farid", "Dea","Farid","Zidan")
nama
## [1] "Dea"    "Zidan"  "Negara" "Farid"  "Dea"    "Farid"  "Zidan"

Mengonversi ke Faktor

Faktor adalah struktur data di R yang digunakan untuk menyimpan data kategorikal. Konversi ke faktor memungkinkan kita untuk menganalisis data kategorikal dengan lebih efisien.

nama_factor <- factor(nama)

Menampilkan Struktur Faktor

Fungsi str() digunakan untuk menampilkan struktur dari suatu objek, termasuk faktor. Ini membantu memahami tipe data dan level yang ada dalam faktor.

str(nama_factor)
##  Factor w/ 4 levels "Dea","Farid",..: 1 4 3 2 1 2 4

Menampilkan Level yang ada dalam Faktor

Level adalah kategori unik dalam faktor. Fungsi levels() digunakan untuk menampilkan semua level yang ada dalam suatu faktor.

levels(nama_factor)
## [1] "Dea"    "Farid"  "Negara" "Zidan"

Frekuensi Tiap Kategori

Fungsi table() digunakan untuk menghitung frekuensi masing-masing kategori dalam faktor. Ini berguna untuk analisis data kategorikal.

table(nama_factor)
## nama_factor
##    Dea  Farid Negara  Zidan 
##      2      2      1      2

Membuat List yang Berisi Berbagai Jenis Data

List adalah struktur data yang dapat menyimpan berbagai jenis data, seperti vektor, teks, dan faktor, dalam satu objek. Ini membuat list sangat fleksibel.

data_list <- list(
  angka = c(10, 20, 30, 40),
  teks = c("A", "B", "C"),
  kategori = factor(c("Keren", "Bagus", "Cemas"))
)

Menampilkan Isi List

Fungsi print() digunakan untuk menampilkan seluruh isi list. Ini membantu melihat data yang disimpan dalam list.

print(data_list)
## $angka
## [1] 10 20 30 40
## 
## $teks
## [1] "A" "B" "C"
## 
## $kategori
## [1] Keren Bagus Cemas
## Levels: Bagus Cemas Keren

Mengakses Elemen List

Kita bisa mengakses elemen dalam list menggunakan operator $ atau [[ ]]. Ini memungkinkan kita untuk mengambil data spesifik dari list.

data_list$angka 
## [1] 10 20 30 40
data_list[[2]]
## [1] "A" "B" "C"

Membuat Dataframe

Dataframe adalah struktur data tabular yang terdiri dari baris dan kolom. Setiap kolom dapat memiliki tipe data yang berbeda, mirip dengan tabel di database.

data_cewe <- data.frame(
  Nama = c("Muti","Dea","Frida","Myiesha"),
  Usia = c(19,21,20,17),
  jabatan = factor(c("SSD","Baginda Ratu","MCC","MAN"))
)

Menampilkan Dataframe

Fungsi print() digunakan untuk menampilkan seluruh isi dataframe. Ini membantu melihat data dalam format tabel.

print(data_cewe)
##      Nama Usia      jabatan
## 1    Muti   19          SSD
## 2     Dea   21 Baginda Ratu
## 3   Frida   20          MCC
## 4 Myiesha   17          MAN

Menampilkan Ringkasan Dataframe

Fungsi summary() memberikan ringkasan statistik dari dataframe, seperti nilai minimum, maksimum, rata-rata, dan frekuensi untuk data kategorikal.

summary(data_cewe)
##      Nama                Usia               jabatan 
##  Length:4           Min.   :17.00   Baginda Ratu:1  
##  Class :character   1st Qu.:18.50   MAN         :1  
##  Mode  :character   Median :19.50   MCC         :1  
##                     Mean   :19.25   SSD         :1  
##                     3rd Qu.:20.25                   
##                     Max.   :21.00

Membuat Array 3 Dimensi

Array adalah struktur data multidimensi. Array 3 dimensi dapat digunakan untuk menyimpan data dalam bentuk matriks 3D.

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

Menampilkan Array

Fungsi print() digunakan untuk menampilkan isi array. Ini membantu melihat data yang disimpan dalam array.

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

Fungsi dim() digunakan untuk menampilkan dimensi dari array. Ini membantu memahami struktur array.

dim(array_data)
## [1] 3 4 2

Mebuat Vektor dengan Nilai NA

Nilai NA (Not Available) digunakan untuk merepresentasikan data yang hilang. Kita bisa membuat vektor yang mengandung nilai NA dan melakukan pengecekan.

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
sum(is.na(nilai))
## [1] 2

Sequence Generation

Sequence generation digunakan untuk membuat urutan angka dengan interval tertentu. Fungsi seq() membantu membuat urutan angka dengan panjang atau interval yang ditentukan.

x1 <- seq(0,10, length=5)
x1
## [1]  0.0  2.5  5.0  7.5 10.0
x2 <- seq(0,10,length=6)
x2
## [1]  0  2  4  6  8 10
x3 <- seq(0,10,length=7)  
x3
## [1]  0.000000  1.666667  3.333333  5.000000  6.666667  8.333333 10.000000

Pembulatan Pecahan Desimal

R menyediakan fungsi untuk membulatkan angka desimal, seperti round(), floor(), dan ceiling(). Fungsi ini berguna untuk mengatur presisi angka.

round(x3)
## [1]  0  2  3  5  7  8 10
floor(x3)
## [1]  0  1  3  5  6  8 10
ceiling(x3)
## [1]  0  2  4  5  7  9 10

Replicate Elements Of Vectors and Lists

Fungsi rep() digunakan untuk mengulang elemen dalam vektor atau list. Kita bisa mengulang seluruh vektor atau setiap elemennya secara terpisah.

rep(c("A","B","C"),5)
##  [1] "A" "B" "C" "A" "B" "C" "A" "B" "C" "A" "B" "C" "A" "B" "C"
rep(c("A","B","C"),each=5)
##  [1] "A" "A" "A" "A" "A" "B" "B" "B" "B" "B" "C" "C" "C" "C" "C"
rep(c("A", "B", "C"), each=2, 5) 
##  [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)
##  [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)
##  [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)
##  [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

Fungai Dasar Statistika pada R

R menyediakan fungsi statistik dasar seperti min(), max(), mean(), var(), dan cor() untuk menghitung nilai statistik dari data. Fungsi ini sangat berguna untuk analisis data.

x <- c(3, 4, 5, 6)
y <- c(2, 3, 4, 5, 6, 6)
min(x)
## [1] 3
max(x)
## [1] 6
mean(y)
## [1] 4.333333
var(y)
## [1] 2.666667
cor(x, y[1:length(x)])
## [1] 1
range(x)
## [1] 3 6
range(y)
## [1] 2 6

Simulasi Sampel Acak

Fungsi sample() digunakan untuk mengambil sampel acak dari data. Ini berguna untuk simulasi atau pengambilan sampel secara acak.

set.seed(123)
sample(0:1 , 30, replace=TRUE)
##  [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
sample(c("A","G"),15, replace = TRUE)
##  [1] "A" "G" "A" "G" "G" "A" "A" "A" "A" "G" "A" "G" "G" "A" "A"
sample(1:6, 30, replace = TRUE)
##  [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

Praktikum Manipulasi Dasar

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

Buatlah 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

Ambil 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

Urutkan data_slice berdasarkan nilai pada kolom Sepal.Length secara descending.

arrange(data_slice, data_slice$Sepal.Length)
## # A tibble: 10 × 5
##    Sepal.Length Sepal.Width Petal.Length Petal.Width Species
##           <dbl>       <dbl>        <dbl>       <dbl> <fct>  
##  1          4.4         2.9          1.4         0.2 setosa 
##  2          4.6         3.1          1.5         0.2 setosa 
##  3          4.6         3.4          1.4         0.3 setosa 
##  4          4.7         3.2          1.3         0.2 setosa 
##  5          4.9         3            1.4         0.2 setosa 
##  6          4.9         3.1          1.5         0.1 setosa 
##  7          5           3.6          1.4         0.2 setosa 
##  8          5           3.4          1.5         0.2 setosa 
##  9          5.1         3.5          1.4         0.2 setosa 
## 10          5.4         3.9          1.7         0.4 setosa

Buat suatu variabel baru bernama datatable yang memuat data iris dengan menggunakan fungsi data.table

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

Buatlah kolom baru pada tabatable dengan nama new_col menggunakan operator $ dengan elemen sama dengan kolom Species

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

Buatlah keys pada datatable dengan anggota keys berdasarkan kolom Species, dan kemudian panggil semua anggota keys dengan fungsi key()

setkey(datatable, Species)
key(datatable)
## [1] "Species"

Hitung mean, interquartile, dan median dari data Sepal.Length berdasarkan grup yang diperoleh dari Species dengan fungsi by

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

Buatlah 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

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"

Dalam fungsi ini, R akan mengonversi semua elemen dalam vektor ke tipe data character (string). 5 diubah dari integer ke dalam tipe data string.False dalam tipe data boolean diubah menjadi tipe data string.Dan 3 elemen lainnya tidak diubah karena memiliki tipe data awal string

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"

Dalam vektor, Jika ada tipe data yang berbeda, semua elemen akan dikonversi ke tipe data yang sama. Dalam List, Tidak ada konversi otomatis, setiap elemen mempertahankan tipe aslinya

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("Alga", "Farid", "Dea", "Chandy", "Negara", "Desma", "Ibnu", "Raihan", "Frida", "Muti"),
  nim = c("210001", "210002", "210003", "210004", "210005", "210006", "210007", "210008", "210009", "210010"),
  prodi = c("Matematika", "Sains Data", "Informatika", "Sistem Informasi", "Komputasi Statistik", "Teknik Sipil", "Aktuaria", "Statistika", "Psikologi", "Manajemen")
)
kelompok_kkn
##      nama    nim               prodi
## 1    Alga 210001          Matematika
## 2   Farid 210002          Sains Data
## 3     Dea 210003         Informatika
## 4  Chandy 210004    Sistem Informasi
## 5  Negara 210005 Komputasi Statistik
## 6   Desma 210006        Teknik Sipil
## 7    Ibnu 210007            Aktuaria
## 8  Raihan 210008          Statistika
## 9   Frida 210009           Psikologi
## 10   Muti 210010           Manajemen
# Pemanggilan Baris
kelompok_kkn[1, ]   # Memanggil baris pertama
##   nama    nim      prodi
## 1 Alga 210001 Matematika
# Pemanggilan Kolom
kelompok_kkn$nama    # Memanggil kolom 'nama'
##  [1] "Alga"   "Farid"  "Dea"    "Chandy" "Negara" "Desma"  "Ibnu"   "Raihan"
##  [9] "Frida"  "Muti"
kelompok_kkn[, "nim"] # Memanggil kolom 'nim' dengan nama kolom
##  [1] "210001" "210002" "210003" "210004" "210005" "210006" "210007" "210008"
##  [9] "210009" "210010"
# Pemanggilan Elemen
kelompok_kkn[1, 1]   # Memanggil elemen baris ke-1, kolom ke-1
## [1] "Alga"

Perbedaan cara pemanggilan dalam Data Frame:

Dengan indeks numerik: digunakan untuk memanggil baris, kolom, atau elemen tertentu.

Dengan nama kolom: memanggil seluruh isi kolom yang bersangkutan.

Data frame dapat berisi berbagai tipe data dalam satu struktur.

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.

na_kkn <- data.frame(
  nama = c("Alga", "Farid", "Dea", NA, "Negara", NA, "Ibnu", "Raihan", "Frida", "Muti"),
  nim = c("210001", "210002", "210003", "210004", "210005", "210006", NA, "210008", "210009", NA),
  prodi = c("Matematika", NA, "Informatika", "Sistem Informasi", "Komputasi Statistik", "Teknik Sipil", "Aktuaria", "Statistika", NA, "Manajemen")
)
na_kkn
##      nama    nim               prodi
## 1    Alga 210001          Matematika
## 2   Farid 210002                <NA>
## 3     Dea 210003         Informatika
## 4    <NA> 210004    Sistem Informasi
## 5  Negara 210005 Komputasi Statistik
## 6    <NA> 210006        Teknik Sipil
## 7    Ibnu   <NA>            Aktuaria
## 8  Raihan 210008          Statistika
## 9   Frida 210009                <NA>
## 10   Muti   <NA>           Manajemen
is.na(na_kkn)
##        nama   nim prodi
##  [1,] FALSE FALSE FALSE
##  [2,] FALSE FALSE  TRUE
##  [3,] FALSE FALSE FALSE
##  [4,]  TRUE FALSE FALSE
##  [5,] FALSE FALSE FALSE
##  [6,]  TRUE FALSE FALSE
##  [7,] FALSE  TRUE FALSE
##  [8,] FALSE FALSE FALSE
##  [9,] FALSE FALSE  TRUE
## [10,] FALSE  TRUE FALSE
which(is.na(na_kkn), arr.ind = TRUE) #Menunjukkan total nilai NA
##      row col
## [1,]   4   1
## [2,]   6   1
## [3,]   7   2
## [4,]  10   2
## [5,]   2   3
## [6,]   9   3
#Menghitung Nilai NA
sum(is.na(na_kkn))
## [1] 6