# TUGAS 第8グループ

## 1. Array 1D Membuat array 1D berisi angka ganjil dari 5 sampai 100.

# Membuat array ganjil dari 5 sampai 99
Arr1d <- array(seq(5, 99, by = 2))

# Menampilkan elemen yang habis dibagi 4
Arr1d[Arr1d %% 4 == 0]
## numeric(0)
# Mengurutkan dari besar ke kecil
sort(Arr1d, decreasing = TRUE)
##  [1] 99 97 95 93 91 89 87 85 83 81 79 77 75 73 71 69 67 65 63 61 59 57 55 53 51
## [26] 49 47 45 43 41 39 37 35 33 31 29 27 25 23 21 19 17 15 13 11  9  7  5
# Menjumlahkan semua elemen
sum(Arr1d)
## [1] 2496
# Menghitung rata-rata
mean(Arr1d)
## [1] 52

## 2. Array 2D Membuat array 2 dimensi (m x n) yang elemennya kelipatan 4 dengan m, n > 4.

m <- 5
n <- 6

# Membuat array 2D kelipatan 4
Array2d <- matrix(seq(4, by = 4, length.out = m*n), nrow = m)
print(Array2d)
##      [,1] [,2] [,3] [,4] [,5] [,6]
## [1,]    4   24   44   64   84  104
## [2,]    8   28   48   68   88  108
## [3,]   12   32   52   72   92  112
## [4,]   16   36   56   76   96  116
## [5,]   20   40   60   80  100  120
# Menghitung jumlah elemen lebih dari (m*n)
sum(Array2d > (m*n))
## [1] 23
# Mengambil diagonal utama
diag(Array2d)
## [1]   4  28  52  76 100
# Menjumlahkan baris kedua
sum(Array2d[2, ])
## [1] 348

## 3.A. Array 3D (Acak) Membuat array 3D dari angka lebih dari 10 dan kurang dari 100.

x <- 3
y <- 3
z <- 4

# Membuat array 3D
array3d <- array(sample(11:99, size = x*y*z), dim = c(x, y, z))
print(array3d)
## , , 1
## 
##      [,1] [,2] [,3]
## [1,]   82   53   40
## [2,]   45   28   86
## [3,]   32   30   54
## 
## , , 2
## 
##      [,1] [,2] [,3]
## [1,]   43   42   64
## [2,]   96   95   19
## [3,]   79   88   51
## 
## , , 3
## 
##      [,1] [,2] [,3]
## [1,]   68   38   73
## [2,]   12   49   85
## [3,]   93   25   60
## 
## , , 4
## 
##      [,1] [,2] [,3]
## [1,]   58   75   81
## [2,]   61   91   26
## [3,]   16   14   62
# Menampilkan layer pertama
array3d[,,z-3]
##      [,1] [,2] [,3]
## [1,]   82   53   40
## [2,]   45   28   86
## [3,]   32   30   54
# Mencari nilai maksimum
max(array3d)
## [1] 96
# Rata-rata per kolom per lapisan
apply(array3d, c(2,3), mean)
##      [,1]     [,2]     [,3]     [,4]
## [1,]   53 72.66667 57.66667 45.00000
## [2,]   37 75.00000 37.33333 60.00000
## [3,]   60 44.66667 72.66667 56.33333
# Rata-rata per kolom semua lapisan
apply(array3d, 2, mean)
## [1] 57.08333 52.33333 58.41667

## 3.B. Array 3D dari angka 11-99 (Acak)

# Membuat array 3D lain dari angka 11-99
array3d <- array(sample(11:99), dim = c(3, 3, 4))
print(array3d)
## , , 1
## 
##      [,1] [,2] [,3]
## [1,]   67   68   32
## [2,]   88   73   94
## [3,]   86   97   22
## 
## , , 2
## 
##      [,1] [,2] [,3]
## [1,]   92   78   47
## [2,]   42   41   17
## [3,]   66   36   21
## 
## , , 3
## 
##      [,1] [,2] [,3]
## [1,]   34   90   13
## [2,]   83   99   50
## [3,]   93   40   27
## 
## , , 4
## 
##      [,1] [,2] [,3]
## [1,]   81   85   62
## [2,]   25   15   60
## [3,]   38   20   30
# Menampilkan layer pertama
array3d[,,1]
##      [,1] [,2] [,3]
## [1,]   67   68   32
## [2,]   88   73   94
## [3,]   86   97   22
# Mencari nilai maksimum
max(array3d)
## [1] 99
# Rata-rata per kolom
apply(array3d, 2, mean)
## [1] 66.25000 61.83333 39.58333

## Kesimpulan

# 1. *Array* adalah struktur data di R yang mampu menyimpan banyak elemen bertipe sama dalam satu atau lebih dimensi (1D, 2D, 3D, dan seterusnya).

# 2. *Untuk membuat array*:
#   - Gunakan fungsi array(data, dim = c(baris, kolom, lapisan)).
#   - Array 3 dimensi memiliki susunan baris, kolom, dan lapisan.

# 3. *Pada kasus soal nomor 3*:
#   - Kami membuat array 3D berukuran 3×3×4 dari angka lebih dari 10 dan kurang dari 100.
#   - Lapisan ke-(z-3) berarti mengambil lapisan pertama, sesuai teknik mengakses   
#     array[,,lapisan].
#   - Untuk mencari nilai maksimum seluruh array, cukup gunakan fungsi sederhana max(array).
#   - Rata-rata per kolom dapat dihitung menggunakan apply(array, 2, mean), sesuai prinsip 
#     operasi array di R.

# 4. *Prinsip utama pengolahan array di R*:
#   - Memahami cara akses elemen per baris, kolom, dan lapisan.
#   - Menggunakan fungsi built-in R seperti apply(), max(), sum(), dan mean() untuk menganalisis
#     array.
#   - Menyusun array sesuai kebutuhan dimensi dan data yang diolah.

#5. *Kesimpulan akhir*:
#   - Dengan pemahaman array, kita bisa mengelola data berukuran besar dengan lebih terstruktur.
#   - Penyelesaian masalah dengan array menjadi lebih cepat, sederhana, dan efektif menggunakan 
#     fungsi-fungsi dasar di R.

## Penutup ありがとう ございます