Tugas Individu Pemrograman Statistika

Author

Freditasari Purwa Hidayat (M0501251052)

Soal 1 – Analisis Skor Ujian

Menambahkan Nama Mahasiswa pada Vektor nilai

Definisikan variabel nilai dan nama:

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")

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:

  • ≥ 60Lulus
  • 45–59Perbaikan
  • < 45Tidak 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%