#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()