nilai <- c(80, 55, 45, 90, 70, 60, 85, 72, 50, 95, 40, 77)
nama <- c("Andi","Budi","Citra","Dinda","Eka","Farah",
"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
status <- ifelse(nilai >= 60, "Lulus",
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)
proporsi <- prop.table(table_status)
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:
nilai_tertinggi <- max(nilai)
mahasiswa_tertinggi <- names(nilai)[which(nilai == nilai_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:
data_penjualan <- c(12, 15, 18, 10, 20,
8, 12, 10, 9, 14,
20, 18, 22, 25, 24)
penjualan <- matrix(data_penjualan, nrow = 3, ncol = 5, byrow = TRUE)
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
total_per_produk <- rowSums(penjualan)
total_per_hari <- colSums(penjualan)
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
produk_c <- penjualan["C", ]
hari_tertinggi_c <- which.max(produk_c)
nilai_tertinggi_c <- max(produk_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)
nama_produk <- rownames(penjualan)
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_bonus <- penjualan * 1.1
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
kategori <- c("B", "A", "C", "B", "A", "C", "B", "B", "A", "C")
kategori_factor <- factor(kategori, levels = c("A", "B", "C"), ordered = TRUE)Jumlah Produk per Kategori
jumlah_per_kategori <- table(kategori_factor)
print(jumlah_per_kategori)kategori_factor
A B C
3 4 3
Membuat Vektor keterangan
keterangan <- ifelse(kategori == "A", "Sangat Bagus",
ifelse(kategori == "B", "Bagus", "Perlu Perbaikan"))Membuat Kode Barang
kode_barang <- sprintf("BRG-%02d", 1:length(kategori))
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 ===
indeks_perlu_perbaikan <- which(keterangan == "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 ===
ringkasan <- data.frame(
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
suhu <- c(28.5, 30.2, 29.8, 31.0, 33.5, 27.5, 26.8)Hitung rata-rata, maksimum, dan minimum:
suhu_rata <- mean(suhu)
suhu_max <- max(suhu)
suhu_min <- min(suhu)
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
nama_hari <- c("Rabu", "Kamis", "Jumat", "Sabtu", "Minggu", "Senin", "Selasa")
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
status <- ifelse(suhu <= 30, "Normal", "Panas")
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")
input_hari <- readline(prompt = "Masukkan nama 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
jumlah_hari_panas <- sum(status == "Panas")
total_hari <- length(status)
persentase_panas <- (jumlah_hari_panas / total_hari) * 100
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%