EKsplorasi Analisis IPK, Kehadiran, dan Jam Belajar Mahasiswa

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
dataset <- read.csv("~/Nayla/R/dataset_pendidikan.csv")
head(dataset)
##   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

Berapa jumlah siswa yang memiliki IPK lebih besar atau sama dengan 3.5?

Jumlah_siswa <- dataset %>%
  filter(IPK >= 3.5) %>%
  nrow()
  
head(Jumlah_siswa)
## [1] 49

Siapa aja yang menjadi top 3 IPK tertinggi?

top_3_IPK <- dataset %>%
  arrange(desc(IPK)) %>%
  slice_head(n=3)

head(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

Berapa siswa yang masuk kategori “Baik”?

data_kategori <- dataset %>%
  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_baik <- data_kategori %>%
  filter(Kategori_IPK == "Baik") %>%
  nrow()

head(jumlah_baik)
## [1] 71

Berapa siswa yang kehadirannya kurang dari 75%?

data_kehadiran <- dataset %>%
  mutate(Persen_Kehadiran = (Total_Kehadiran/70)*100)
jumlah_kurang_75 <- data_kehadiran %>%
  filter(Persen_Kehadiran < 75) %>%
  nrow()
head(jumlah_kurang_75)
## [1] 40

Berapa jumlah siswa yang rajin tetapi IPK rendah?

median_jam <- median (dataset$Total_Jam_Belajar, na.rm = TRUE)
rata_ipk <- mean(dataset$IPK, na.rm = TRUE)

jumlah_rajin_ipk_rendah <- dataset %>%
  filter(Total_Jam_Belajar > median_jam & IPK < rata_ipk) %>%
  nrow()
head(jumlah_rajin_ipk_rendah)
## [1] 17