Bagian A: Data Cuaca

suhu <- c(32, 33, 31, 34, 35, 30, 29, 33, 32, 34)

a. Hitung rata-rata, median, standar deviasi suhu

rata2_suhu <- mean(suhu)
med_suhu <- median(suhu)
sd_suhu <- sd(suhu)
cat("Rata-rata suhu: ", rata2_suhu, "\n")
## Rata-rata suhu:  32.3
cat("Median suhu: ", med_suhu, "\n")
## Median suhu:  32.5
cat("Standar deviasi suhu: ", sd_suhu)
## Standar deviasi suhu:  1.888562

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)