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("~/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

Perhatikan kode berikut. Apa yang dihasilkan? data %>% arrange(desc(IPK)) %>% head(3)

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

Berapa baris dan kolom hasil kode berikut? (dataset berisi mahasiswa semester 1 sampai 8) data %>% group_by(Semester) %>% summarise(rata = mean(IPK))

dataset_pendidikan %>% group_by(Semester) %>% summarise(rata = mean(IPK))
## # A tibble: 8 × 2
##   Semester  rata
##      <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

Berapa jumlah mahasiswa yang memiliki IPK lebih besar atau sama dengan 3,5?

dataset_pendidikan <- read.csv("~/dataset_pendidikan.csv")

sum(dataset_pendidikan$IPK >= 3.5, na.rm = TRUE)
## [1] 49

Siapa saja yang menjadi 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

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”?

dataset_pendidikan <- 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 %>%
  filter(Kategori_IPK == "Baik") %>%
  nrow()
## [1] 71

Hitung rata-rata IPK per semester dengan group_by() dan summarise(). Semester berapa yang rata-rata IPK-nya tertinggi?

dataset_pendidikan %>%
  group_by(Semester) %>%
  summarise(rata_IPK = mean(IPK, na.rm = TRUE)) %>%
  arrange(desc(rata_IPK))
## # A tibble: 8 × 2
##   Semester rata_IPK
##      <int>    <dbl>
## 1        4     3.20
## 2        6     3.19
## 3        3     3.17
## 4        5     3.12
## 5        7     3.06
## 6        1     3.06
## 7        8     3.04
## 8        2     3.04

Jumlah pertemuan per semester adalah 70 (= 100%). Buat kolom Persen_Kehadiran = Total_Kehadiran / 70 * 100. Berapa mahasiswa yang kehadirannya kurang dari 75%?

dataset_pendidikan <- dataset_pendidikan %>%
  mutate(Persen_Kehadiran = Total_Kehadiran / 70 * 100)

dataset_pendidikan %>%
  filter(Persen_Kehadiran < 75) %>%
  nrow()
## [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?

dataset_pendidikan %>%
  filter(
    Total_Jam_Belajar > median(Total_Jam_Belajar, na.rm = TRUE),
    IPK < mean(IPK, na.rm = TRUE)
  ) %>%
  nrow()
## [1] 17