Data suhu rata-rata harian di Semarang selama 10 hari terakhir dicatat sebagai berikut:
# data awal
suhu <- c(32,33,31,34,35,30,29,33,32,34)
# a. rata-rata, median, standar deviasi suhu
mean_suhu <- mean(suhu)
med_suhu <- median(suhu)
sd_suhu <- sd(suhu)
mean_suhu; med_suhu; sd_suhu
## [1] 32.3
## [1] 32.5
## [1] 1.888562
# b. hari ke- dengan suhu tertinggi
hari_tertinggi <- which.max(suhu)
hari_tertinggi
## [1] 5
# c. jumlah hari dengan suhu di atas rata-rata
hari_diatas_rata <- sum(suhu>mean_suhu)
hari_diatas_rata
## [1] 5
Jumlah penumpang Trans Semarang (dalam ribuan orang) selama 7 hari:
penumpang <- c(45,52,49,60,55,70,65)
hari <- c("Senin","Selasa","Rabu","Kamis","Jumat","Sabtu","Minggu")
# a. buat data frame
df_transport <- data.frame(hari, 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. rata-rata penumpang pada hari kerja
rata_hari_kerja <- mean(df_transport$penumpang[1:5])
rata_hari_kerja
## [1] 52.2
# c. hari dengan penumpang terbanyak
hari_terbanyak <- df_transport$hari[which.max(df_transport$penumpang)]
hari_terbanyak
## [1] "Sabtu"
# d. persen peningkatan dari Senin ke Sabtu
peningkatan_persen <- ((df_transport$penumpang[df_transport$hari == "Sabtu"] - df_transport$penumpang[df_transport$hari == "Selasa"]) / df_transport$penumpang[df_transport$hari == "Senin"])*100
peningkatan_persen
## [1] 40
# data awal
harga_beras <- c(12000, 12200, 12150, 12300, 12400, 12500, 12600, 12750)
minggu <- 1:8
# a. Buat data frame df_beras
df_beras <- data.frame(minggu, harga_beras)
df_beras
## minggu harga_beras
## 1 1 12000
## 2 2 12200
## 3 3 12150
## 4 4 12300
## 5 5 12400
## 6 6 12500
## 7 7 12600
## 8 8 12750
# c. Selisih harga antar minggu dengan diff()
selisih_harga <- diff(harga_beras)
selisih_harga
## [1] 200 -50 150 100 100 100 150
# b. Rata-rata kenaikan harga per minggu
rata_kenaikan <- mean(selisih_harga)
rata_kenaikan
## [1] 107.1429
# d. Minggu dengan kenaikan harga tertinggi (ditambah 1 karena diff mengurangi 1 elemen)
minggu_kenaikan_tertinggi <- which.max(selisih_harga) + 1
minggu_kenaikan_tertinggi
## [1] 2
# data awal
populasi <- matrix(c(50, 55, 60, 65,
40, 42, 45, 47,
70, 72, 74, 76), nrow = 3, byrow = TRUE)
rownames(populasi) <- c("Kec_A", "Kec_B", "Kec_C")
colnames(populasi) <- c("2019", "2020", "2021", "2022")
# a. Pertumbuhan penduduk rata-rata tiap kecamatan (selisih total dibagi 3 tahun)
pertumbuhan_rata <- apply(populasi, 1, function(x) (x[4] - x[1]) / 3)
pertumbuhan_rata
## Kec_A Kec_B Kec_C
## 5.000000 2.333333 2.000000
# b. Kecamatan dengan populasi tertinggi pada tahun 2022
kec_tertinggi_2022 <- names(which.max(populasi[, "2022"]))
kec_tertinggi_2022
## [1] "Kec_C"
# c. Total penduduk tiap tahun
total_per_tahun <- colSums(populasi)
total_per_tahun
## 2019 2020 2021 2022
## 160 169 179 188
# buat fungsi deteksi_kenaikan
deteksi_kenaikan <- function(vektor_harga) {
selisih <- diff(vektor_harga)
deteksi_kenaikan
# posisi minggu di mana kenaikan terjadi (ditambah 1 karena selisih diukur ke minggu berikutnya)
posisi_minggu <- which(selisih > 200) + 1
return(posisi_minggu)
}
# uji fungsi pada data harga beras (Bagian C)
hasil_deteksi <- deteksi_kenaikan(harga_beras)
hasil_deteksi
## numeric(0)