# Data suhu
suhu <- c(32, 33, 31, 34, 35, 30, 29, 33, 32, 34)
# Rata-rata
rata_rata <- mean(suhu)
# Median
median_suhu <- median(suhu)
# Standar deviasi
sd_suhu <- sd(suhu)
# Menampilkan hasil
rata_rata
## [1] 32.3
median_suhu
## [1] 32.5
sd_suhu
## [1] 1.888562
Penjelasan mean(suhu) menghitung rata-rata seluruh suhu. median(suhu) mencari nilai tengah dari data suhu. sd(suhu) menghitung standar deviasi, yaitu ukuran seberapa menyebar data suhu dari rata-ratanya.
Hasilnya:
Rata-rata = 32.3 °C Median = 32.5 °C Standar deviasi = 1.889 °C Kesimpulan
Rata-rata suhu selama 10 hari adalah 32,3°C, median 32,5°C, dan standar deviasi sekitar 1,89°C. Artinya suhu harian relatif tidak terlalu jauh dari rata-ratanya.
# Suhu tertinggi
suhu_tertinggi <- max(suhu)
# Posisi hari dengan suhu tertinggi
hari_tertinggi <- which.max(suhu)
suhu_tertinggi
## [1] 35
hari_tertinggi
## [1] 5
Artinya:
Suhu tertinggi = 35°C Terjadi pada = hari ke-5 Penjelasan
Fungsi:
max(suhu) mencari nilai terbesar dalam vector suhu.
Sedangkan:
which.max(suhu) mencari posisi atau indeks tempat nilai terbesar tersebut berada.
Kesimpulan
Suhu tertinggi adalah 35°C dan terjadi pada hari ke-5.
# Melihat suhu yang berada di atas rata-rata
suhu > rata_rata
## [1] FALSE TRUE FALSE TRUE TRUE FALSE FALSE TRUE FALSE TRUE
# Mengambil suhu yang di atas rata-rata
suhu_diatas_rata <- suhu[suhu > rata_rata]
# Menghitung jumlah harinya
jumlah_hari <- sum(suhu > rata_rata)
suhu_diatas_rata
## [1] 33 34 35 33 34
jumlah_hari
## [1] 5
Kenapa sum() bisa digunakan?
Dalam R:
TRUE = 1 FALSE = 0
Sehingga:
sum(suhu > rata_rata) menghitung jumlah TRUE.
Dalam data ini ada:
5 TRUE
maka hasilnya:
5 hari Kesimpulan
Terdapat 5 hari dengan suhu di atas rata-rata 32,3°C.
# FINAL A - DATA CUACA
suhu <- c(32, 33, 31, 34, 35, 30, 29, 33, 32, 34)
# A.a Rata-rata, median, dan standar deviasi
rata_rata <- mean(suhu)
median_suhu <- median(suhu)
sd_suhu <- sd(suhu)
rata_rata
## [1] 32.3
median_suhu
## [1] 32.5
sd_suhu
## [1] 1.888562
# A.b Hari dengan suhu tertinggi
suhu_tertinggi <- max(suhu)
hari_tertinggi <- which.max(suhu)
suhu_tertinggi
## [1] 35
hari_tertinggi
## [1] 5
# A.c Jumlah hari dengan suhu di atas rata-rata
suhu_diatas_rata <- suhu[suhu > rata_rata]
jumlah_hari <- sum(suhu > rata_rata)
suhu_diatas_rata
## [1] 33 34 35 33 34
jumlah_hari
## [1] 5
# Data jumlah penumpang dan hari
penumpang <- c(45, 52, 49, 60, 55, 70, 65)
hari <- c(
"Senin", "Selasa", "Rabu", "Kamis",
"Jumat", "Sabtu", "Minggu"
)
# Membuat data frame
df_transport <- data.frame(
Hari = hari,
Penumpang = penumpang
)
# Menampilkan data frame
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
Fungsi:
data.frame() digunakan untuk menggabungkan vector hari dan penumpang menjadi sebuah tabel. Setiap baris menunjukkan satu hari beserta jumlah penumpangnya.
Kesimpulan
Data transportasi selama 7 hari berhasil disusun dalam df_transport yang terdiri dari variabel Hari dan Penumpang.
# Menghitung rata-rata penumpang Senin-Jumat
rata_kerja <- mean(penumpang[1:5])
rata_kerja
## [1] 52.2
Kesimpulan
Rata-rata jumlah penumpang pada hari kerja Senin–Jumat adalah 52,2 ribu orang per hari.
# Jumlah penumpang terbanyak
penumpang_terbanyak <- max(penumpang)
# Posisi hari dengan penumpang terbanyak
posisi_terbanyak <- which.max(penumpang)
# Nama hari
hari_terbanyak <- hari[posisi_terbanyak]
penumpang_terbanyak
## [1] 70
hari_terbanyak
## [1] "Sabtu"
Fungsi:
max(penumpang) mencari jumlah penumpang terbesar.
Sedangkan:
which.max(penumpang) mencari posisi nilai terbesar tersebut.
Kemudian:
hari[posisi_terbanyak] mengambil nama hari berdasarkan posisi tersebut.
Kesimpulan
Jumlah penumpang terbanyak terjadi pada Sabtu, yaitu sebanyak 70 ribu orang.
# Jumlah penumpang Senin
penumpang_senin <- penumpang[1]
# Jumlah penumpang Sabtu
penumpang_sabtu <- penumpang[6]
# Persentase peningkatan
persen_naik <- (
(penumpang_sabtu - penumpang_senin) /
penumpang_senin
) * 100
persen_naik
## [1] 55.55556
round(persen_naik, 2)
## [1] 55.56
Kesimpulan
Jumlah penumpang meningkat sebesar 55,56% dari Senin ke Sabtu.
# FINAL B - DATA TRANSPORTASI
# Data
penumpang <- c(45, 52, 49, 60, 55, 70, 65)
hari <- c(
"Senin", "Selasa", "Rabu", "Kamis",
"Jumat", "Sabtu", "Minggu"
)
# B.a 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
# B.b Rata-rata penumpang hari kerja Senin-Jumat
rata_kerja <- mean(penumpang[1:5])
rata_kerja
## [1] 52.2
# B.c Hari dengan jumlah penumpang terbanyak
penumpang_terbanyak <- max(penumpang)
posisi_terbanyak <- which.max(penumpang)
hari_terbanyak <- hari[posisi_terbanyak]
penumpang_terbanyak
## [1] 70
hari_terbanyak
## [1] "Sabtu"
# B.d Persentase peningkatan Senin ke Sabtu
penumpang_senin <- penumpang[1]
penumpang_sabtu <- penumpang[6]
persen_naik <- (
(penumpang_sabtu - penumpang_senin) /
penumpang_senin
) * 100
round(persen_naik, 2)
## [1] 55.56
# Data harga beras
harga_beras <- c(
12000, 12200, 12150, 12300,
12400, 12500, 12600, 12750
)
minggu <- 1:8
# 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
Fungsi:
data.frame() digunakan untuk menggabungkan data minggu dan harga_beras menjadi sebuah tabel. Setiap baris menunjukkan harga beras pada minggu tertentu.
Kesimpulan
Data harga beras selama 8 minggu berhasil disusun dalam data frame df_beras dengan variabel Minggu dan Harga.
# Menghitung perubahan harga setiap minggu
kenaikan <- diff(harga_beras)
# Menghitung rata-rata perubahan harga
rata_kenaikan <- mean(kenaikan)
rata_kenaikan
## [1] 107.1429
Kesimpulan
Rata-rata perubahan harga beras setiap minggu adalah sekitar Rp107,14. Secara keseluruhan, harga beras cenderung mengalami kenaikan.
# Selisih harga antar minggu
selisih_harga <- diff(harga_beras)
selisih_harga
## [1] 200 -50 150 100 100 100 150
Kesimpulan
Harga beras sebagian besar mengalami kenaikan. Penurunan hanya terjadi dari minggu ke-2 ke minggu ke-3, yaitu sebesar Rp50.
# Kenaikan harga terbesar
kenaikan_tertinggi <- max(selisih_harga)
# Menentukan minggu terjadinya kenaikan tertinggi
minggu_kenaikan_tertinggi <- which.max(selisih_harga) + 1
kenaikan_tertinggi
## [1] 200
minggu_kenaikan_tertinggi
## [1] 2
Ditambahkan +1 karena nilai pertama dari diff() merupakan perubahan dari minggu pertama menuju minggu kedua.
Kesimpulan
Kenaikan harga beras tertinggi adalah sebesar Rp200, yaitu terjadi dari minggu ke-1 ke minggu ke-2. Jadi minggu dengan kenaikan tertinggi adalah minggu ke-2.
# FINAL C - DATA EKONOMI
# Data
harga_beras <- c(
12000, 12200, 12150, 12300,
12400, 12500, 12600, 12750
)
minggu <- 1:8
# C.a 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
# C.b Rata-rata kenaikan harga per minggu
kenaikan <- diff(harga_beras)
rata_kenaikan <- mean(kenaikan)
round(rata_kenaikan, 2)
## [1] 107.14
# C.c Selisih harga antar minggu
selisih_harga <- diff(harga_beras)
selisih_harga
## [1] 200 -50 150 100 100 100 150
# C.d Minggu dengan kenaikan harga tertinggi
kenaikan_tertinggi <- max(selisih_harga)
minggu_kenaikan_tertinggi <- which.max(selisih_harga) + 1
kenaikan_tertinggi
## [1] 200
minggu_kenaikan_tertinggi
## [1] 2
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
pertumbuhan_rata <- apply(
populasi,
1,
function(x) mean(diff(x))
)
pertumbuhan_rata
## Kec_A Kec_B Kec_C
## 5.000000 2.333333 2.000000
round(pertumbuhan_rata, 2)
## Kec_A Kec_B Kec_C
## 5.00 2.33 2.00
Kesimpulan
Pertumbuhan penduduk rata-rata terbesar terjadi di Kecamatan A, yaitu 5 ribu orang per tahun. Kecamatan B sekitar 2,33 ribu, dan Kecamatan C 2 ribu orang per tahun.
populasi_2022 <- populasi[, "2022"]
populasi_2022
## Kec_A Kec_B Kec_C
## 65 47 76
populasi_tertinggi <- max(populasi_2022)
kecamatan_tertinggi <- names(
which.max(populasi_2022)
)
populasi_tertinggi
## [1] 76
kecamatan_tertinggi
## [1] "Kec_C"
Kesimpulan
Pada tahun 2022, populasi tertinggi terdapat di Kecamatan C, yaitu sebanyak 76 ribu orang.
total_tiap_tahun <- colSums(populasi)
total_tiap_tahun
## 2019 2020 2021 2022
## 160 169 179 188
Kesimpulan
Total penduduk ketiga kecamatan terus meningkat, dari 160 ribu orang pada 2019 menjadi 188 ribu orang pada 2022.
# BAGIAN D - MATRIKS POPULASI
# Membuat 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")
populasi
## 2019 2020 2021 2022
## Kec_A 50 55 60 65
## Kec_B 40 42 45 47
## Kec_C 70 72 74 76
# D.a Pertumbuhan penduduk rata-rata tiap kecamatan
pertumbuhan_rata <- apply(
populasi,
1,
function(x) mean(diff(x))
)
round(pertumbuhan_rata, 2)
## Kec_A Kec_B Kec_C
## 5.00 2.33 2.00
# D.b Kecamatan dengan populasi tertinggi tahun 2022
populasi_2022 <- populasi[, "2022"]
populasi_tertinggi <- max(populasi_2022)
kecamatan_tertinggi <- names(which.max(populasi_2022))
populasi_tertinggi
## [1] 76
kecamatan_tertinggi
## [1] "Kec_C"
# D.c Total penduduk tiap tahun
total_tiap_tahun <- colSums(populasi)
total_tiap_tahun
## 2019 2020 2021 2022
## 160 169 179 188
harga_beras <- c(
12000, 12200, 12150, 12300,
12400, 12500, 12600, 12750
)
deteksi_kenaikan <- function(harga) {
# Menghitung selisih harga antar minggu
kenaikan <- diff(harga)
# Mencari posisi minggu dengan kenaikan > 200
minggu <- which(kenaikan > 200) + 1
return(minggu)
}
Kesimpulan
Fungsi deteksi_kenaikan() berhasil dibuat untuk mendeteksi minggu yang mengalami kenaikan harga lebih dari Rp200.
deteksi_kenaikan(harga_beras)
## numeric(0)
diff(harga_beras)
## [1] 200 -50 150 100 100 100 150
kenaikan > 200
## [1] FALSE FALSE FALSE FALSE FALSE FALSE FALSE
Kesimpulan: Tidak terdapat minggu yang mengalami kenaikan harga lebih dari Rp200. Oleh karena itu, fungsi deteksi_kenaikan() menghasilkan integer(0).
# BAGIAN E - FUNGSI CUSTOM
# Data harga beras dari Bagian C
harga_beras <- c(
12000, 12200, 12150, 12300,
12400, 12500, 12600, 12750
)
# Membuat fungsi deteksi kenaikan
deteksi_kenaikan <- function(harga) {
# Menghitung perubahan harga
kenaikan <- diff(harga)
# Mencari minggu dengan kenaikan > 200
minggu <- which(kenaikan > 200) + 1
return(minggu)
}
# Melihat perubahan harga
diff(harga_beras)
## [1] 200 -50 150 100 100 100 150
# Menguji fungsi
deteksi_kenaikan(harga_beras)
## numeric(0)