PENDAHULUAN PRAKTIKUM

Operasi Dasar

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

Pembuatan Variabel

# Membuat variabel 'a' dan mengisinya dengan nilai 10
a <- 10 

# Membuat variabel 'b' dan mengisinya dengan nilai 5
b <- 5 

# Membuat variabel 'c' yang berisi hasil penjumlahan 'a' dan 'b'
c <- a + b

# Menampilkan nilai dari variabel 'c'
c
## [1] 15

Struktur Data Dasar

# Membuat vektor numerik dengan nilai 1 hingga 5
vektor <- c(1, 2, 3, 4, 5)

# Menampilkan isi vektor 
vektor
## [1] 1 2 3 4 5

Membuat Vektro 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

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

Menampilkan Struktur Faktor

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

Menampilkan Level yang Ada dalam Faktor

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

Frekuensi Tiap Kategori

# Menampilkan frekuensi masing-masing kategori dalam faktor
table(warna_factor)
## 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

# Menampilkan seluruh isi list
print(data_list)
## $angka
## [1] 10 20 30 40
## 
## $teks
## [1] "A" "B" "C"
## 
## $kategori
## [1] Baik   Sedang Buruk 
## Levels: Baik Buruk Sedang

Mengakses Elemen List

# Mengakses elemen 'angka' dalam list
data_list$angka
## [1] 10 20 30 40
# Mengakses elemen kedua dalam list (vektor 'teks')
data_list[[2]]
## [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

# Menampilkan seluruh isi dataframe
print(data_karyawan)
##    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

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

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

# Menampilkan isi 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

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

Membuat Vektor dengan Nilai NA

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

Sequence Generation

# Membuat sequence dari 0 hingga 10 dengan 5 elemen
x1 <- seq(0, 10, length=5)
x1
## [1]  0.0  2.5  5.0  7.5 10.0
# Membuat deret angka dengan 6 elemen
x2 <- seq(0,10,length=6)
x2
## [1]  0  2  4  6  8 10
# Membuat deret angka dengan 7 elemen
x3 <- seq(0,10,length=7)
x3
## [1]  0.000000  1.666667  3.333333  5.000000  6.666667  8.333333 10.000000
# Membuat deret angka dengan 10 elemen
x3 <- seq(0,15,length=15)
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
# panjang barisan
x4 <- numeric(10)   

# nilai awal
x4[1] <- 2

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

# Membulatkan nilai dalam 'x3' ke bilangan bulat terdekat
round(x3)
##  [1]  0  1  2  3  4  5  6  8  9 10 11 12 13 14 15
# Membulatkan nilai dalam 'x3' ke bawah
floor(x3)
##  [1]  0  1  2  3  4  5  6  7  8  9 10 11 12 13 15
# Membulatkan nilai dalam 'x3' ke atas
ceiling(x3)
##  [1]  0  2  3  4  5  6  7  8  9 10 11 12 13 14 15

Replicate Elements of Vectors and Lists

# Mengulang vektor "A", "B", "C" sebanyak 5 kali
rep(c("A", "B", "C"), times=5)
##  [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"
# Mengulang setiap elemen vektor "A", "B", "C" sebanyak 5 kali
rep(c("A", "B", "C"), each=5) 
##  [1] "A" "A" "A" "A" "A" "B" "B" "B" "B" "B" "C" "C" "C" "C" "C"
# Mengulang setiap elemen vektor "A", "B", "C" sebanyak 2 kali, dan seluruhnya diulang 5 kali
rep(c("A", "B", "C"), each=2, times=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"
# Mengulang vektor 1 hingga 5 sebanyak 5 kali
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
# Mengulang setiap elemen vektor 1 hingga 5 sebanyak 5 kali
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
# Mengulang setiap elemen vektor 1 hingga 5 sebanyak 2 kali, dan seluruhnya diulang 5 kali
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
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().

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

# Mengecek rata-rata
mean(data_nilai$Nilai)
## [1] 96
# Menampilkan summary
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
1. Verifikasi Mean

Hasil ini menunjukkan bahwa nilai yang disusun telah memenuhi ketentuan soal, yaitu memiliki rata rata sebesar 96 2. Variabel Nama - Length: 4 enunjukkan terdapat 4 observasi. - Class: character menunjukkan bahwa variabel ini bertipe teks. - Variabel ini bersifat kategorikal dan berfungsi sebagai identitas atau label individu 3. Variabel Nilai - Kesamaan nilai ukuran pemusatan antara mean dan median menunjukkan bahwa distribusi data relatif simetris dan tidak terdapat penyimpangan ekstrem. - Ukuran penyebaran Minimum = 95 Maximum = 97 Sehingga range = 2 IQR = 96.25 - 95.75 = 0.5

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

x <- numeric(12)
x[1] <- 4

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

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

Pola ini menghasilkan deret yang tidak konstan karena adanya operasi perkalian yang mempercepat pertumbuhan nilai. Secara matematis, deret tersebut bersifat deterministik dan rekursif karena setiap elemen bergantung pada hasil perhitungan sebelumnya. Kesimpulannya, vektor yang terbentuk menunjukkan tren meningkat dengan pola transformasi aritmetika yang konsisten.

#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

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

# Mengulang 3 kali
hasil <- rep(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

Pola ini memperlihatkan bahwa setiap bilangan genap dari 0 hingga 6 muncul dua kali berturut-turut sebelum berpindah ke nilai berikutnya, lalu siklus tersebut diulang. Secara matematis, deret ini bersifat periodik dengan panjang periode 8 dan mengikuti pola bilangan genap berurutan yang direplikasi secara sistematis.

#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 lempar 3 koin
koin <- sample(c("A","G"), size = 3, replace = TRUE)

# Menghitung banyaknya sisi Angka
X <- sum(koin == "A")

koin
## [1] "A" "A" "A"
X
## [1] 3

Hasil simulasi menunjukkan bahwa ketiga koin yang dilempar menghasilkan sisi “A” (Angka) seluruhnya. Dengan demikian, banyaknya sisi Angka yang muncul adalah 3. Artinya, dalam satu kali percobaan ini diperoleh nilai maksimum untuk peubah acak X, yaitu semua koin menunjukkan Angka. Kejadian ini merupakan salah satu dari delapan kemungkinan hasil dalam ruang sampel dan memiliki peluang sebesar 0.125 atau 12.5% pada koin yang seimbang.

#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

Data menunjukkan penjualan selama empat hari dengan harga satuan tetap sebesar Rp10.000. Rata-rata jumlah produk terjual adalah 19,5 unit per hari, dengan penjualan terendah 15 unit dan tertinggi 25 unit. Karena harga tidak berubah, variasi total pendapatan (rata-rata Rp195.000 per hari) sepenuhnya dipengaruhi oleh jumlah produk yang terjual. Secara umum, penjualan dan pendapatan relatif stabil selama periode pengamatan.