Operasi Dasar Matematika

R mendukung operasi matematika dasar seperti penjumlahan, pengurangan, perkalian, pembagian, dan perpangkatan.

2 + 3  # Penjumlahan
## [1] 5
5 - 1  # Pengurangan
## [1] 4
4 * 2  # Perkalian
## [1] 8
10 / 2 # Pembagian
## [1] 5
2^3    # Perpangkatan
## [1] 8

Pembuatan Variabel

Variabel digunakan untuk menyimpan nilai dan melakukan operasi pada data.

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

Struktur Data Dasar

Vektor Numerik

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

Vektor Karakter

nama <- c("Amaa", "Dytha", "Alam", "Nadya", "Akmal", "Putranti", "Ghozi")
nama
## [1] "Amaa"     "Dytha"    "Alam"     "Nadya"    "Akmal"    "Putranti" "Ghozi"

Mengonversi ke Faktor

nama_factor <- factor(nama)
str(nama_factor)
##  Factor w/ 7 levels "Akmal","Alam",..: 3 4 2 6 1 7 5
levels(nama_factor)
## [1] "Akmal"    "Alam"     "Amaa"     "Dytha"    "Ghozi"    "Nadya"    "Putranti"

Frekuensi Kategori dalam Faktor

table(nama_factor)
## nama_factor
##    Akmal     Alam     Amaa    Dytha    Ghozi    Nadya Putranti 
##        1        1        1        1        1        1        1

List dalam R

List dapat menyimpan berbagai tipe data dalam satu objek.

data_list <- list(
  angka = c(10, 20, 30, 40),
  teks = c("A", "B", "C"),
  kategori = factor(c("Baik", "Sedang", "Buruk"))
)
print(data_list)
## $angka
## [1] 10 20 30 40
## 
## $teks
## [1] "A" "B" "C"
## 
## $kategori
## [1] Baik   Sedang Buruk 
## Levels: Baik Buruk Sedang
data_list$angka
## [1] 10 20 30 40

Dataframe

Membuat dataframe sederhana untuk menyimpan data tabular.

data_karyawan <- data.frame(
  Nama = c("Akmal", "Dytha", "Amaa", "Elvan"),
  Usia = c(25, 30, 27, 35),
  Pekerjaan = factor(c("Pegawai", "Wirausaha", "Mahasiswa", "Pegawai"))
)
print(data_karyawan)
##    Nama Usia Pekerjaan
## 1 Akmal   25   Pegawai
## 2 Dytha   30 Wirausaha
## 3  Amaa   27 Mahasiswa
## 4 Elvan   35   Pegawai
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
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

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

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

##Menampilkan Dimensi Array Fungsi dim() digunakan untuk menampilkan dimensi dari array. Ini membantu memahami struktur array.

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

##Membuat 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
# Menghitung jumlah nilai NA dalam vektor
sum(is.na(nilai))  # Menghitung total nilai NA dalam vektor
## [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)  # 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 R menyediakan fungsi untuk membulatkan angka desimal, seperti round(), floor(), dan ceiling(). Fungsi ini berguna untuk mengatur presisi angka.

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

##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)  # 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

##Fungsi 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.

# 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) # Menghitung rata-rata dari vektor x
## [1] 4.5
var(y)  # Menghitung variansi dari vektor y
## [1] 2.666667
cor(x, y[1:length(x)])  # Menghitung korelasi antara vektor x dan y (panjang harus sama)
## [1] 1
# Menentukan range (jangkauan nilai)
range(x)  # Menghitung range dari vektor x
## [1] 3 6
range(y)  # Menghitung range dari vektor 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.

# 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

##Praktikum Manipulasi Dasar

library(dplyr)
## 
## 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)

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, 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

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 Speciies, 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 —————————————————–

nama_vector <- c(5, FALSE, "true", "8.3", "Statistika")
nama_vector
## [1] "5"          "FALSE"      "true"       "8.3"        "Statistika"
  1. 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"
  1. 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("AKMAL", "PRADYTHA", "FRIDARYCHA", "CHRISTANTI", "ALMANFALUTY", "GHOZI", "KEKE", "GHOZI", "GALUH", "PUTRANTI"),
  nim = c("001", "002", "003", "004", "005", "006", "007", "008", "009", "010"),
  prodi = c("Statistika", "Matematika", "Fisika", "Biologi", "Kimia", "Ekonomi", "Akuntansi", "Manajemen", "Teknik", "Hukum")
)
print(kelompok_kkn)
##           nama nim      prodi
## 1        AKMAL 001 Statistika
## 2     PRADYTHA 002 Matematika
## 3   FRIDARYCHA 003     Fisika
## 4   CHRISTANTI 004    Biologi
## 5  ALMANFALUTY 005      Kimia
## 6        GHOZI 006    Ekonomi
## 7         KEKE 007  Akuntansi
## 8        GHOZI 008  Manajemen
## 9        GALUH 009     Teknik
## 10    PUTRANTI 010      Hukum
kelompok_kkn[1, ]    # Baris pertama
##    nama nim      prodi
## 1 AKMAL 001 Statistika
kelompok_kkn[, 2]    # Kolom kedua (NIM)
##  [1] "001" "002" "003" "004" "005" "006" "007" "008" "009" "010"
kelompok_kkn[3, 1]   # Elemen baris ke-3, kolom ke-1
## [1] "FRIDARYCHA"
  1. 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_na <- data.frame(
  ID = 1:5,
  Nilai = c(90, NA, 85, NA, 80)
)
print(data_na)
##   ID Nilai
## 1  1    90
## 2  2    NA
## 3  3    85
## 4  4    NA
## 5  5    80
is.na(data_na)
##         ID Nilai
## [1,] FALSE FALSE
## [2,] FALSE  TRUE
## [3,] FALSE FALSE
## [4,] FALSE  TRUE
## [5,] FALSE FALSE
which(is.na(data_na), arr.ind = TRUE)
##      row col
## [1,]   2   2
## [2,]   4   2
array_data <- array(1:24, dim = c(3, 4, 2))