Seorang dosen memiliki data nilai ujian dari 12 mahasiswa.
Analisis berikut dilakukan untuk menentukan status kelulusan, membuat
pesan personal, serta menghitung proporsi kelulusan.
# Data nilai mahasiswa
nilai <- c(80, 55, 45, 90, 70, 60, 85, 72, 50, 95, 40, 77)
# Nama mahasiswa
nama <- c("Andi", "Budi", "Citra", "Dinda", "Eka", "Farah",
"Gilang", "Hani", "Indra", "Joko", "Kiki", "Lina")
# Beri nama pada vektor nilai
names(nilai) <- nama
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
# Buat vektor status kelulusan
status <- ifelse(nilai >= 60, "Lulus",
ifelse(nilai >= 45, "Perbaikan", "Tidak Lulus"))
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"
# Cetak pesan personal tiap mahasiswa
pesan <- paste(names(nilai), ": Nilai =", nilai, ", Status =", status)
pesan
## [1] "Andi : Nilai = 80 , Status = Lulus"
## [2] "Budi : Nilai = 55 , Status = Perbaikan"
## [3] "Citra : Nilai = 45 , Status = Perbaikan"
## [4] "Dinda : Nilai = 90 , Status = Lulus"
## [5] "Eka : Nilai = 70 , Status = Lulus"
## [6] "Farah : Nilai = 60 , Status = Lulus"
## [7] "Gilang : Nilai = 85 , Status = Lulus"
## [8] "Hani : Nilai = 72 , Status = Lulus"
## [9] "Indra : Nilai = 50 , Status = Perbaikan"
## [10] "Joko : Nilai = 95 , Status = Lulus"
## [11] "Kiki : Nilai = 40 , Status = Tidak Lulus"
## [12] "Lina : Nilai = 77 , Status = Lulus"
# Hitung proporsi masing-masing kategori
proporsi <- prop.table(table(status))
proporsi
## status
## Lulus Perbaikan Tidak Lulus
## 0.66666667 0.25000000 0.08333333
# Cari mahasiswa dengan nilai tertinggi
maks_nilai <- max(nilai)
mahasiswa_tertinggi <- names(nilai)[which.max(nilai)]
cat("Mahasiswa dengan nilai tertinggi adalah", mahasiswa_tertinggi,
"dengan nilai", maks_nilai)
## Mahasiswa dengan nilai tertinggi adalah Joko dengan nilai 95
# Membuat diagram batang status kelulusan
barplot(table(status),
col = c("skyblue", "orange", "red"),
main = "Distribusi Status Kelulusan Mahasiswa",
ylab = "Jumlah Mahasiswa",
xlab = "Status Kelulusan")
Data terdiri dari sepuluh angka yang cukup bervariasi. Nilai rata-rata
(mean) adalah 26,2 yang menunjukkan pusat distribusi data. Nilai median
23,5 menggambarkan posisi tengah data ketika diurutkan. Standar deviasi
sekitar 10,4 menandakan penyebaran data cukup lebar dari
rata-ratanya.
Data penjualan produk disimpan dalam bentuk matriks.
# Membuat matriks penjualan
penjualan <- matrix(c(12,15,18,10,20, # Produk A
8,12,10,9,14, # Produk B
20,18,22,25,24), # Produk C
nrow = 3, byrow = TRUE)
# Menambahkan nama baris dan kolom
rownames(penjualan) <- c("Produk A", "Produk B", "Produk C")
colnames(penjualan) <- c("H1","H2","H3","H4","H5")
# Tampilkan matriks penjualan
penjualan
## H1 H2 H3 H4 H5
## Produk A 12 15 18 10 20
## Produk B 8 12 10 9 14
## Produk C 20 18 22 25 24
# Total per produk (baris)
total_produk <- rowSums(penjualan)
# Total per hari (kolom)
total_hari <- colSums(penjualan)
total_produk
## Produk A Produk B Produk C
## 75 53 109
total_hari
## H1 H2 H3 H4 H5
## 40 45 50 44 58
# Ambil data produk C
produkC <- penjualan["Produk C", ]
# Cari hari dengan penjualan tertinggi
hari_max_C <- names(produkC)[which.max(produkC)]
nilai_max_C <- max(produkC)
cat("Produk C memiliki penjualan tertinggi pada", hari_max_C,
"dengan jumlah", nilai_max_C, "unit")
## Produk C memiliki penjualan tertinggi pada H4 dengan jumlah 25 unit
# Buat pesan untuk setiap produk
pesan <- paste(names(total_produk),
"total penjualan selama 5 hari:",
total_produk, "unit")
pesan
## [1] "Produk A total penjualan selama 5 hari: 75 unit"
## [2] "Produk B total penjualan selama 5 hari: 53 unit"
## [3] "Produk C total penjualan selama 5 hari: 109 unit"
# Tambahkan 10% ke setiap elemen matriks
penjualan_bonus <- penjualan * 1.1
penjualan_bonus
## H1 H2 H3 H4 H5
## Produk A 13.2 16.5 19.8 11.0 22.0
## Produk B 8.8 13.2 11.0 9.9 15.4
## Produk C 22.0 19.8 24.2 27.5 26.4
Data nilai mahasiswa menunjukkan bahwa sebagian besar nilai berada di atas batas kelulusan (75). Mahasiswa yang nilainya ≥ 75 dikategorikan lulus, sedangkan sisanya tidak lulus. Dari hasil pengelompokan terlihat mayoritas mahasiswa lulus, menandakan performa kelas cukup baik.
Sebuah gudang mencatat kategori kualitas 10 produk dalam bentuk huruf berikut: kategori <- c(“B”, “A”, “C”, “B”, “A”, “C”, “B”, “B”, “A”, “C”) Kualitas terbaik secara berurutan adalah A, B dan C. Ubah vektor kategori menjadi faktor berurutan. Hitung jumlah produk untuk tiap kategori kualitas. Buat vektor keterangan dengan aturan: A → “Sangat Bagus” B → “Bagus” C → “Perlu Perbaikan” Buat vektor baru kode_barang dengan format: “BRG-01”, “BRG-02”, dst. Cetak pesan untuk produk dengan keterangan “Perlu Perbaikan”. Contohnya adalah:“Produk BRG-10 adalah produk yang perlu perbaikan”
# Load library untuk tampilan tabel lebih rapi
library(knitr)
library(kableExtra)
# Data kategori kualitas produk
kategori <- c("B", "A", "C", "B", "A", "C", "B", "B", "A", "C")
# Ubah ke faktor dengan urutan kualitas terbaik A, B, C
kategori <- factor(kategori, levels = c("A", "B", "C"), ordered = TRUE)
# Hitung jumlah produk tiap kategori
jumlah_kategori <- table(kategori)
# Buat vektor keterangan
keterangan <- ifelse(kategori == "A", "Sangat Bagus",
ifelse(kategori == "B", "Bagus", "Perlu Perbaikan"))
# Buat kode barang: BRG-01, BRG-02, dst.
kode_barang <- sprintf("BRG-%02d", 1:length(kategori))
# Gabungkan ke dalam tabel data frame
data_produk <- data.frame(
Kode = kode_barang,
Kategori = kategori,
Keterangan = keterangan
)
# Tampilkan tabel data produk dengan format cantik
kable(data_produk, caption = "Tabel Kualitas Produk") %>%
kable_styling(bootstrap_options = c("striped", "hover", "condensed", "responsive"),
full_width = FALSE, position = "center")
| Kode | Kategori | Keterangan |
|---|---|---|
| BRG-01 | B | Bagus |
| BRG-02 | A | Sangat Bagus |
| BRG-03 | C | Perlu Perbaikan |
| BRG-04 | B | Bagus |
| BRG-05 | A | Sangat Bagus |
| BRG-06 | C | Perlu Perbaikan |
| BRG-07 | B | Bagus |
| BRG-08 | B | Bagus |
| BRG-09 | A | Sangat Bagus |
| BRG-10 | C | Perlu Perbaikan |
# Tampilkan ringkasan jumlah produk per kategori
kable(as.data.frame(jumlah_kategori), caption = "Jumlah Produk per Kategori") %>%
kable_styling(bootstrap_options = c("striped", "hover"), position = "center")
| kategori | Freq |
|---|---|
| A | 3 |
| B | 4 |
| C | 3 |
# Buat pesan khusus untuk produk perlu perbaikan
kode_perlu <- kode_barang[keterangan == "Perlu Perbaikan"]
pesan <- paste("Produk", kode_perlu, "adalah produk yang perlu perbaikan")
pesan
## [1] "Produk BRG-03 adalah produk yang perlu perbaikan"
## [2] "Produk BRG-06 adalah produk yang perlu perbaikan"
## [3] "Produk BRG-10 adalah produk yang perlu perbaikan"
Barang diklasifikasikan ke dalam tiga kategori: A (Sangat Bagus), B (Bagus), dan C (Perlu Perbaikan). Hasil tabel menunjukkan distribusi jumlah barang dalam tiap kategori. Dengan adanya kode unik (BRG-01, BRG-02, dst), setiap barang dapat diidentifikasi dengan jelas. Interpretasi hasil menunjukkan bahwa barang kategori A dan B mayoritas dalam kondisi baik, sedangkan kategori C harus mendapat perhatian khusus.
# Data suhu udara selama 7 hari
suhu <- c(28.5, 30.2, 29.8, 31.0, 33.5, 27.5, 26.8)
# Nama hari (asumsikan Senin sampai Minggu, hari terakhir = hari tugas diberikan)
hari <- c("Senin", "Selasa", "Rabu", "Kamis", "Jumat", "Sabtu", "Minggu")
names(suhu) <- hari
# Hitung statistik dasar
rata2 <- mean(suhu)
maks <- max(suhu)
minim <- min(suhu)
cat("Rata-rata suhu:", rata2, "°C\n")
## Rata-rata suhu: 29.61429 °C
cat("Suhu maksimum:", maks, "°C\n")
## Suhu maksimum: 33.5 °C
cat("Suhu minimum :", minim, "°C\n\n")
## Suhu minimum : 26.8 °C
# Buat vektor status
status <- ifelse(suhu > 30, "Panas", "Normal")
# Tabel data suhu
data_suhu <- data.frame(
Hari = hari,
Suhu = suhu,
Status = status
)
# Tampilkan tabel lebih rapi
kable(data_suhu, caption = "Data Suhu Harian") %>%
kable_styling(bootstrap_options = c("striped", "hover", "condensed"),
full_width = FALSE, position = "center")
| Hari | Suhu | Status | |
|---|---|---|---|
| Senin | Senin | 28.5 | Normal |
| Selasa | Selasa | 30.2 | Panas |
| Rabu | Rabu | 29.8 | Normal |
| Kamis | Kamis | 31.0 | Panas |
| Jumat | Jumat | 33.5 | Panas |
| Sabtu | Sabtu | 27.5 | Normal |
| Minggu | Minggu | 26.8 | Normal |
# Daftar hari dengan suhu di atas rata-rata
cat("Hari dengan suhu di atas rata-rata (", round(rata2,1), "°C ):\n", sep = "")
## Hari dengan suhu di atas rata-rata (29.6°C ):
print(hari[suhu > rata2])
## [1] "Selasa" "Rabu" "Kamis" "Jumat"
# Loop interaktif untuk menampilkan suhu berdasarkan input pengguna
repeat {
input <- readline(prompt = "Masukkan nama hari (UpperCamelCase, misal: Senin): ")
if (!(input %in% hari)) {
cat("Program berhenti. Input tidak ditemukan.\n")
break
}
idx <- which(hari == input)
cat("Suhu hari", input, ":", suhu[idx], "°C (", status[idx], ")\n")
}
## Masukkan nama hari (UpperCamelCase, misal: Senin):
## Program berhenti. Input tidak ditemukan.
#Hitung persentase hari yang dikategorikan 'Panas'
persen_panas <- mean(status == "Panas") * 100
cat("\nPersentase hari dengan kategori Panas:", persen_panas, "%\n")
##
## Persentase hari dengan kategori Panas: 42.85714 %
Rata-rata suhu selama satu minggu adalah 29,6°C. Suhu tertinggi tercatat pada hari Jumat sebesar 33,5°C, sedangkan suhu terendah terjadi pada hari Minggu yaitu 26,8°C. Dengan klasifikasi sederhana, hari yang suhunya di atas 30°C ditandai sebagai Panas. Hasil menunjukkan hanya dua hari (Kamis dan Jumat) yang panas, sedangkan hari lainnya termasuk kategori normal.