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"