Praktikum Dasar Software R untuk Simulasi

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 <- 7
b <- 8
c <- a+b
c
## [1] 15

Struktur Data Dasar

vektor <- c(0,2,4,6,8)
vektor
## [1] 0 2 4 6 8

Membuat Vektor Karakter

warna <- c("Merah","Kuning","Hijau","Kuning","Merah","Merah","Hijau")
warna
## [1] "Merah"  "Kuning" "Hijau"  "Kuning" "Merah"  "Merah"  "Hijau"
str(warna)
##  chr [1:7] "Merah" "Kuning" "Hijau" "Kuning" "Merah" "Merah" "Hijau"

Mengonversi ke Faktor

warna_factor <- factor(warna)
warna_factor
## [1] Merah  Kuning Hijau  Kuning Merah  Merah  Hijau 
## Levels: Hijau Kuning Merah

Menampilkan Struktur Faktor

str(warna_factor)
##  Factor w/ 3 levels "Hijau","Kuning",..: 3 2 1 2 3 3 1

Menampilkan Level yang Ada dalam Faktor

levels(warna_factor)
## [1] "Hijau"  "Kuning" "Merah"

Frekuensi Tiap Kategori

table(warna_factor)
## warna_factor
##  Hijau Kuning  Merah 
##      2      2      3

Membuat List yang Berisi Berbagai Jenis Data

data_list <- list(
  angka = c(5, 7, 9, 10),
  teks = c("A", "B", "C"),
  kategori = factor(c("Baik", "Cukup", "Buruk"))
)
data_list
## $angka
## [1]  5  7  9 10
## 
## $teks
## [1] "A" "B" "C"
## 
## $kategori
## [1] Baik  Cukup Buruk
## Levels: Baik Buruk Cukup

Menampilkan Isi List

print(data_list)
## $angka
## [1]  5  7  9 10
## 
## $teks
## [1] "A" "B" "C"
## 
## $kategori
## [1] Baik  Cukup Buruk
## Levels: Baik Buruk Cukup

Mengakses Elemen List

data_list$angka
## [1]  5  7  9 10
data_list[[3]]
## [1] Baik  Cukup Buruk
## Levels: Baik Buruk Cukup

Membuat Dataframe

data_karyawan <- data.frame(
  Nama = c("Ade", "Bilqis", "Copi", "Duta", "Tika"),  # Kolom Nama
  Usia = c(30, 25, 27, 35, 28),                   # Kolom Usia
  Pekerjaan = factor(c("Pegawai", "Wirausaha", "Mahasiswa", "CEO", "Pegawai"))  # Kolom Pekerjaan
)

Menampilkan Dataframe

print(data_karyawan)
##     Nama Usia Pekerjaan
## 1    Ade   30   Pegawai
## 2 Bilqis   25 Wirausaha
## 3   Copi   27 Mahasiswa
## 4   Duta   35       CEO
## 5   Tika   28   Pegawai

Menampilkan Ringkasan Dataframe

summary(data_karyawan)
##      Nama                Usia        Pekerjaan
##  Length:5           Min.   :25   CEO      :1  
##  Class :character   1st Qu.:27   Mahasiswa:1  
##  Mode  :character   Median :28   Pegawai  :2  
##                     Mean   :29   Wirausaha:1  
##                     3rd Qu.:30                
##                     Max.   :35

Membuat Array 3 Dimensi

array_data <- array(1:24, dim = c(3, 4, 2))  # Membuat array dengan dimensi 3x4x2
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 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

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

Membuat Vektor dengan Nilai NA

nilai <- c(NA, 85, 70, 75, 80, NA, 95)  # Membuat vektor dengan beberapa nilai NA
nilai
## [1] NA 85 70 75 80 NA 95

Sequence Generation

x1 <- seq(1, 10, length=5)  # Membuat sequence dari 0 hingga 10 dengan 5 elemen
x1  # Menampilkan sequence
## [1]  1.00  3.25  5.50  7.75 10.00
x2 <- seq(0,8,length=6)  # Membuat deret angka dengan 6 elemen
x2
## [1] 0.0 1.6 3.2 4.8 6.4 8.0
x3 <- seq(0,7,length=7)  # Membuat deret angka dengan 7 elemen
x3
## [1] 0.000000 1.166667 2.333333 3.500000 4.666667 5.833333 7.000000
x4 <- numeric(10)   # panjang barisan
x4[1] <- 2          # nilai awal

