Bagian A: Data Cuaca

Data suhu rata-rata harian (°C) di Semarang selama 10 hari terakhir dicatat sebagai berikut:

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

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

mean(suhu)
## [1] 32.3
median(suhu)
## [1] 32.5
sd(suhu)
## [1] 1.888562

Jadi rata-rata suhu adalah 32,3°C, median suhu adalah 32,5°C, dan standar deviasi suhu adalah 1,8888562°C.

b. Cari hari dengan suhu tertinggi.

which.max(suhu)
## [1] 5
max(suhu)
## [1] 35

Suhu tertinggi terjadi pada hari ke-5 dengan suhu 35°C.

c. Tentukan berapa hari dengan suhu di atas rata-rata.

Jumlah_hari_di_atas_rata_rata <- sum(suhu > mean(suhu))
Hari_hari_yang_di_atas_rata_rata <- suhu > mean(suhu)

Jumlah_hari_di_atas_rata_rata
## [1] 5
Hari_hari_yang_di_atas_rata_rata
##  [1] FALSE  TRUE FALSE  TRUE  TRUE FALSE FALSE  TRUE FALSE  TRUE
which(suhu > mean(suhu))
## [1]  2  4  5  8 10

Suhu berada di atas rata-rata di 5 hari yaitu hari ke-2, 4, 5, 8, 10.


Bagian B: Data Transportasi

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 dari data di atas.

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. Hitung rata-rata jumlah penumpang pada hari kerja (Senin–Jumat).

mean(df_transport$penumpang[1:5])
## [1] 52.2

Rata-rata jumlah penumpang pada hari kerja adalah 52,2 ribu orang.

c. Cari hari dengan penumpang terbanyak.

indeks_terbanyak <- which.max(df_transport$penumpang)
df_transport[indeks_terbanyak, ]
##    hari penumpang
## 6 Sabtu        70

Jumlah penumpang terbanyak terjadi pada Sabtu, yaitu 70 ribu orang.

d. Berapa persen peningkatan jumlah penumpang dari hari Senin ke Sabtu?

Persentase peningkatan dihitung menggunakan jumlah penumpang Senin sebagai nilai awal: \[ \text{Peningkatan (%)} = \frac{\text{Penumpang Sabtu} - \text{Penumpang Senin}} {\text{Penumpang Senin}} \times 100\%. \]

round(((penumpang[6] - penumpang[1]) / penumpang[1]) * 100, 2)
## [1] 55.56

Peningkatan jumlah penumpang dari Senin ke Sabtu adalah 55,56%.


Bagian C: Data Ekonomi

Harga beras (Rp/kg) di pasar tradisional selama 8 minggu:

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, 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

b. Hitung rata-rata kenaikan harga per minggu.

mean(diff(harga_beras))
## [1] 107.1429

Rata-rata perubahan harga beras adalah Rp107,1429/kg per minggu.

c. Gunakan fungsi diff() untuk menghitung selisih harga antar minggu.

diff(harga_beras)
## [1] 200 -50 150 100 100 100 150

d. Tentukan minggu dengan kenaikan harga tertinggi.

Hilangkan Minggu 1 untuk mencari Minggu dengan kenaikan tertinggi.

max(diff(harga_beras))
## [1] 200
which.max(diff(harga_beras))
## [1] 1

Kenaikan terbesar terjadi dari Minggu 1 ke Minggu 2, dengan kenaikan Rp200/kg.


Bagian D: Matriks Populasi

Data jumlah penduduk (dalam ribuan) di 3 kecamatan (A, B, C) selama 4 tahun terakhir:

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")
populasi
##       2019 2020 2021 2022
## Kec_A   50   55   60   65
## Kec_B   40   42   45   47
## Kec_C   70   72   74   76

a. Hitung pertumbuhan penduduk rata-rata tiap kecamatan dengan apply().

Pertumbuhan penduduk tiap kecamatan:

apply(populasi, 1, function(x) {diff(x)})
##      Kec_A Kec_B Kec_C
## 2020     5     2     2
## 2021     5     3     2
## 2022     5     2     2

Rata_rata pertumbuhan penduduk tiap kecamatan:

apply(populasi, 1, function(x) {mean(diff(x))})
##    Kec_A    Kec_B    Kec_C 
## 5.000000 2.333333 2.000000

Pertambahan penduduk rata-rata Kecamatan A adalah 5 ribu jiwa per tahun, Kecamatan B 2,33 ribu jiwa per tahun, dan Kecamatan C 2 ribu jiwa per tahun.

b. Tentukan kecamatan dengan populasi tertinggi pada tahun 2022.

rownames(populasi)[which.max(populasi[, "2022"])]
## [1] "Kec_C"
max(populasi [, "2022"])
## [1] 76

Kecamatan dengan populasi tertinggi adalah Kecamatan C dengan populasi 76 ribu jiwa.

c. Hitung total penduduk tiap tahun.

apply(populasi, 2, sum)
## 2019 2020 2021 2022 
##  160  169  179  188

Total penduduk pada tahun 2019 adalah 160 ribu jiwa, tahun 2020 adalah 169 ribu jiwa, tahun 2021 adalah 179 ribu jiwa, dan tahun 2022 adalah 188 ribu jiwa.


Bagian E: Fungsi Custom

Buatlah fungsi deteksi_kenaikan() yang menerima input sebuah vektor harga, lalu mengembalikan posisi minggu di mana terjadi kenaikan harga lebih dari 200 rupiah.
deteksi_kenaikan <- function(harga) {
  selisih <- diff(harga)
  which(selisih > 200)
}
Uji fungsi ini pada data harga beras di Bagian C.

Uji fungsi Bagian C:

deteksi_kenaikan(harga_beras)
## integer(0)

Tidak terdapat minggu yang mengalami kenaikan harga lebih dari Rp200/kg.