Bagian A: Data Cuaca
suhu <- c(32, 33, 31, 34, 35, 30, 29, 33, 32, 34)
b. Cari hari dengan suhu tertinggi
hari_tertinggi <- which.max(suhu)
cat("Suhu tertinggi terjadi pada hari ke-", hari_tertinggi, "dengan suhu", suhu[hari_tertinggi])
## Suhu tertinggi terjadi pada hari ke- 5 dengan suhu 35
c.Tentukan berapa hari dengan suhu di atas rata-rata
hari_atasrata2 <- sum(suhu > rata2_suhu)
cat("Jumlah hari dengan suhu di atas rata-rata: ", hari_atasrata2, "hari")
## Jumlah hari dengan suhu di atas rata-rata: 5 hari
Bagian B: Data Transportasi
penumpang <- c(45, 52, 49, 60, 55, 70, 65)
hari <- c("Senin", "Selasa", "Rabu", "Kamis", "Jumat", "Sabtu", "Minggu")
a. Buat dara frame df_transport dari data di atas
df_transport <- data.frame(hari = hari, penumpang = penumpang)
df_transport
## hari penumpang
## 1 Senin 45
## 2 Selasa 52
## 3 Rabu 49
## 4 Kamis 60
## 5 Jumat 55
## 6 Sabtu 70
## 7 Minggu 65
b. Hitung rata-rata jumlah penumpang pada hari kerja
(senin-jumat)
rata_hari_kerja <- mean(df_transport$penumpang[1:5])
cat("Rata-rata penumpang hari kerja:", rata_hari_kerja)
## Rata-rata penumpang hari kerja: 52.2
c. Cari hari dengan penumpang terbanyak
hari_terbanyak <- df_transport$hari[which.max(df_transport$penumpang)]
cat("Hari dengan penumpang terbanyak:", hari_terbanyak)
## Hari dengan penumpang terbanyak: Sabtu
d. Berapa persen peningkatan jumlah penumpang dari hari seni ke
sabtu
p_senin <- df_transport$penumpang[df_transport$hari == "Senin"]
p_sabtu <- df_transport$penumpang[df_transport$hari == "Sabtu"]
persen_peningkatan <- ((p_sabtu - p_senin) / p_senin) * 100
cat("Persentase peningkatan Senin ke Sabtu:", round(persen_peningkatan, 2), "%")
## Persentase peningkatan Senin ke Sabtu: 55.56 %
Bagian C: Data Ekonomi
harga_beras <- c(12000, 12200, 12150, 12300, 12400, 12500, 12600, 12750)
minggu <- 1:8
a. Buat data frame df_beras berisi minggu dan harga
df_beras <- data.frame(minggu = minggu, harga = harga_beras)
df_beras
## minggu harga
## 1 1 12000
## 2 2 12200
## 3 3 12150
## 4 4 12300
## 5 5 12400
## 6 6 12500
## 7 7 12600
## 8 8 12750
b. Hitung rata-rata kenaikan harga per minggu dan c.Gunakan fungsi
diff() untuk menghitung selisih harga antar minggu.
selisih_harga <- diff(df_beras$harga)
rata_kenaikan <- mean (selisih_harga)
cat("Rata-rata kenaikan harga:", rata_kenaikan)
## Rata-rata kenaikan harga: 107.1429
d. Tentukan minggu dengan kenaikan harga tertinggi
minggu_kenaikan_max <- which.max(selisih_harga)
cat("Kenaikan harga tertinggi terjadi pada minggu ke-", minggu_kenaikan_max)
## Kenaikan harga tertinggi terjadi pada minggu ke- 1
Bagian D: Matriks Populasi
populasi <- matrix(c(50, 55, 60, 65, # Kecamatan A
40, 42, 45, 47, # Kecamatan B
70, 72, 74, 76), # Kecamatan C
nrow = 3, byrow = TRUE)
rownames(populasi) <- c("Kec_A", "Kec_B", "Kec_C")
colnames(populasi) <- c("2019", "2020", "2021", "2022")
a. Hitung pertumbuhan penduduk rata-rata tiap kecamatan dengan
apply()
pertumbuhan_rata2 <- apply(populasi, 1, function(x) mean(diff(x)))
cat("Pertumbuhan penduduk rata-rata per kecamatan:", pertumbuhan_rata2)
## Pertumbuhan penduduk rata-rata per kecamatan: 5 2.333333 2
b. Tentukan kecamatan dengan populasi tertinggi pada tahun 2022
populasi_2022 <- populasi[, "2022"]
kec_tertinggi_2022 <- names(which.max(populasi_2022))
cat("Kecamatan dengan populasi tertinggi di 2022:", kec_tertinggi_2022)
## Kecamatan dengan populasi tertinggi di 2022: Kec_C
c. Hitung total penduduk tiap tahun
total_per_tahun <- colSums(populasi)
cat("Total penduduk tiap tahun:\n")
## Total penduduk tiap tahun:
print(stack(total_per_tahun))
## values ind
## 1 160 2019
## 2 169 2020
## 3 179 2021
## 4 188 2022
Bagian E: Fungsi Custom
a. Buatlah fungsi deteksi_kenaikan()
deteksi_kenaikan <- function(vektor_harga) {
selisih <- diff(vektor_harga)
posisi_minggu <- which(selisih > 200) + 1
return(posisi_minggu)
}
b. Uji fungsi ini pada data harga beras di bagian c
hasil_deteksi <- deteksi_kenaikan(df_beras$harga)
if(length(hasil_deteksi) == 0) {
cat("Tidak ada minggu dengan kenaikan harga LEBIH dari 200 rupiah (kenaikan maksimal tepat 200 rupiah)")
} else {
cat("Kenaikan harga lebih dari 200 rupiah terjadi pada hari minggu ke: ", hasil_deteksi)
}
## Tidak ada minggu dengan kenaikan harga LEBIH dari 200 rupiah (kenaikan maksimal tepat 200 rupiah)