◈ PERSIAPAN
##
## 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
data_pendidikan <- read.csv("D:/Pengantar Sains Data/dataset_pendidikan.csv")
head(data_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
## 'data.frame': 200 obs. of 6 variables:
## $ ID_Mahasiswa : chr "MHS001" "MHS002" "MHS003" "MHS004" ...
## $ IPK : num 3.45 3.13 2.75 3.52 3.57 3.52 2.97 2.86 2.74 3.24 ...
## $ Semester : int 2 5 4 4 4 7 8 2 6 3 ...
## $ Total_Kehadiran : int 58 54 61 67 56 56 43 55 63 57 ...
## $ Total_Jam_Belajar: int 238 246 91 162 258 222 153 114 189 201 ...
## $ Rata2_Jam_Tidur : num 7.5 7.1 7 6.6 7.4 7.5 7.4 6.2 7 6.3 ...
◈ SOAL
1. Berapa jumlah mahasiswa yang memiliki IPK lebih besar atau sama
dengan 3,5?
cumlaude <- filter(data_pendidikan, IPK >= 3.5)
nrow(cumlaude)
## [1] 49
2. Siapa saja yang menjadi top 3 IPK tertinggi?
data_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
3. 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_pendidikan <- data_pendidikan %>%
mutate(
Kategori_IPK = case_when(
IPK < 2.50 ~ "Kurang",
IPK >= 2.50 & IPK < 3.00 ~ "Cukup",
IPK >= 3.00 & IPK < 3.50 ~ "Baik",
IPK >= 3.50 ~ "Sangat Baik"
)
)
table(data_pendidikan$Kategori_IPK)
##
## Baik Cukup Kurang Sangat Baik
## 71 63 17 49
4. Hitung rata-rata IPK per semester dengan group_by() dan
summarise(). Semester berapa yang rata-rata IPK-nya tertinggi?
data_IPK_semester <- data_pendidikan %>%
group_by(Semester) %>%
summarise(rata_rata_IPK = mean(IPK))
data_IPK_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
Tertinggi :
data_IPK_semester %>%
arrange(desc(rata_rata_IPK)) %>%
head(1)
## # A tibble: 1 × 2
## Semester rata_rata_IPK
## <int> <dbl>
## 1 4 3.20
5. Jumlah pertemuan per semester adalah 70 (= 100%). Buat kolom
Persen_Kehadiran = Total_Kehadiran / 70 * 100. Berapa mahasiswa yang
kehadirannya kurang dari 75%?
data_pendidikan <- data_pendidikan %>%
mutate(
Persentase = Total_Kehadiran / 70 * 100
)
data_kehadiran <- filter(data_pendidikan, Persentase < 75)
nrow(data_kehadiran)
## [1] 40