#1. Membuat matriks M berukuran 10 x 10 berisi bilangan bulat dari 1 hingga 100 (terurut ke samping)
M = matrix(1:100, ncol=10, nrow=10, byrow=TRUE)
print(M)
## [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10]
## [1,] 1 2 3 4 5 6 7 8 9 10
## [2,] 11 12 13 14 15 16 17 18 19 20
## [3,] 21 22 23 24 25 26 27 28 29 30
## [4,] 31 32 33 34 35 36 37 38 39 40
## [5,] 41 42 43 44 45 46 47 48 49 50
## [6,] 51 52 53 54 55 56 57 58 59 60
## [7,] 61 62 63 64 65 66 67 68 69 70
## [8,] 71 72 73 74 75 76 77 78 79 80
## [9,] 81 82 83 84 85 86 87 88 89 90
## [10,] 91 92 93 94 95 96 97 98 99 100
#a. Tukar baris ke 2 dan baris ke 9
M[c(2,9), ] = M[c(9,2), ]
print(M)
## [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10]
## [1,] 1 2 3 4 5 6 7 8 9 10
## [2,] 81 82 83 84 85 86 87 88 89 90
## [3,] 21 22 23 24 25 26 27 28 29 30
## [4,] 31 32 33 34 35 36 37 38 39 40
## [5,] 41 42 43 44 45 46 47 48 49 50
## [6,] 51 52 53 54 55 56 57 58 59 60
## [7,] 61 62 63 64 65 66 67 68 69 70
## [8,] 71 72 73 74 75 76 77 78 79 80
## [9,] 11 12 13 14 15 16 17 18 19 20
## [10,] 91 92 93 94 95 96 97 98 99 100
#b.Tukar kolom ke 1 dan kolom ke 10
M[, c(1,10)] = M[, c(10,1)]
print(M)
## [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10]
## [1,] 10 2 3 4 5 6 7 8 9 1
## [2,] 90 82 83 84 85 86 87 88 89 81
## [3,] 30 22 23 24 25 26 27 28 29 21
## [4,] 40 32 33 34 35 36 37 38 39 31
## [5,] 50 42 43 44 45 46 47 48 49 41
## [6,] 60 52 53 54 55 56 57 58 59 51
## [7,] 70 62 63 64 65 66 67 68 69 61
## [8,] 80 72 73 74 75 76 77 78 79 71
## [9,] 20 12 13 14 15 16 17 18 19 11
## [10,] 100 92 93 94 95 96 97 98 99 91
#c membuat matriks baru M2 yang merupakan hasil perkalian elemen antara M dan tranpose dari M
M2 = M%*%t(M)
print(M2)
## [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10]
## [1,] 385 4785 1485 2035 2585 3135 3685 4235 935 5335
## [2,] 4785 73185 21885 30435 38985 47535 56085 64635 13335 81735
## [3,] 1485 21885 6585 9135 11685 14235 16785 19335 4035 24435
## [4,] 2035 30435 9135 12685 16235 19785 23335 26885 5585 33985
## [5,] 2585 38985 11685 16235 20785 25335 29885 34435 7135 43535
## [6,] 3135 47535 14235 19785 25335 30885 36435 41985 8685 53085
## [7,] 3685 56085 16785 23335 29885 36435 42985 49535 10235 62635
## [8,] 4235 64635 19335 26885 34435 41985 49535 57085 11785 72185
## [9,] 935 13335 4035 5585 7135 8685 10235 11785 2485 14885
## [10,] 5335 81735 24435 33985 43535 53085 62635 72185 14885 91285
#Hitung jumlah elemen di M2 yang bernilai lebih dari 5000
Jumlah_elemen_M2_yang_lebih_besar_dari_5000 = sum(M2 > 5000) #menghitung jumlah elemen yang lebih dari a
print(Jumlah_elemen_M2_yang_lebih_besar_dari_5000)
## [1] 80
#2.membuat array berukuran 4x5x3 yang berisi bilangan bulat acak darik 1 sampai 50
a=sample(1:50, 30, replace=TRUE)
a
## [1] 30 38 22 11 26 3 23 18 1 39 11 22 22 38 32 22 35 44 43 5 7 28 39 24 37
## [26] 26 19 26 13 8
n=array(a, dim=c(4,5,3))
n
## , , 1
##
## [,1] [,2] [,3] [,4] [,5]
## [1,] 30 26 1 22 35
## [2,] 38 3 39 38 44
## [3,] 22 23 11 32 43
## [4,] 11 18 22 22 5
##
## , , 2
##
## [,1] [,2] [,3] [,4] [,5]
## [1,] 7 37 13 22 23
## [2,] 28 26 8 11 18
## [3,] 39 19 30 26 1
## [4,] 24 26 38 3 39
##
## , , 3
##
## [,1] [,2] [,3] [,4] [,5]
## [1,] 11 32 43 39 19
## [2,] 22 22 5 24 26
## [3,] 22 35 7 37 13
## [4,] 38 44 28 26 8
#a.mencari jumlah elemen genap pada setiap slice dimensi 3
sum(n[,,1][n[,,1]%%2==0])
## [1] 314
sum(n[,,2][n[,,2]%%2==0])
## [1] 246
sum(n[,,3][n[,,3]%%2==0])
## [1] 292
#b.buat array baru dengan elemennya merupakan kuadrat dari elemen n
g=n^2
g
## , , 1
##
## [,1] [,2] [,3] [,4] [,5]
## [1,] 900 676 1 484 1225
## [2,] 1444 9 1521 1444 1936
## [3,] 484 529 121 1024 1849
## [4,] 121 324 484 484 25
##
## , , 2
##
## [,1] [,2] [,3] [,4] [,5]
## [1,] 49 1369 169 484 529
## [2,] 784 676 64 121 324
## [3,] 1521 361 900 676 1
## [4,] 576 676 1444 9 1521
##
## , , 3
##
## [,1] [,2] [,3] [,4] [,5]
## [1,] 121 1024 1849 1521 361
## [2,] 484 484 25 576 676
## [3,] 484 1225 49 1369 169
## [4,] 1444 1936 784 676 64
#c.untuk setiap slice dimensi ke 3 pada array g, cari indeks posisi elemen maksimum
max_values = apply(g, c(1, 2), max)
indices = which(max_values == max(max_values), arr.ind = TRUE)
print(max_values)
## [,1] [,2] [,3] [,4] [,5]
## [1,] 900 1369 1849 1521 1225
## [2,] 1444 676 1521 1444 1936
## [3,] 1521 1225 900 1369 1849
## [4,] 1444 1936 1444 676 1521
print(indices)
## row col
## [1,] 4 2
## [2,] 2 5
#3. a. Buat vector v berisi 60 bilangan bulat acak antara 1 hingga 300
set.seed(123) # agar hasil acaknya tetap sama setiapkali di run
v<- sample(1:300, 60, replace = FALSE)#mengambil angka acak sebanyak 60 dari rentan 1 smpai 300
print(v)#menampilkan vektor v
## [1] 179 14 195 118 229 244 299 153 90 91 256 197 291 137 26 7 287 254 211
## [20] 78 81 43 143 32 109 263 23 135 224 166 217 69 72 76 63 141 210 293
## [39] 41 292 223 16 116 94 6 235 200 86 253 39 159 240 209 297 50 241 34
## [58] 4 13 269
# b. Bentuk v menjadi matrix mat berukuran 10x6
mat = matrix(v, nrow = 10, ncol = 6)# Membuat matriks
print(mat)#Menampilkan matriks mat
## [,1] [,2] [,3] [,4] [,5] [,6]
## [1,] 179 256 81 217 223 159
## [2,] 14 197 43 69 16 240
## [3,] 195 291 143 72 116 209
## [4,] 118 137 32 76 94 297
## [5,] 229 26 109 63 6 50
## [6,] 244 7 263 141 235 241
## [7,] 299 287 23 210 200 34
## [8,] 153 254 135 293 86 4
## [9,] 90 211 224 41 253 13
## [10,] 91 78 166 292 39 269
# c. Bentuk matrix mat menjadi array 3D berukuran 2x5x6
array3d = array(mat, dim = c(2, 5, 6))#membuat data array 3d
print(array3d)#menampilkan array
## , , 1
##
## [,1] [,2] [,3] [,4] [,5]
## [1,] 179 195 229 299 90
## [2,] 14 118 244 153 91
##
## , , 2
##
## [,1] [,2] [,3] [,4] [,5]
## [1,] 256 291 26 287 211
## [2,] 197 137 7 254 78
##
## , , 3
##
## [,1] [,2] [,3] [,4] [,5]
## [1,] 81 143 109 23 224
## [2,] 43 32 263 135 166
##
## , , 4
##
## [,1] [,2] [,3] [,4] [,5]
## [1,] 217 72 63 210 41
## [2,] 69 76 141 293 292
##
## , , 5
##
## [,1] [,2] [,3] [,4] [,5]
## [1,] 223 116 6 200 253
## [2,] 16 94 235 86 39
##
## , , 6
##
## [,1] [,2] [,3] [,4] [,5]
## [1,] 159 209 50 34 13
## [2,] 240 297 241 4 269
# d. Untuk setiap slice ke-3 (dimensi ke-3),Hitung rata-rata nilai dari elemen pada baris pertama
for (i in 1:6) { # mengulang oprasi hitung hingga lapisan ke-6
Lapisan = array3d[,,i] #mengambil semua lapisan pada array3d
rata2 = mean(Lapisan[1, ]) #menghitung rata-rata pada baris ke-1
cat("Lapisan ke-%d:\n", i) #memberi label pada lapisan
print(Lapisan) # menampilkan lapisan
cat(sprintf("Rata-rata elemen baris pertama: %.2f\n\n",rata2)) #menampilkan hasil perhitungan pada tiap lapisan
}
## Lapisan ke-%d:
## 1 [,1] [,2] [,3] [,4] [,5]
## [1,] 179 195 229 299 90
## [2,] 14 118 244 153 91
## Rata-rata elemen baris pertama: 198.40
##
## Lapisan ke-%d:
## 2 [,1] [,2] [,3] [,4] [,5]
## [1,] 256 291 26 287 211
## [2,] 197 137 7 254 78
## Rata-rata elemen baris pertama: 214.20
##
## Lapisan ke-%d:
## 3 [,1] [,2] [,3] [,4] [,5]
## [1,] 81 143 109 23 224
## [2,] 43 32 263 135 166
## Rata-rata elemen baris pertama: 116.00
##
## Lapisan ke-%d:
## 4 [,1] [,2] [,3] [,4] [,5]
## [1,] 217 72 63 210 41
## [2,] 69 76 141 293 292
## Rata-rata elemen baris pertama: 120.60
##
## Lapisan ke-%d:
## 5 [,1] [,2] [,3] [,4] [,5]
## [1,] 223 116 6 200 253
## [2,] 16 94 235 86 39
## Rata-rata elemen baris pertama: 159.60
##
## Lapisan ke-%d:
## 6 [,1] [,2] [,3] [,4] [,5]
## [1,] 159 209 50 34 13
## [2,] 240 297 241 4 269
## Rata-rata elemen baris pertama: 93.00
#4.Membuat array berukuran 5x6x4 dengan angka acak dari distribusi normal(rnorm) dengan rata-rata 50 dan standar deviasi 10.
Hasil_eksperimen= array(rnorm(5*6*4, mean = 50, sd = 10), dim=c(5,6,4))
print(Hasil_eksperimen)
## , , 1
##
## [,1] [,2] [,3] [,4] [,5] [,6]
## [1,] 36.81062 52.76023 66.85887 36.65646 57.93585 35.72314
## [2,] 50.28844 39.51024 47.58310 54.95870 48.47589 56.19284
## [3,] 45.67870 44.79131 45.31800 62.33976 47.71104 49.93802
## [4,] 66.89873 66.23203 42.27022 56.34362 40.99208 43.14293
## [5,] 62.28393 39.29932 71.49919 54.12022 42.64974 47.20666
##
## , , 2
##
## [,1] [,2] [,3] [,4] [,5] [,6]
## [1,] 42.17270 42.31526 50.74857 51.62618 54.10363 44.41464
## [2,] 42.21003 43.74089 52.06373 62.92306 51.83678 40.54382
## [3,] 46.25200 40.99129 45.11077 45.36443 67.78742 43.34811
## [4,] 46.80606 56.63729 43.72048 53.05463 50.37683 54.52030
## [5,] 50.84544 53.00279 49.53083 49.16011 61.76220 55.26856
##
## , , 3
##
## [,1] [,2] [,3] [,4] [,5] [,6]
## [1,] 47.69738 51.51611 59.61810 68.71418 47.58023 46.07446
## [2,] 63.97427 63.76610 58.53895 56.02870 61.17486 50.07051
## [3,] 67.63653 48.19606 54.18797 42.33831 61.84931 25.05165
## [4,] 54.85601 34.32325 53.39957 43.79674 66.46475 40.22704
## [5,] 47.34261 47.39274 55.96425 57.90190 51.92996 56.28569
##
## , , 4
##
## [,1] [,2] [,3] [,4] [,5] [,6]
## [1,] 49.15860 42.47537 37.38696 26.00802 42.86439 31.86467
## [2,] 53.82132 54.40692 58.37455 49.80681 60.66430 63.72614
## [3,] 39.06586 37.22549 26.51710 49.11315 44.63757 44.35730
## [4,] 42.44536 61.77192 56.10971 34.04515 55.35917 59.70311
## [5,] 47.36007 59.02506 49.52132 58.51709 31.71373 49.81366
#Untuk setiap kategori, hitung rata-rata hasil semua eksperimen.
Rata2_perkategori = apply(Hasil_eksperimen, MARGIN=3, FUN = mean)
print(Rata2_perkategori)
## [1] 50.41566 49.74129 52.79661 47.22866
#Untuk setiap eksperimen ke-3 di setiap kategori, hitung standar deviasi.
Eksperimen3= Hasil_eksperimen[,3,]
standar_dev_perkategori = apply(Eksperimen3, MARGIN=2, FUN = sd)
print(standar_dev_perkategori)
## [1] 13.446399 3.633112 2.692580 13.422272
#c.Buat visualisasi heatmap dari data eksperimen kategori pertama
# Memuat library yang diperlukan
library(ggplot2)
## Warning: package 'ggplot2' was built under R version 4.4.3
library(reshape2)
## Warning: package 'reshape2' was built under R version 4.4.3
# Mengubah data kategori pertama menjadi format yang sesuai untuk heatmap
kategori1 = Hasil_eksperimen[ , , 1]
data_kategori_pertama_melted = melt(kategori1)
# Membuat heatmap
ggplot(data_kategori_pertama_melted, aes(Var2, Var1, fill = value)) +
geom_tile() +
scale_fill_gradient(low = "yellow", high = "black") +
labs(title = "Heatmap Data Eksperimen Kategori Pertama",
x = "Eksperimen",
y = "Data",
fill = "Nilai") +
theme_minimal()
