A. DATA CUACA

suhu <- c(32, 33, 31, 34, 35, 30, 29, 33, 32, 34)
suhu
##  [1] 32 33 31 34 35 30 29 33 32 34

1. Mean, Median, Modus

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

2. Hari dengan suhu tertinggi

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

Suhu tertinggi adalah 35°C pada hari ke-5.

3. Berapa hari dengan suhu diatas rata-rata

sd(suhu)
## [1] 1.888562
suhu > mean(suhu)
##  [1] FALSE  TRUE FALSE  TRUE  TRUE FALSE FALSE  TRUE FALSE  TRUE

Artinya terdapat beberapa hari yang suhunya lebih dari 32,3°C. Mari kita hitung jumlahnya

sum(suhu > mean(suhu))
## [1] 5

Terdapat 5 hari dengan suhu di atas rata-rata.

B. DATA TRANSPORTASI

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

hari <- c("Senin", "Selasa", "Rabu", "Kamis",
          "Jumat", "Sabtu", "Minggu")

1. Data frame df_transport

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

hari <- c("Senin", "Selasa", "Rabu", "Kamis",
          "Jumat", "Sabtu", "Minggu")

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

2. Rata-rata penumpang hari kerja

Ambil 5 data pertama, karena hari kerja mencakup hari senin - jumat

penumpang[1:5]
## [1] 45 52 49 60 55
mean(penumpang[1:5])
## [1] 52.2

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

3. Mencari hari dengan penumpang terbanyak

df_transport$hari[which.max(df_transport$penumpang)]
## [1] "Sabtu"

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

4. Persentase peningkatan dari Senin ke Sabtu

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

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

C. DATA EKONOMI

harga_beras <- c(12000, 12200, 12150, 12300,
                 12400, 12500, 12600, 12750)

minggu <- 1:8

1. Data frame df_beras

harga_beras <- c(12000, 12200, 12150, 12300,
                 12400, 12500, 12600, 12750)

minggu <- 1:8
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

2. Menghitung rata-rata kenaikan harga per minggu

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

3.Menggunakan diff()

selisih <- diff(harga_beras)

selisih
## [1] 200 -50 150 100 100 100 150

4. Menentukan minggu dengan kenaikan harga tertinggi

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

Kenaikan terbesar terjadi pada Minggu 1 - Minggu 2, dengan kenaikan Rp200/kg.

D. MATRIKS POPULASI

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")

1. Pertumbuhan penduduk rata-rata tiap kecamatan dengan apply()

apply(populasi, 1, mean)
## Kec_A Kec_B Kec_C 
##  57.5  43.5  73.0

2. Kecamatan dengan populasi tertinggi tahun 2022

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

Kecamatan dengan populasi tertinggi pada tahun 2022 adalah Kec_C, yaitu 76 ribu orang.

3. Menghitung total penduduk tiap tahun

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

E. FUNGSI CUSTOM

deteksi_kenaikan <- function(harga) {
  
  selisih <- diff(harga)
  
  which(selisih > 200)
}

Uji pada soal nomor 3

deteksi_kenaikan(harga_beras)
## integer(0)

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