R Markdown
library(readxl)
df_mahasiswa <- read_excel("df_mahasiswa.xlsx")
# MENAMPIKAN 6 BARIS PERTAMA
head(df_mahasiswa, 6)
## # A tibble: 6 × 6
## id_mahasiswa jenis_kelamin jam_belajar_per_hari frekuensi_login_lms
## <chr> <chr> <dbl> <dbl>
## 1 MHS001 L 4 1
## 2 MHS002 P 4 2
## 3 MHS003 P 2 6
## 4 MHS004 P 5 3
## 5 MHS005 L 3 2
## 6 MHS006 L 3 7
## # ℹ 2 more variables: motivasi_belajar <dbl>, ipk <dbl>
# MENGECEK STRUKTUR DAN TIPE DATA MAHASISWA
str(df_mahasiswa)
## tibble [55 × 6] (S3: tbl_df/tbl/data.frame)
## $ id_mahasiswa : chr [1:55] "MHS001" "MHS002" "MHS003" "MHS004" ...
## $ jenis_kelamin : chr [1:55] "L" "P" "P" "P" ...
## $ jam_belajar_per_hari: num [1:55] 4 4 2 5 3 3 1 3 2 1 ...
## $ frekuensi_login_lms : num [1:55] 1 2 6 3 2 7 7 4 6 5 ...
## $ motivasi_belajar : num [1:55] 82 73 71 98 81 61 44 69 44 46 ...
## $ ipk : num [1:55] 3.12 3.45 3.07 3.43 2.83 3.1 2.98 3.08 2.82 2.93 ...
# MENGECEK MISSING VALUE
summary(df_mahasiswa)
## id_mahasiswa jenis_kelamin jam_belajar_per_hari frekuensi_login_lms
## Length:55 Length:55 Min. :1.000 Min. :1.000
## Class :character Class :character 1st Qu.:2.000 1st Qu.:2.000
## Mode :character Mode :character Median :3.000 Median :4.000
## Mean :3.127 Mean :4.018
## 3rd Qu.:4.000 3rd Qu.:6.000
## Max. :5.000 Max. :7.000
## motivasi_belajar ipk
## Min. : 35.0 Min. :2.490
## 1st Qu.: 56.5 1st Qu.:2.955
## Median : 73.0 Median :3.130
## Mean : 71.0 Mean :3.166
## 3rd Qu.: 87.0 3rd Qu.:3.365
## Max. :100.0 Max. :3.890
sum(is.na(df_mahasiswa))
## [1] 0
any(is.na(df_mahasiswa))
## [1] FALSE
# MENGETAHUI ADA BERAPA LAKI LAKI DAN PEREMPUAN
table(df_mahasiswa$jenis_kelamin)
##
## L P
## 32 23
# MENGETAHUI JENIS KELAMIN DENGAN IPK TERTINGGI
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
# MENGHITUNG RATA RATA IPK PER JENIS KELAMIN
# Hitung rata-rata IPK per jenis kelamin
rata_rata_ipk <- df_mahasiswa %>%
group_by(jenis_kelamin) %>%
summarise(rata_rata_ipk = mean(ipk, na.rm = TRUE),
jumlah_mahasiswa = n())
# Tampilkan hasil
print(rata_rata_ipk)
## # A tibble: 2 × 3
## jenis_kelamin rata_rata_ipk jumlah_mahasiswa
## <chr> <dbl> <int>
## 1 L 3.16 32
## 2 P 3.18 23
# MENCARI ID MAHASISWA DENGAN MOTIVASI BELAJAR TERTINGGI
max_motivasi <- max(df_mahasiswa$motivasi_belajar, na.rm = TRUE)
print(paste("Nilai motivasi tertinggi:", max_motivasi))
## [1] "Nilai motivasi tertinggi: 100"
id_tertinggi <- df_mahasiswa %>%
filter(motivasi_belajar == max_motivasi) %>%
select(id_mahasiswa, jenis_kelamin, motivasi_belajar)
print(id_tertinggi)
## # A tibble: 1 × 3
## id_mahasiswa jenis_kelamin motivasi_belajar
## <chr> <chr> <dbl>
## 1 MHS054 L 100
jumlah_id <- nrow(id_tertinggi)
print(paste("Jumlah ID mahasiswa dengan motivasi tertinggi:", jumlah_id))
## [1] "Jumlah ID mahasiswa dengan motivasi tertinggi: 1"
# MENCARI MAHASISWA DENGAN FREKUENSI LOGIN LMS TERTINGGI JUGA MEMILIKI IPK TINGGI
# Langkah 1: Temukan nilai frekuensi login tertinggi
max_login <- max(df_mahasiswa$frekuensi_login, na.rm = TRUE)
## Warning: Unknown or uninitialised column: `frekuensi_login`.
## Warning in max(df_mahasiswa$frekuensi_login, na.rm = TRUE): no non-missing
## arguments to max; returning -Inf
print(paste("Frekuensi login tertinggi:", max_login))
## [1] "Frekuensi login tertinggi: -Inf"
# Langkah 2: Filter mahasiswa dengan frekuensi login max DAN IPK > 3.5
mahasiswa_kriteria <- df_mahasiswa %>%
filter(frekuensi_login_lms == max_login & ipk > 3.5) %>%
select(id_mahasiswa, jenis_kelamin, frekuensi_login_lms, ipk)
# Tampilkan hasil
print(mahasiswa_kriteria)
## # A tibble: 0 × 4
## # ℹ 4 variables: id_mahasiswa <chr>, jenis_kelamin <chr>,
## # frekuensi_login_lms <dbl>, ipk <dbl>
# Langkah 3: Hitung berapa mahasiswa yang memenuhi
jumlah_mahasiswa <- nrow(mahasiswa_kriteria)
if (jumlah_mahasiswa > 0) {
print(paste("Jumlah mahasiswa yang memenuhi kriteria:", jumlah_mahasiswa))
} else {
print("Tidak ada mahasiswa yang memenuhi kedua kriteria.")
}
## [1] "Tidak ada mahasiswa yang memenuhi kedua kriteria."
# Temukan nilai max login
max_login <- max(df_mahasiswa$frekuensi_login, na.rm = TRUE)
## Warning: Unknown or uninitialised column: `frekuensi_login`.
## no non-missing arguments to max; returning -Inf
print(paste("Frekuensi login tertinggi:", max_login))
## [1] "Frekuensi login tertinggi: -Inf"
# Filter kondisi: frekuensi == max DAN ipk > 3.5
indeks_kriteria <- which(df_mahasiswa$frekuensi_login_lms == max_login &
df_mahasiswa$ipk > 3.5)
# Ekstrak data mahasiswa
mahasiswa_kriteria <- df_mahasiswa[indeks_kriteria, c("id_mahasiswa", "jenis_kelamin", "frekuensi_login_lms", "ipk")]
print(mahasiswa_kriteria)
## # A tibble: 0 × 4
## # ℹ 4 variables: id_mahasiswa <chr>, jenis_kelamin <chr>,
## # frekuensi_login_lms <dbl>, ipk <dbl>
# Hitung jumlah
jumlah_mahasiswa <- length(indeks_kriteria)
print(paste("Jumlah mahasiswa yang memenuhi kriteria:", jumlah_mahasiswa))
## [1] "Jumlah mahasiswa yang memenuhi kriteria: 0"
# MAHASISWA DENGAN JAM BELAJAR ≥ 4 JAM PER HARI MEMILIKI IPK LEBIH TINGGI DIBANDINGKAN YANG KURANG DARI 4 JAM
# Langkah 1: Buat kolom kategorikal untuk grup jam belajar
data_grup <- df_mahasiswa %>%
mutate(grup_jam = ifelse(jam_belajar_per_hari >= 4, ">= 4 jam", "< 4 jam"))
# Langkah 2: Hitung rata-rata IPK per grup
perbandingan_ipk <- data_grup %>%
group_by(grup_jam) %>%
summarise(rata_rata_IPK = mean(ipk, na.rm = TRUE),
jumlah_mahasiswa = n(),
.groups = 'drop')
# Tampilkan hasil
print(perbandingan_ipk)
## # A tibble: 2 × 3
## grup_jam rata_rata_IPK jumlah_mahasiswa
## <chr> <dbl> <int>
## 1 < 4 jam 2.94 28
## 2 >= 4 jam 3.41 27
# Langkah 3: Bandingkan secara manual
rata_ge4 <- perbandingan_ipk$rata_rata_IPK[perbandingan_ipk$grup_jam == ">= 4 jam"]
rata_lt4 <- perbandingan_ipk$rata_rata_IPK[perbandingan_ipk$grup_jam == "< 4 jam"]
if (rata_ge4 > rata_lt4) {
print(paste("Ya, mahasiswa dengan jam belajar >= 4 jam memiliki rata-rata IPK lebih tinggi (",
round(rata_ge4, 2), " vs ", round(rata_lt4, 2), ")."))
} else {
print(paste("Tidak, mahasiswa dengan jam belajar >= 4 jam memiliki rata-rata IPK lebih rendah atau sama (",
round(rata_ge4, 2), " vs ", round(rata_lt4, 2), ")."))
}
## [1] "Ya, mahasiswa dengan jam belajar >= 4 jam memiliki rata-rata IPK lebih tinggi ( 3.41 vs 2.94 )."
# MENCARI MAHASISWA DENGAN IPK TERTINGGI DAN NILAI MOTIVASINYA BERSERTA ID_MAHASISWA
# Langkah 1: Temukan nilai IPK tertinggi
max_ipk <- max(df_mahasiswa$ipk, na.rm = TRUE)
print(paste("Nilai IPK tertinggi:", max_ipk))
## [1] "Nilai IPK tertinggi: 3.89"
# Langkah 2: Filter mahasiswa dengan IPK tersebut dan tampilkan detail
mahasiswa_tertinggi <- df_mahasiswa %>%
filter(ipk == max_ipk) %>%
select(id_mahasiswa, jenis_kelamin, ipk, motivasi_belajar)
# Tampilkan hasil
print(mahasiswa_tertinggi)
## # A tibble: 1 × 4
## id_mahasiswa jenis_kelamin ipk motivasi_belajar
## <chr> <chr> <dbl> <dbl>
## 1 MHS018 L 3.89 92
#MENGHITUNG JUMLAH LAKI LAKI DAN PEREMPUAN YANG MEMILIKI IPK LEBIH DARI 3,5 DAN MOTIVASI BELAJAR LEBIH DARI 85! DAN JAWAB DENGAN MENYEBUTKAN L=? P=?
# Langkah 1: Filter mahasiswa yang memenuhi kriteria (IPK > 3.5 DAN motivasi > 85)
data_kriteria <- df_mahasiswa %>%
filter(ipk > 3.5 & motivasi_belajar > 85) %>% # Dua kondisi dengan &
select(id_mahasiswa, jenis_kelamin, ipk, motivasi_belajar)
# Tampilkan daftar mahasiswa yang memenuhi (opsional)
print("Mahasiswa yang memenuhi kriteria:")
## [1] "Mahasiswa yang memenuhi kriteria:"
print(data_kriteria)
## # A tibble: 5 × 4
## id_mahasiswa jenis_kelamin ipk motivasi_belajar
## <chr> <chr> <dbl> <dbl>
## 1 MHS018 L 3.89 92
## 2 MHS034 P 3.56 87
## 3 MHS041 L 3.73 90
## 4 MHS048 L 3.7 92
## 5 MHS051 L 3.65 92
# Langkah 2: Hitung jumlah per jenis kelamin
jumlah_per_gender <- data_kriteria %>%
mutate(jenis_kelamin_short = ifelse(jenis_kelamin == "Laki-laki", "L", "P")) %>%
count(jenis_kelamin_short, name = "jumlah") %>%
arrange(jenis_kelamin_short)
# Tampilkan hasil
print(jumlah_per_gender)
## # A tibble: 1 × 2
## jenis_kelamin_short jumlah
## <chr> <int>
## 1 P 5
# Langkah 3: Ekstrak dan print jawaban langsung
laki <- jumlah_per_gender$jumlah[jumlah_per_gender$jenis_kelamin_short == "L"]
perempuan <- jumlah_per_gender$jumlah[jumlah_per_gender$jenis_kelamin_short == "P"]
# Jika tidak ada data untuk salah satu, set ke 0
if (length(laki) == 0) laki <- 0
if (length(perempuan) == 0) perempuan <- 0
print(paste("L =", laki, "dan P =", perempuan))
## [1] "L = 0 dan P = 5"