R Markdown

library(dplyr)
## 
## Attaching package: 'dplyr'
## The following objects are masked from 'package:stats':
## 
##     filter, lag
## The following objects are masked from 'package:base':
## 
##     intersect, setdiff, setequal, union
databaru <- read.csv("dataset_pendidikan.csv")
head(databaru)
##   ID_Mahasiswa  IPK Semester Total_Kehadiran Total_Jam_Belajar Rata2_Jam_Tidur
## 1       MHS001 3.45        2              58               238             7.5
## 2       MHS002 3.13        5              54               246             7.1
## 3       MHS003 2.75        4              61                91             7.0
## 4       MHS004 3.52        4              67               162             6.6
## 5       MHS005 3.57        4              56               258             7.4
## 6       MHS006 3.52        7              56               222             7.5
# jumlah mahasiswa yang memiliki IPK lebih besar atau sama dengan 3,5
jumlah_ipk_cumlade <- sum(databaru$IPK > 3.5)
print(jumlah_ipk_cumlade)
## [1] 48
library(dplyr)
#menjadi top 3 IPK tertinggi
top_3_IPK  <- databaru %>%
  slice_max(order_by = IPK, n = 3)
print(top_3_IPK)
##   ID_Mahasiswa IPK Semester Total_Kehadiran Total_Jam_Belajar Rata2_Jam_Tidur
## 1       MHS052   4        4              70               377             6.8
## 2       MHS111   4        6              61               258             7.2
## 3       MHS123   4        4              66               341             6.2
#Buat kolom Kategori_IPK dengan case_when(): <2,50 = Kurang; 2,50-2,99 = Cukup; 3,00-3,49 = Baik; >=3,50 = Sangat Baik. Berapa mahasiswa yang masuk kategori "Baik"?

data_mhs <- databaru %>%
  mutate(
    kategori_IPK = case_when(
      IPK < 2.50 ~ "KURANG",
      IPK >= 2.50 & IPK <= 2.99 ~ "Cukup",
      IPK >= 3.00 & IPK <= 3.49 ~ "Baik",
      IPK >= 3.50 ~ "Sangat Baik"
    )
  )
jumlah_kategori_baik <- data_mhs %>%
  filter(kategori_IPK== "Baik") %>%
  nrow()
print(jumlah_kategori_baik)
## [1] 71
#Hitung rata-rata IPK per semester dengan group_by() dan summarise(). Semester berapa yang rata-rata IPK-nya tertinggi?

rata_per_semester <- data_mhs %>%
  group_by(Semester) %>%
  summarise(rata_rata_IPK = mean(IPK, na.rm = TRUE))

semester_tertinggi <- rata_per_semester %>%
  slice_max(order_by = rata_rata_IPK, n = 1)

print("Tabel Rata-Rata IPK per semester")
## [1] "Tabel Rata-Rata IPK per semester"
print(rata_per_semester)
## # A tibble: 8 × 2
##   Semester rata_rata_IPK
##      <int>         <dbl>
## 1        1          3.06
## 2        2          3.04
## 3        3          3.17
## 4        4          3.20
## 5        5          3.12
## 6        6          3.19
## 7        7          3.06
## 8        8          3.04
 print("semester dengan rata-rata IPK tertinggi")
## [1] "semester dengan rata-rata IPK tertinggi"
 print(semester_tertinggi)
## # A tibble: 1 × 2
##   Semester rata_rata_IPK
##      <int>         <dbl>
## 1        4          3.20
#Jumlah pertemuan per semester adalah 70 (= 100%). Buat kolom Persen_Kehadiran = Total_Kehadiran / 70 * 100. Berapa mahasiswa yang kehadirannya kurang dari 75%?

data_absensi <- data_mhs$Persen_Kehadiran <- (data_mhs$Total_Kehadiran / 70) * 100

mahasiswa_kurang_75 <- data_mhs %>%
  filter(Persen_Kehadiran < 75)

jumlah_mahasiswa_kurang_75 <- nrow(mahasiswa_kurang_75)