pola <- c("+2", "*2", "/2")

for (i in 2:length(x4)) {
  aturan <- pola[(i - 2) %% length(pola) + 1]
  
  if (aturan == "+2") x4[i] <- x4[i-1] + 2
  if (aturan == "*2") x4[i] <- x4[i-1] * 2
  if (aturan == "/2") x4[i] <- x4[i-1] / 2
}

x4
##  [1]  2  4  8  4  6 12  6  8 16  8

Pembulatan Pecahan Desimal

round(x3)
## [1] 0 1 2 4 5 6 7
floor(x3) # Membulatkan nilai dalam 'x3' ke bawah
## [1] 0 1 2 3 4 5 7
ceiling(x3)  # Membulatkan nilai dalam 'x3' ke atas
## [1] 0 2 3 4 5 6 7

Replicate Elements of Vectors and Lists

rep(c("A", "B", "C"), times=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"), times = c(1, 2, 3))
## [1] "A" "B" "B" "C" "C" "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, times=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
rep(seq(0,10,length=6),times = 3)
##  [1]  0  2  4  6  8 10  0  2  4  6  8 10  0  2  4  6  8 10
rep(seq(0,10,length=6),each = 2, times = 3)
##  [1]  0  0  2  2  4  4  6  6  8  8 10 10  0  0  2  2  4  4  6  6  8  8 10 10  0
## [26]  0  2  2  4  4  6  6  8  8 10 10
grup   <- rep(c("Kontrol", "Perlakuan"), each = 10)
waktu  <- rep(1:10, times = 2)
cbind(grup, waktu)
##       grup        waktu
##  [1,] "Kontrol"   "1"  
##  [2,] "Kontrol"   "2"  
##  [3,] "Kontrol"   "3"  
##  [4,] "Kontrol"   "4"  
##  [5,] "Kontrol"   "5"  
##  [6,] "Kontrol"   "6"  
##  [7,] "Kontrol"   "7"  
##  [8,] "Kontrol"   "8"  
##  [9,] "Kontrol"   "9"  
## [10,] "Kontrol"   "10" 
## [11,] "Perlakuan" "1"  
## [12,] "Perlakuan" "2"  
## [13,] "Perlakuan" "3"  
## [14,] "Perlakuan" "4"  
## [15,] "Perlakuan" "5"  
## [16,] "Perlakuan" "6"  
## [17,] "Perlakuan" "7"  
## [18,] "Perlakuan" "8"  
## [19,] "Perlakuan" "9"  
## [20,] "Perlakuan" "10"

Fungsi Dasar Statistika pada R

# 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

# Simulasi pelemparan koin (0 = gambar, 1 = angka)
set.seed(11)
sample(0:1,100, replace = TRUE)  # Simulasi pelemparan koin sebanyak 30 kali
##   [1] 1 1 1 0 1 0 0 1 1 1 0 1 1 1 0 1 0 0 0 0 0 0 1 0 0 1 0 0 1 1 0 0 0 1 1 0 1
##  [38] 0 1 1 1 0 1 0 1 1 0 1 1 0 1 0 1 0 0 0 1 1 0 1 1 0 0 1 1 1 1 0 1 0 0 0 1 0
##  [75] 1 1 1 0 1 1 1 1 0 1 0 0 1 0 1 0 1 1 0 0 0 1 0 0 0 1
# Simulasi pengambilan sampel huruf "A" dan "G" sebanyak 15 kali
set.seed(123)
sample(c("A", "G"), 15, replace = TRUE)  # Simulasi pengambilan sampel huruf "A" dan "G"
##  [1] "A" "A" "A" "G" "A" "G" "G" "G" "A" "A" "G" "G" "G" "A" "G"
set.seed(1)
# Simulasi pelemparan dadu sebanyak 30 kali
sample(1:6, 30, replace = TRUE)  # Simulasi pelemparan dadu sebanyak 30 kali
##  [1] 1 4 1 2 5 3 6 2 3 3 1 5 5 2 6 6 2 1 5 5 1 1 6 5 5 2 2 6 1 4

Latihan

1. Buat dataframe dengan kolom Nama dan Nilai (minimal 4 baris). Atur nilai pada kolom Nilai sehingga rata-rata (mean) dari nilai tersebut adalah 96.Selanjutnya, tampilkan ringkasan statistik dari dataframe tersebut menggunakan fungsi summary().

data.nilai<- data.frame(
  Nama = c("Anto", "Bagus", "Caca", "Devon"),
  Nilai = c(94,96,98,96)
)
print(data.nilai)
##    Nama Nilai
## 1  Anto    94
## 2 Bagus    96
## 3  Caca    98
## 4 Devon    96
summary(data.nilai)
##      Nama               Nilai     
##  Length:4           Min.   :94.0  
##  Class :character   1st Qu.:95.5  
##  Mode  :character   Median :96.0  
##                     Mean   :96.0  
##                     3rd Qu.:96.5  
##                     Max.   :98.0
  1. Buat satu barisan sepanjang 12 elemen dengan aturan berulang +3 → ×2 → −1 dengan nilai awal 4.
x1 <- numeric(12)
x1[1] <- 4

pola <- c("+3","*2","-1")

for (i in 2:12) {
  if ((i - 1) %% 3 == 1) {
    x1[i] <- x1[i - 1] + 3
  } else if ((i - 1) %% 3 == 2) {
    x1[i] <- x1[i - 1] * 2
  } else {
    x1[i] <- x1[i - 1] - 1
  }
}

x1
##  [1]   4   7  14  13  16  32  31  34  68  67  70 140
  1. Gunakan fungsi seq() dan rep() di R untuk membentuk satu vektor dengan hasil akhir sebagai berikut:0 0 2 2 4 4 6 6 0 0 2 2 4 4 6 6 0 0 2 2 4 4 6 6
vektor <- rep(seq(0, 6, length=4), each = 2, times = 3)

vektor
##  [1] 0 0 2 2 4 4 6 6 0 0 2 2 4 4 6 6 0 0 2 2 4 4 6 6
  1. Lakukan simulasi pelemparan koin sebanyak 30 kali menggunakan fungsi sample() di R, dengan ketentuan sebagai berikut: Hasil 0 memiliki peluang kemunculan 45% Hasil 1 memiliki peluang kemunculan 55% Gunakan set.seed() agar hasil simulasi dapat direproduksi
set.seed(123)
simulasi_koin <- sample(0:1, 30, replace = TRUE)
simulasi_koin
##  [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
  1. Seorang pemilik UMKM mencatat data penjualan selama beberapa hari. Informasi yang dikumpulkan meliputi Hari, Jumlah Produk Terjual, Harga Satuan, Total Pendapatan. Buat sebuah dataframe dengan keempat kolom tersebut (minimal 4 baris), lalu tampilkan summary().
penjualan_umkm <- data.frame(
  Hari = c("Senin", "Selasa", "Rabu", "Kamis"),
  Jumlah_Produk_Terjual = c(20, 25, 18, 30),
  Harga_Satuan = c(10000, 10000, 10000, 10000),
  Total_Pendapatan = c(200000, 250000, 180000, 300000)
)

print(penjualan_umkm)
##     Hari Jumlah_Produk_Terjual Harga_Satuan Total_Pendapatan
## 1  Senin                    20        10000           200000
## 2 Selasa                    25        10000           250000
## 3   Rabu                    18        10000           180000
## 4  Kamis                    30        10000           300000
summary(penjualan_umkm)
##      Hari           Jumlah_Produk_Terjual  Harga_Satuan   Total_Pendapatan
##  Length:4           Min.   :18.00         Min.   :10000   Min.   :180000  
##  Class :character   1st Qu.:19.50         1st Qu.:10000   1st Qu.:195000  
##  Mode  :character   Median :22.50         Median :10000   Median :225000  
##                     Mean   :23.25         Mean   :10000   Mean   :232500  
##                     3rd Qu.:26.25         3rd Qu.:10000   3rd Qu.:262500  
##                     Max.   :30.00         Max.   :10000   Max.   :300000