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.