Bagian A : Data Cuaca

suhu <- c(32, 33, 31, 34, 35, 30, 29, 33, 32, 34)
  1. Rata-rata, median, dan standar deviasi
mean(suhu)
## [1] 32.3
median(suhu)
## [1] 32.5
sd(suhu)
## [1] 1.888562
  1. Hari dengan suhu tertinggi
which.max(suhu)
## [1] 5
  1. Jumlah hari dengan suhu di atas rata-rata
mean_suhu <- mean(suhu)
sum(suhu > mean_suhu)
## [1] 5

Bagian B : Data Transportasi

penumpang <- c(45, 52, 49, 60, 55, 70, 65)

hari <- c("Senin", "Selasa", "Rabu", "Kamis",
          "Jumat", "Sabtu", "Minggu")
  1. Membuat data frame
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
  1. Rata-rata penumpang hari kerja
mean(df_transport$Penumpang[1:5])
## [1] 52.2
  1. Hari dengan penumpang terbanyak
df_transport$Hari[which.max(df_transport$Penumpang)]
## [1] "Sabtu"
  1. Persentase peningkatan Senin ke Sabtu
peningkatan <- (penumpang[6] - penumpang[1]) /
               penumpang[1] * 100
peningkatan
## [1] 55.55556

Bagian C : Data Ekonomi

harga_beras <- c(12000, 12200, 12150, 12300,
                 12400, 12500, 12600, 12750)
minggu <- 1:8
  1. Membuat data frame
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
  1. Rata-rata kenaikan harga per minggu
kenaikan <- diff(harga_beras)
mean(kenaikan)
## [1] 107.1429
  1. Menggunakan diff()
diff(harga_beras)
## [1] 200 -50 150 100 100 100 150
  1. Minggu dengan kenaikan tertinggi
selisih <- diff(harga_beras)
which.max(selisih)
## [1] 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")

populasi
##       2019 2020 2021 2022
## Kec_A   50   55   60   65
## Kec_B   40   42   45   47
## Kec_C   70   72   74   76
  1. Pertumbuhan penduduk rata-rata tiap kecamatan dengan apply()
pertumbuhan_rata <- apply(populasi, 1, function(x) {
  mean(diff(x))
})
pertumbuhan_rata
##    Kec_A    Kec_B    Kec_C 
## 5.000000 2.333333 2.000000
  1. Kecamatan dengan populasi tertinggi tahun 2022
populasi_2022 <- populasi[, "2022"]

rownames(populasi)[which.max(populasi_2022)]
## [1] "Kec_C"
  1. Total penduduk tiap tahun
total_tahun <- apply(populasi, 2, sum)

total_tahun
## 2019 2020 2021 2022 
##  160  169  179  188

Bagian E : Fungsi Custom

deteksi_kenaikan <- function(harga) {
  kenaikan <- diff(harga)
  
  which(kenaikan > 200) + 1
}

Uji coba

deteksi_kenaikan(harga_beras)
## numeric(0)

Artinya tidak ada minggu yang mengalami kenaikan lebih dari Rp200.