<- c(80, 55, 45, 90, 70, 60, 85, 72, 50, 95, 40, 77)
nilai <- c("Andi","Budi","Citra","Dinda","Eka","Farah",
nama "Gilang","Hani","Indra","Joko","Kiki","Lina")
Tugas Individu Pemrograman Statistika
Soal 1 – Analisis Skor Ujian
Menambahkan Nama Mahasiswa pada Vektor nilai
Definisikan variabel nilai
dan nama
:
Tambahkan nama ke dalam vektor nilai
menggunakan names()
:
names(nilai) <- nama
print(nilai)
Andi Budi Citra Dinda Eka Farah Gilang Hani Indra Joko Kiki
80 55 45 90 70 60 85 72 50 95 40
Lina
77
Membuat Vektor status
Gunakan ifelse()
untuk menentukan status kelulusan:
≥ 60
→ Lulus45–59
→ Perbaikan< 45
→ Tidak Lulus
<- ifelse(nilai >= 60, "Lulus",
status ifelse(nilai >= 45, "Perbaikan", "Tidak Lulus"))
print(status)
Andi Budi Citra Dinda Eka
"Lulus" "Perbaikan" "Perbaikan" "Lulus" "Lulus"
Farah Gilang Hani Indra Joko
"Lulus" "Lulus" "Lulus" "Perbaikan" "Lulus"
Kiki Lina
"Tidak Lulus" "Lulus"
Pesan Personal Mahasiswa
Cetak pesan personal berisi nama, nilai, dan status dengan perulangan:
for (i in 1:length(nilai)) {
cat(sprintf("%s: Nilai = %d, Status = %s\n",
nama[i], nilai[i], status[i])) }
Andi: Nilai = 80, Status = Lulus
Budi: Nilai = 55, Status = Perbaikan
Citra: Nilai = 45, Status = Perbaikan
Dinda: Nilai = 90, Status = Lulus
Eka: Nilai = 70, Status = Lulus
Farah: Nilai = 60, Status = Lulus
Gilang: Nilai = 85, Status = Lulus
Hani: Nilai = 72, Status = Lulus
Indra: Nilai = 50, Status = Perbaikan
Joko: Nilai = 95, Status = Lulus
Kiki: Nilai = 40, Status = Tidak Lulus
Lina: Nilai = 77, Status = Lulus
Proporsi Kelulusan
Hitung distribusi dan proporsi status:
<- table(status)
table_status <- prop.table(table_status)
proporsi
cat("\n=== PROPORSI KELULUSAN ===\n")
=== PROPORSI KELULUSAN ===
print(proporsi)
status
Lulus Perbaikan Tidak Lulus
0.66666667 0.25000000 0.08333333
Nilai Tertinggi
Cari mahasiswa dengan nilai tertinggi:
<- max(nilai)
nilai_tertinggi <- names(nilai)[which(nilai == nilai_tertinggi)]
mahasiswa_tertinggi
cat(sprintf("\nMahasiswa dengan Nilai Tertinggi: %s (%.0f)\n",
mahasiswa_tertinggi, nilai_tertinggi))
Mahasiswa dengan Nilai Tertinggi: Joko (95)
Soal 2 – Evaluasi Penjualan Produk
Membuat Matriks penjualan
Input data penjualan 3 produk (A, B, C) selama 5 hari:
<- c(12, 15, 18, 10, 20,
data_penjualan 8, 12, 10, 9, 14,
20, 18, 22, 25, 24)
<- matrix(data_penjualan, nrow = 3, ncol = 5, byrow = TRUE)
penjualan rownames(penjualan) <- c("A", "B", "C")
colnames(penjualan) <- c("H1", "H2", "H3", "H4", "H5")
print(penjualan)
H1 H2 H3 H4 H5
A 12 15 18 10 20
B 8 12 10 9 14
C 20 18 22 25 24
Total Penjualan per Produk dan per Hari
<- rowSums(penjualan)
total_per_produk <- colSums(penjualan)
total_per_hari
cat("\n=== TOTAL PER PRODUK ===\n")
=== TOTAL PER PRODUK ===
print(total_per_produk)
A B C
75 53 109
cat("\n=== TOTAL PER HARI ===\n")
=== TOTAL PER HARI ===
print(total_per_hari)
H1 H2 H3 H4 H5
40 45 50 44 58
Hari dengan Penjualan Tertinggi Produk C
<- penjualan["C", ]
produk_c <- which.max(produk_c)
hari_tertinggi_c <- max(produk_c)
nilai_tertinggi_c
cat(sprintf("\nHari dengan penjualan tertinggi produk C: %s (%.0f)\n",
names(produk_c)[hari_tertinggi_c], nilai_tertinggi_c))
Hari dengan penjualan tertinggi produk C: H4 (25)
Total Penjualan per Produk (Pesan)
<- rownames(penjualan)
nama_produk
for(i in 1:length(nama_produk)) {
cat(sprintf("Total penjualan produk %s selama 5 hari: %d unit\n",
nama_produk[i], total_per_produk[i])) }
Total penjualan produk A selama 5 hari: 75 unit
Total penjualan produk B selama 5 hari: 53 unit
Total penjualan produk C selama 5 hari: 109 unit
Matriks penjualan_bonus
(Bonus 10%)
<- penjualan * 1.1
penjualan_bonus cat("\n=== PENJUALAN DENGAN BONUS 10% ===\n")
=== PENJUALAN DENGAN BONUS 10% ===
print(round(penjualan_bonus, 1))
H1 H2 H3 H4 H5
A 13.2 16.5 19.8 11.0 22.0
B 8.8 13.2 11.0 9.9 15.4
C 22.0 19.8 24.2 27.5 26.4
Soal 3 – Sistem Klasifikasi Barang
Vektor kategori
dan Faktor Berurutan
<- c("B", "A", "C", "B", "A", "C", "B", "B", "A", "C")
kategori
<- factor(kategori, levels = c("A", "B", "C"), ordered = TRUE) kategori_factor
Jumlah Produk per Kategori
<- table(kategori_factor)
jumlah_per_kategori print(jumlah_per_kategori)
kategori_factor
A B C
3 4 3
Membuat Vektor keterangan
<- ifelse(kategori == "A", "Sangat Bagus",
keterangan ifelse(kategori == "B", "Bagus", "Perlu Perbaikan"))
Membuat Kode Barang
<- sprintf("BRG-%02d", 1:length(kategori))
kode_barang print(kode_barang)
[1] "BRG-01" "BRG-02" "BRG-03" "BRG-04" "BRG-05" "BRG-06" "BRG-07" "BRG-08"
[9] "BRG-09" "BRG-10"
Produk yang Perlu Perbaikan
cat("\n=== PRODUK YANG PERLU PERBAIKAN ===\n")
=== PRODUK YANG PERLU PERBAIKAN ===
<- which(keterangan == "Perlu Perbaikan")
indeks_perlu_perbaikan
for(i in indeks_perlu_perbaikan) {
cat(sprintf("Produk %s adalah produk yang perlu perbaikan\n", kode_barang[i]))
}
Produk BRG-03 adalah produk yang perlu perbaikan
Produk BRG-06 adalah produk yang perlu perbaikan
Produk BRG-10 adalah produk yang perlu perbaikan
Ringkasan Semua Produk
cat("\n=== RINGKASAN SEMUA PRODUK ===\n")
=== RINGKASAN SEMUA PRODUK ===
<- data.frame(
ringkasan Kode_Barang = kode_barang,
Kategori = kategori,
Keterangan = keterangan,
stringsAsFactors = FALSE
)print(ringkasan)
Kode_Barang Kategori Keterangan
1 BRG-01 B Bagus
2 BRG-02 A Sangat Bagus
3 BRG-03 C Perlu Perbaikan
4 BRG-04 B Bagus
5 BRG-05 A Sangat Bagus
6 BRG-06 C Perlu Perbaikan
7 BRG-07 B Bagus
8 BRG-08 B Bagus
9 BRG-09 A Sangat Bagus
10 BRG-10 C Perlu Perbaikan
Soal 4 – Monitoring Suhu Harian
Data Suhu Harian
<- c(28.5, 30.2, 29.8, 31.0, 33.5, 27.5, 26.8) suhu
Hitung rata-rata, maksimum, dan minimum:
<- mean(suhu)
suhu_rata <- max(suhu)
suhu_max <- min(suhu)
suhu_min
cat(sprintf("Suhu rata-rata: %.2f°C\n", suhu_rata))
Suhu rata-rata: 29.61°C
cat(sprintf("Suhu maksimum: %.1f°C\n", suhu_max))
Suhu maksimum: 33.5°C
cat(sprintf("Suhu minimum: %.1f°C\n", suhu_min))
Suhu minimum: 26.8°C
Tambahkan Nama Hari
<- c("Rabu", "Kamis", "Jumat", "Sabtu", "Minggu", "Senin", "Selasa")
nama_hari names(suhu) <- nama_hari
cat("\n=== DATA SUHU ===\n")
=== DATA SUHU ===
print(suhu)
Rabu Kamis Jumat Sabtu Minggu Senin Selasa
28.5 30.2 29.8 31.0 33.5 27.5 26.8
Status Suhu Harian
<- ifelse(suhu <= 30, "Normal", "Panas")
status names(status) <- nama_hari
cat("\n=== STATUS SUHU ===\n")
=== STATUS SUHU ===
for(i in 1:length(suhu)) {
cat(sprintf("%s: %.1f°C - %s\n", names(suhu)[i], suhu[i], status[i]))
}
Rabu: 28.5°C - Normal
Kamis: 30.2°C - Panas
Jumat: 29.8°C - Normal
Sabtu: 31.0°C - Panas
Minggu: 33.5°C - Panas
Senin: 27.5°C - Normal
Selasa: 26.8°C - Normal
Hari dengan Suhu di Atas Rata-Rata
cat(sprintf("\n=== HARI DENGAN SUHU > RATA-RATA (%.2f°C) ===\n", suhu_rata))
=== HARI DENGAN SUHU > RATA-RATA (29.61°C) ===
print(suhu[suhu > suhu_rata])
Kamis Jumat Sabtu Minggu
30.2 29.8 31.0 33.5
Pencarian Suhu per Hari (Input User)
while(TRUE) {
cat("\n=== PENCARIAN SUHU ===\n")
<- readline(prompt = "Masukkan nama hari: ")
input_hari
if(input_hari %in% nama_hari) {
cat(sprintf("Hari %s: Suhu %.1f°C - Status: %s\n",
input_hari, suhu[input_hari], status[input_hari]))break
else {
} cat("Hari tidak ditemukan. Program dihentikan.\n")
break
} }
=== PENCARIAN SUHU ===
Masukkan nama hari:
Hari tidak ditemukan. Program dihentikan.
Persentase Hari Panas
<- sum(status == "Panas")
jumlah_hari_panas <- length(status)
total_hari <- (jumlah_hari_panas / total_hari) * 100
persentase_panas
cat(sprintf("\nJumlah hari panas: %d dari %d hari\n", jumlah_hari_panas, total_hari))
Jumlah hari panas: 3 dari 7 hari
cat(sprintf("Persentase hari panas: %.1f%%\n", persentase_panas))
Persentase hari panas: 42.9%