PENDAHULUAN PRAKTIKUM

Operasi Dasar

2 + 3  # Penjumlahan: Menambahkan 2 dan 3, hasilnya 5
## [1] 5
5 - 1  # Pengurangan: Mengurangi 5 dengan 1, hasilnya 4
## [1] 4
4 * 2  # Perkalian: Mengalikan 4 dengan 2, hasilnya 8
## [1] 8
10 / 2 # Pembagian: Membagi 10 dengan 2, hasilnya 5
## [1] 5
2^3    # Pangkat: Menghitung 2 pangkat 3, hasilnya 8
## [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

Membuat Vektor Karakter

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

Mengonversi ke Faktor

warna_factor <- factor(warna)  # Mengubah vektor karakter menjadi faktor
str(warna_factor)
##  Factor w/ 3 levels "Biru","Hijau",..: 3 1 2 3 1 2 3

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"))
)
data_list
## $angka
## [1] 10 20 30 40
## 
## $teks
## [1] "A" "B" "C"
## 
## $kategori
## [1] Baik   Sedang Buruk 
## Levels: Baik Buruk Sedang

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", "Tika"),  # Kolom Nama
  Usia = c(25, 30, 27, 35, 28),                   # Kolom Usia
  Pekerjaan = factor(c("Pegawai", "Wirausaha", "Mahasiswa", "Pegawai", "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
## 5  Tika   28   Pegawai

Menampilkan Ringkasan Dataframe

summary(data_karyawan)  # Menampilkan ringkasan statistik dari dataframe
##      Nama                Usia        Pekerjaan
##  Length:5           Min.   :25   Mahasiswa:1  
##  Class :character   1st Qu.:27   Pegawai  :3  
##  Mode  :character   Median :28   Wirausaha:1  
##                     Mean   :29                
##                     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)  # 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 Vektor dengan Nilai NA

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

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
x3 <- seq(0,15,length=15)  # Membuat deret angka dengan 10 elemen
x3
##  [1]  0.000000  1.071429  2.142857  3.214286  4.285714  5.357143  6.428571
##  [8]  7.500000  8.571429  9.642857 10.714286 11.785714 12.857143 13.928571
## [15] 15.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)  # Membulatkan nilai dalam 'x3' ke bilangan bulat terdekat
##  [1]  0  1  2  3  4  5  6  8  9 10 11 12 13 14 15
floor(x3)  # Membulatkan nilai dalam 'x3' ke bawah
##  [1]  0  1  2  3  4  5  6  7  8  9 10 11 12 13 15
ceiling(x3)  # Membulatkan nilai dalam 'x3' ke atas
##  [1]  0  2  3  4  5  6  7  8  9 10 11 12 13 14 15

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().

Agar Mean = 96 dan minimal 4 baris, maka total nilai adalah = 96*4 = 384.Artinya, jumlah keseluruhan nilai harus sama dengan 384 agar rata-ratanya tepat 96.

# Membuat dataframe
data_nilai <- data.frame(
  Nama  = c("Andi", "Budi", "Citra", "Dewi"),
  Nilai = c(95, 97, 96, 96)
)

# Mengecek mean
mean(data_nilai$Nilai)
## [1] 96
# Menampilkan ringkasan statistik
summary(data_nilai)
##      Nama               Nilai      
##  Length:4           Min.   :95.00  
##  Class :character   1st Qu.:95.75  
##  Mode  :character   Median :96.00  
##                     Mean   :96.00  
##                     3rd Qu.:96.25  
##                     Max.   :97.00

Berdasarkan hasil di atas, dapat diketahui bahwa mean tepat sebesar 96 dengan minimal 4 baris.Sehingga, dataframe tepat sesuai dengan ketentuan soal.

2. Buat satu barisan sepanjang 12 elemen dengan aturan berulang +3 → ×2 → −1 dengan nilai awal 4.

# Membuat vektor kosong
x <- numeric(12)

# Nilai awal
x[1] <- 4

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

# Perulangan
for (i in 2:12) {
  aturan <- pola[(i - 2) %% length(pola) + 1]
  
  if (aturan == "+3") x[i] <- x[i-1] + 3
  if (aturan == "*2") x[i] <- x[i-1] * 2
  if (aturan == "-1") x[i] <- x[i-1] - 1
}

x
##  [1]   4   7  14  13  16  32  31  34  68  67  70 140

3. 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.

Untuk membentuk satu vektor dengan hasil akhir sesuai soal, ditentukan terlebih dahulu pola dasarnya, yakni “0 0 2 2 4 4 6 6” yang kemudian diulang sebanyak 3 kali.

# Membuat pola dasar
pola_dasar <- rep(seq(0, 6, by = 2), each = 2)

# Mengulang 3 kali
hasil <- rep(pola_dasar, times = 3)

hasil
##  [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

4. 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 <- sample(
  c(0,1), 
  30, 
  replace = TRUE, 
  prob = c(0.45, 0.55)
)

simulasi
##  [1] 1 0 1 0 0 1 1 0 0 1 0 1 0 0 1 0 1 1 1 0 0 0 0 0 0 0 1 0 1 1
# Menghitung frekuensi dan proporsi
table(simulasi)
## simulasi
##  0  1 
## 17 13
prop.table(table(simulasi))
## simulasi
##         0         1 
## 0.5666667 0.4333333

Berdasarkan soal, probabilitas yang ditentukan adalah: - P(0) = 0.45 - P(1) = 0.55

Namun pada hasil simulasi: - P̂(0) = 0.5667 - P̂(1) = 0.4333 Hasil ini tidak sama persis dengan probabilitas teoritis karena jumlah percobaan hanya 30 kali (relatif kecil) dan simulasi bersifat acak. Jadi, bisa disimpulkan bahwa simulasi berhasil dilakukan menggunakan fungsi sample() dengan probabilitas yang telah ditentukan.

5. 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().

# Membuat dataframe penjualan
data_penjualan <- data.frame(
  Hari = c("Senin", "Selasa", "Rabu", "Kamis"),
  Jumlah_Produk_Terjual = c(20, 15, 25, 18),
  Harga_Satuan = c(10000, 10000, 10000, 10000)
)

# Menghitung Total Pendapatan
data_penjualan$Total_Pendapatan <- 
  data_penjualan$Jumlah_Produk_Terjual * 
  data_penjualan$Harga_Satuan

# Menampilkan dataframe
data_penjualan
##     Hari Jumlah_Produk_Terjual Harga_Satuan Total_Pendapatan
## 1  Senin                    20        10000           200000
## 2 Selasa                    15        10000           150000
## 3   Rabu                    25        10000           250000
## 4  Kamis                    18        10000           180000
# Menampilkan summary
summary(data_penjualan)
##      Hari           Jumlah_Produk_Terjual  Harga_Satuan   Total_Pendapatan
##  Length:4           Min.   :15.00         Min.   :10000   Min.   :150000  
##  Class :character   1st Qu.:17.25         1st Qu.:10000   1st Qu.:172500  
##  Mode  :character   Median :19.00         Median :10000   Median :190000  
##                     Mean   :19.50         Mean   :10000   Mean   :195000  
##                     3rd Qu.:21.25         3rd Qu.:10000   3rd Qu.:212500  
##                     Max.   :25.00         Max.   :10000   Max.   :250000

Interpretasi Output 🔹 Kolom Hari - Length = 4 → terdapat 4 data. - Class = character → bertipe teks.

🔹 Jumlah_Produk_Terjual - Minimum = 15 (penjualan terendah terjadi pada Selasa) - Maximum = 25 (penjualan tertinggi terjadi pada Rabu) - Mean = 19.5 → rata-rata produk terjual per hari adalah sekitar 19–20 unit - Median = 19 → nilai tengah distribusi penjualan

🔹 Harga_Satuan - Semua nilai = 10000 - Karena nilainya sama, maka Min, Max, Mean, dan Median semuanya 10000.

🔹 Total_Pendapatan - Minimum = 150000 - Maximum = 250000 - Mean = 195000 → rata-rata pendapatan harian - Median = 190000

Ini menunjukkan bahwa pendapatan harian UMKM berkisar antara 150.000 hingga 250.000 rupiah.