print("Data Mahasiswa dengan Persentase Kehadiran:")
## [1] "Data Mahasiswa dengan Persentase Kehadiran:"
print(data_absensi)
##   [1]  82.85714  77.14286  87.14286  95.71429  80.00000  80.00000  61.42857
##   [8]  78.57143  90.00000  81.42857  90.00000  87.14286  84.28571  87.14286
##  [15]  72.85714  81.42857  91.42857  80.00000 100.00000  90.00000  85.71429
##  [22]  71.42857  82.85714  85.71429  90.00000  80.00000  85.71429  85.71429
##  [29]  82.85714  62.85714  80.00000  74.28571  75.71429  81.42857  80.00000
##  [36]  74.28571  77.14286  77.14286  71.42857  78.57143  87.14286  84.28571
##  [43]  92.85714 100.00000  94.28571 100.00000  68.57143  87.14286  92.85714
##  [50]  90.00000  95.71429 100.00000  91.42857  81.42857  74.28571  70.00000
##  [57]  78.57143  82.85714  74.28571  71.42857  80.00000  90.00000  62.85714
##  [64]  84.28571  82.85714  85.71429  72.85714  80.00000 100.00000  80.00000
##  [71]  75.71429  78.57143  62.85714  70.00000  92.85714  81.42857  77.14286
##  [78]  54.28571  81.42857  85.71429  81.42857  95.71429  84.28571  78.57143
##  [85]  88.57143  80.00000  62.85714  82.85714  88.57143  80.00000 100.00000
##  [92]  92.85714  82.85714  84.28571  72.85714  97.14286  91.42857  88.57143
##  [99]  78.57143  97.14286  80.00000  88.57143  61.42857  85.71429  70.00000
## [106]  94.28571  87.14286  90.00000 100.00000  88.57143  87.14286  70.00000
## [113]  71.42857  88.57143  98.57143  81.42857 100.00000  80.00000  75.71429
## [120]  91.42857  84.28571  85.71429  94.28571  74.28571  78.57143  80.00000
## [127]  77.14286  84.28571  78.57143  91.42857  68.57143  68.57143  85.71429
## [134]  78.57143  74.28571  91.42857  80.00000  72.85714  80.00000  80.00000
## [141]  88.57143  80.00000  94.28571  82.85714  57.14286  70.00000  85.71429
## [148]  94.28571  82.85714  88.57143  52.85714  88.57143  85.71429  91.42857
## [155]  65.71429  87.14286  81.42857 100.00000  84.28571  58.57143  84.28571
## [162]  77.14286  95.71429  88.57143  81.42857 100.00000  92.85714  75.71429
## [169]  82.85714  92.85714  84.28571  91.42857  77.14286  70.00000  94.28571
## [176]  94.28571  75.71429  77.14286  88.57143  71.42857  85.71429  70.00000
## [183]  70.00000  88.57143  94.28571  98.57143  87.14286  74.28571  84.28571
## [190]  87.14286  88.57143  94.28571  71.42857  65.71429  88.57143  91.42857
## [197]  77.14286  78.57143  81.42857  78.57143
print(paste("Jumlah mahasiswa dengan kehadiran < 75% adalah:", jumlah_mahasiswa_kurang_75, "orang."))
## [1] "Jumlah mahasiswa dengan kehadiran < 75% adalah: 40 orang."
#Mahasiswa "rajin tapi IPK rendah" didefinisikan sebagai jam belajar di atas median DAN IPK di bawah rata-rata IPK seluruh mahasiswa. Berapa jumlahnya?

median_jam_belajar <- median(data_mhs$Total_Jam_Belajar)
rata_rata_ipk <- mean(data_mhs$IPK)
jumlah_rajin_ipk_rendah <- sum(data_mhs$Total_Jam_Belajar > median_jam_belajar & data_mhs$IPK < rata_rata_ipk)

print(paste("Median Jam Belajar:", median_jam_belajar))
## [1] "Median Jam Belajar: 189"
print(paste("Rata-rata IPK:", round(rata_rata_ipk, 2)))
## [1] "Rata-rata IPK: 3.12"
print(paste("Jumlah mahasiswa 'rajin tapi IPK rendah' adalah:", jumlah_rajin_ipk_rendah))
## [1] "Jumlah mahasiswa 'rajin tapi IPK rendah' adalah: 17"