# 1. Nilai UTS pada contoh 1.2
# Data nilai UTS
nilai <- c(40, 96, 57, 52, 84, 72, 60,
85, 86, 73, 81, 78, 89, 54, 62)
n <- length(nilai)
# Menghitung jumlah
total <- 0
for (i in 1:n) {
total <- total + nilai[i]
}
# Menghitung rata-rata
rata <- total / n
# Menghitung jumlah kuadrat selisih
jumlah_kuadrat <- 0
for (i in 1:n) {
jumlah_kuadrat <- jumlah_kuadrat +
(nilai[i] - rata)^2
}
# Menghitung simpangan baku sampel
sb <- sqrt(jumlah_kuadrat / (n - 1))
cat("Jumlah nilai :", total, "\n")
## Jumlah nilai : 1069
cat("Rata-rata :", round(rata, 2), "\n")
## Rata-rata : 71.27
cat("Simpangan baku :", round(sb, 2), "\n")
## Simpangan baku : 16.26
#2. Modifikasi cariIdx
CariIdxMaks <- function(A) {
maks <- 1
for (i in 2:length(A)) {
if (A[i] >= A[maks]) {
maks <- i
}
}
return(maks)
}
data <- c(10, 20, 30, 20, 30)
hasil <- CariIdxMaks(data)
cat("Indeks maksimum terakhir =", hasil, "\n")
## Indeks maksimum terakhir = 5
cat("Nilai maksimum =", data[hasil], "\n")
## Nilai maksimum = 30
# 3. Membuat prosedur MaksMin sekaligus
maks_min_sekaligus <- function(L) {
maks <- L[1]
minimum <- L[1]
for (i in 2:length(L)) {
if (L[i] > maks) {
maks <- L[i]
}
if (L[i] < minimum) {
minimum <- L[i]
}
}
return(c(maksimum = maks, minimum = minimum))
}
# Contoh
L <- c(25, 10, 40, 5, 30, 15)
hasil <- maks_min_sekaligus(L)
print(hasil)
## maksimum minimum
## 40 5
# 4. Mencari hari dengan kenaikan harian terbesar DAX
# Memanggil data saham
data("EuStockMarkets")
# Mengambil kolom DAX
DAX <- EuStockMarkets[, "DAX"]
n <- length(DAX)
# Inisialisasi kenaikan terbesar
maks_naik <- DAX[2] - DAX[1]
hari <- 2
# Traversal untuk mencari kenaikan terbesar
for (i in 3:n) {
kenaikan <- DAX[i] - DAX[i - 1]
if (kenaikan > maks_naik) {
maks_naik <- kenaikan
hari <- i
}
}
cat("Kenaikan harian terbesar DAX :", maks_naik, "\n")
## Kenaikan harian terbesar DAX : 160.97
cat("Terjadi pada hari ke- :", hari, "\n")
## Terjadi pada hari ke- : 1653
# 5. Menghitung jumlah dan rata-rata perkolom matriks penjualan
# Matriks penjualan 3 toko x 4 minggu
M <- matrix(c(
10, 45, 34, 43,
63, 69, 22, 13,
13, 82, 23, 60
), nrow = 3, byrow = TRUE)
nbar <- nrow(M)
nkol <- ncol(M)
jumlah <- numeric(nkol)
rata <- numeric(nkol)
# Menghitung jumlah dan rata-rata setiap kolom
for (j in 1:nkol) {
for (i in 1:nbar) {
jumlah[j] <- jumlah[j] + M[i, j]
}
rata[j] <- jumlah[j] / nbar
}
# Mencari minggu dengan penjualan tertinggi
maks <- jumlah[1]
minggu_maks <- 1
for (j in 2:nkol) {
if (jumlah[j] > maks) {
maks <- jumlah[j]
minggu_maks <- j
}
}
cat("Jumlah per minggu :", jumlah, "\n")
## Jumlah per minggu : 86 196 79 116
cat("Rata-rata per minggu :", rata, "\n")
## Rata-rata per minggu : 28.66667 65.33333 26.33333 38.66667
cat("Penjualan tertinggi :", maks, "\n")
## Penjualan tertinggi : 196
cat("Minggu paling tinggi :", minggu_maks, "\n")
## Minggu paling tinggi : 2
# 6. Membuktikan bahwa [[0]*3]*3 menghasilkan baris yang saling terkait di Python
# Membuat matriks 3 x 3
M <- matrix(0, nrow = 3, ncol = 3)
cat("Matriks awal:\n")
## Matriks awal:
print(M)
## [,1] [,2] [,3]
## [1,] 0 0 0
## [2,] 0 0 0
## [3,] 0 0 0
# Mengubah satu elemen
M[1, 1] <- 99
cat("\nMatriks setelah diubah:\n")
##
## Matriks setelah diubah:
print(M)
## [,1] [,2] [,3]
## [1,] 99 0 0
## [2,] 0 0 0
## [3,] 0 0 0