# 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 ありがとう ございます