# membuat data frame
data_nilai <- data.frame(
  nim = c(101,102,103,104,105,106,107,108),
  nama = c("Andi", "Budi", "Citra", "Dewi", "Eka", "Fajar", "Gita", "Hadi"),
  matematika = c(85,78,92,65,88,72,95,81),
  fisika = c(78,82,79,70,85,68,90,76),
  kimia = c(80,75,88,62,82,75,92,79),
  bahasa_inggris = c(88,80,85,78,90,82,87,84)
)

data_nilai
##   nim  nama matematika fisika kimia bahasa_inggris
## 1 101  Andi         85     78    80             88
## 2 102  Budi         78     82    75             80
## 3 103 Citra         92     79    88             85
## 4 104  Dewi         65     70    62             78
## 5 105   Eka         88     85    82             90
## 6 106 Fajar         72     68    75             82
## 7 107  Gita         95     90    92             87
## 8 108  Hadi         81     76    79             84
# menghitung rata-rata nilai setiap mahasiswa
data_nilai$rata_rata <- rowMeans(
  data_nilai[, c("matematika", "fisika", "kimia", "bahasa_inggris")]
)

data_nilai
##   nim  nama matematika fisika kimia bahasa_inggris rata_rata
## 1 101  Andi         85     78    80             88     82.75
## 2 102  Budi         78     82    75             80     78.75
## 3 103 Citra         92     79    88             85     86.00
## 4 104  Dewi         65     70    62             78     68.75
## 5 105   Eka         88     85    82             90     86.25
## 6 106 Fajar         72     68    75             82     74.25
## 7 107  Gita         95     90    92             87     91.00
## 8 108  Hadi         81     76    79             84     80.00
# menambahkan kolom grade
data_nilai$grade <- ifelse(
  data_nilai$rata_rata >= 85, "A",
  ifelse(
    data_nilai$rata_rata >= 70 & data_nilai$rata_rata < 85, "B",
    ifelse(
      data_nilai$rata_rata >= 60 & data_nilai$rata_rata < 70, "C", "D"
    )
  )
)

data_nilai
##   nim  nama matematika fisika kimia bahasa_inggris rata_rata grade
## 1 101  Andi         85     78    80             88     82.75     B
## 2 102  Budi         78     82    75             80     78.75     B
## 3 103 Citra         92     79    88             85     86.00     A
## 4 104  Dewi         65     70    62             78     68.75     C
## 5 105   Eka         88     85    82             90     86.25     A
## 6 106 Fajar         72     68    75             82     74.25     B
## 7 107  Gita         95     90    92             87     91.00     A
## 8 108  Hadi         81     76    79             84     80.00     B
# menampilkan 3 mahasiswa dengan nilai tertinggi
tiga_tertinggi <- head(
  data_nilai[order(data_nilai$rata_rata, decreasing = TRUE), ],
  3
)

tiga_tertinggi
##   nim  nama matematika fisika kimia bahasa_inggris rata_rata grade
## 7 107  Gita         95     90    92             87     91.00     A
## 5 105   Eka         88     85    82             90     86.25     A
## 3 103 Citra         92     79    88             85     86.00     A
# hitung rata-rata nilai per mata kuliah
rata_per_matkul <- colMeans(
  data_nilai[, c("matematika","fisika","kimia","bahasa_inggris")]
)

rata_per_matkul
##     matematika         fisika          kimia bahasa_inggris 
##         82.000         78.500         79.125         84.250
# cari mahasiswa yang nilai dibawah 70 di salah satu mata kuliah
mahasiswaa_nilai_dibawah_70 <- data_nilai[
  data_nilai$matematika < 70 |
  data_nilai$fisika < 70 |
  data_nilai$kimia < 70 |
  data_nilai$bahasa_inggris < 70,
]

mahasiswaa_nilai_dibawah_70
##   nim  nama matematika fisika kimia bahasa_inggris rata_rata grade
## 4 104  Dewi         65     70    62             78     68.75     C
## 6 106 Fajar         72     68    75             82     74.25     B
# skript R berdasarkan flowchart
# membuat data nasabah sesuai dengan tabel soal
data_nasabah <- data.frame(
  ID = c(101, 102, 103, 104),
  Nama = c("Ahmad","Bunga","Candra","Dewi"),
  PB = c(6500000,4000000,2800000,8000000),
  SK = c(750,680,620,690),
  Total_Utang = c(162500,1800000,1000000,2400000)
)

# menghitung rasio utang terhadap pendapatan (RUR)
data_nasabah$RUR <- data_nasabah$Total_Utang /
data_nasabah$PB

# menentukan keputusan peminjaman berdasarkan flowchart
data_nasabah$Keputusan <- ifelse(
  # cek syarat DISETUJUI
  data_nasabah$PB > 5000000 &
  data_nasabah$SK > 700 &
  data_nasabah$RUR < 0.35,
  
  "DISETUJUI",
  
  ifelse(
    # jika tidak disetujui, cek syarat DITOLAK
    data_nasabah$PB < 3000000 |
    data_nasabah$SK > 600 |
    data_nasabah$RUR > 0.5,
    
    "DITOLAK",
    
    # jika tidak memenuhi keduanya
    "DIREVIEW"
  )
)

# menampilkan hasil akhir
data_nasabah
##    ID   Nama      PB  SK Total_Utang       RUR Keputusan
## 1 101  Ahmad 6500000 750      162500 0.0250000 DISETUJUI
## 2 102  Bunga 4000000 680     1800000 0.4500000   DITOLAK
## 3 103 Candra 2800000 620     1000000 0.3571429   DITOLAK
## 4 104   Dewi 8000000 690     2400000 0.3000000   DITOLAK