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_pendidikan <- read.csv("C:/Users/HP/OneDrive/ドキュメント/h/rsconnect/dataset_pendidikan.csv")
head(dataset_pendidikan)
##   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

dataset_pendidikan %>%
  filter(IPK >= 3.5) %>%
  nrow()
## [1] 49

#top 3 IPK tertinggi

dataset_pendidikan %>%
  arrange(desc(IPK)) %>%
  head(3)
##   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

#mahasiswa yang masuk kategori “Baik”

dataset_pendidikan_kategori<- dataset_pendidikan %>%
  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"
  ))
dataset_pendidikan_kategori%>%
  filter(kategori_IPK == "Baik")%>%
  count()
##    n
## 1 71

#Semester yang rata-rata IPK-nya tertinggi

dataset_pendidikan %>%
  group_by(Semester)%>%
  summarise(Rata_rata_IPK= mean(IPK, na.rm= TRUE)) %>%
  slice_max(Rata_rata_IPK, n=1)
## # 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%?

dataset_pendidikan %>%
  mutate(Persen_Kehadiran = (Total_Kehadiran / 70)* 100) %>%
  filter(Persen_Kehadiran < 75) %>%
  count()
##    n
## 1 40

#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 dan rata_rata IPK
median_jam <- median(dataset_pendidikan$Total_Jam_Belajar, na.rm = TRUE)
mean_IPK <- mean(dataset_pendidikan$IPK, na.rm = TRUE)

#Filter mahasiswa rajin tapi IPK rendah
dataset_pendidikan %>%
  filter(Total_Jam_Belajar > median_jam & IPK < mean_IPK) %>%
  count()
##    n
## 1 17