Latihan
Praktikum Week-4
Safina Zahra (52250033)
Student Majoring in Data Science
R Programming
Data Science
Statistics
Pendahuluan
Pemrograman merupakan keterampilan penting dalam bidang data science karena memungkinkan analis untuk mengolah data dan mengotomatisasi proses analisis. Salah satu konsep dasar dalam pemrograman adalah conditional statements (pernyataan kondisi), yaitu mekanisme yang memungkinkan program mengambil keputusan berdasarkan kondisi tertentu. Dengan menggunakan struktur seperti if dan if–else, program dapat menjalankan perintah yang berbeda tergantung pada apakah suatu kondisi bernilai benar atau salah.
Pemahaman tentang conditional statements membantu mahasiswa mengembangkan cara berpikir yang logis dan sistematis dalam menyelesaikan permasalahan berbasis data. Konsep ini sangat penting dalam data science karena data yang dianalisis sering kali memiliki kondisi yang berbeda sehingga memerlukan perlakuan atau proses yang berbeda pula.
Saya juga ingin menyampaikan terima kasih kepada Bapak Bakti Siregar, M.Sc., CDS., selaku dosen Data Science Programming, atas bimbingan dan penjelasannya yang telah membantu saya memahami konsep dasar pemrograman ini dengan lebih jelas.
1. Dataset
##
## 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
## Warning: package 'kableExtra' was built under R version 4.5.2
##
## Attaching package: 'kableExtra'
## The following object is masked from 'package:dplyr':
##
## group_rows
# Membuat dataset
employees <- data.frame(
name = c("Bagas","Joan","Alya","Dwi","Nabil"),
age = c(25,30,27,35,40),
salary = c(5000,7000,6500,10000,12000),
position = c("Staff","Supervisor","Staff","Manager","Director"),
performance = c("Good","Very Good","Average","Good","Very Good")
)
library(DT)
datatable(
employees,
caption = "Tabel Data Karyawan",
extensions = "Buttons",
options = list(
pageLength = 5,
dom = 'Bfrtip',
buttons = c('copy','csv','excel','print'),
scrollX = TRUE
),
class = "stripe hover row-border"
)Interpretasi
Kode ini membuat dataset karyawan dalam bentuk dataframe yang berisi informasi nama, usia, gaji, posisi, dan performa kerja. Dataset ini akan digunakan sebagai dasar untuk melakukan analisis menggunakan pernyataan bersyarat dan perulangan.
Visualisasi
## Warning: package 'highcharter' was built under R version 4.5.2
## Registered S3 method overwritten by 'quantmod':
## method from
## as.zoo.data.frame zoo
library(htmlwidgets)
# Dataset karyawan
employees <- data.frame(
name = c("Bagas","Joan","Alya","Dwi","Nabil"),
age = c(25,30,27,35,40),
salary = c(5000,7000,6500,10000,12000),
position = c("Staff","Supervisor","Staff","Manager","Director"),
performance = c("Good","Very Good","Average","Good","Very Good")
)
# Menambahkan warna
salary_data <- employees %>%
mutate(
color = c("#4E79A7","#F28E2B","#59A14F","#E15759","#B07AA1")
)
highchart() %>%
hc_chart(
type = "column",
height = 380,
backgroundColor = "#F5F7FB",
# Event ketika chart diklik
events = list(
click = JS(
"function () {
this.fullscreen.toggle();
}"
)
)
) %>%
hc_title(text = "Perbandingan Gaji Karyawan") %>%
hc_xAxis(
categories = salary_data$name,
title = list(text = "Nama Karyawan")
) %>%
hc_yAxis(
title = list(text = "Gaji")
) %>%
hc_add_series(
name = "Gaji",
data = list_parse(
transform(salary_data, y = salary, color = color)
)
) %>%
hc_exporting(enabled = TRUE)Interpretasi
Grafik ini menunjukkan perbandingan gaji setiap karyawan. Terlihat bahwa Nabil memiliki gaji paling tinggi, sedangkan Bagas memiliki gaji paling rendah. Perbedaan ini kemungkinan dipengaruhi oleh posisi jabatan dalam perusahaan.
2. Conditional Statement (Menghitung Bonus)
for(i in 1:nrow(employees)){
# mengambil nilai performa dan gaji
perf <- employees$performance[i]
sal <- employees$salary[i]
# menentukan bonus menggunakan kondisi
if(perf == "Very Good"){
bonus <- sal * 0.20
} else if(perf == "Good"){
bonus <- sal * 0.10
} else {
bonus <- sal * 0.05
}
# menampilkan output sesuai format
cat("Name:", employees$name[i], ", Bonus:", bonus, "\n")
}## Name: Bagas , Bonus: 500
## Name: Joan , Bonus: 1400
## Name: Alya , Bonus: 325
## Name: Dwi , Bonus: 1000
## Name: Nabil , Bonus: 2400
Interpretasi
Kode ini menggunakan perulangan for untuk membaca setiap karyawan dalam dataset. Program kemudian menggunakan pernyataan bersyarat (if, else if, else) untuk menentukan besarnya bonus berdasarkan tingkat performa karyawan. Setelah bonus dihitung, program menampilkan hasil dalam format tersebut.
Visualisasi
library(dplyr)
library(highcharter)
library(htmlwidgets)
# Dataset karyawan
employees <- data.frame(
name = c("Bagas","Joan","Alya","Dwi","Nabil"),
age = c(25,30,27,35,40),
salary = c(5000,7000,6500,10000,12000),
position = c("Staff","Supervisor","Staff","Manager","Director"),
performance = c("Good","Very Good","Average","Good","Very Good")
)
# Menghitung bonus berdasarkan performa
bonus_df <- employees %>%
mutate(
bonus = case_when(
performance == "Very Good" ~ salary * 0.20,
performance == "Good" ~ salary * 0.10,
TRUE ~ salary * 0.05
)
)
# Visualisasi bonus
highchart() %>%
hc_chart(
type = "column",
backgroundColor = "#F5F7FB",
zoomType = "x", # memungkinkan zoom dengan drag
# klik grafik → fullscreen
events = list(
click = JS(
"function () {
this.fullscreen.toggle();
}"
)
)
) %>%
hc_title(text = "Perbandingan Bonus Karyawan") %>%
hc_xAxis(
categories = bonus_df$name,
title = list(text = "Nama Karyawan")
) %>%
hc_yAxis(
title = list(text = "Bonus")
) %>%
hc_add_series(
name = "Bonus",
data = bonus_df$bonus
) %>%
hc_exporting(enabled = TRUE)Interpretasi
Grafik ini menunjukkan jumlah bonus yang diterima oleh setiap karyawan. Bonus dihitung berdasarkan tingkat performa kerja. Karyawan dengan performa Very Good memperoleh bonus yang lebih besar dibandingkan dengan karyawan dengan performa Good atau Average.
3. For Loop (Menampilkan Gaji > 6000)
for(i in 1:nrow(employees)){
# cek apakah gaji lebih dari 6000
if(employees$salary[i] > 6000){
# menampilkan nama dan gaji
cat(
"Name:", employees$name[i],
", Salary:", employees$salary[i], "\n"
)
}
}## Name: Joan , Salary: 7000
## Name: Alya , Salary: 6500
## Name: Dwi , Salary: 10000
## Name: Nabil , Salary: 12000
Interpretasi
Perulangan ini digunakan untuk memfilter karyawan yang memiliki gaji lebih dari 6000. Program memeriksa setiap baris dataset dan hanya menampilkan data yang memenuhi kondisi tersebut.
4. While Loop (Berhenti Saat Manager)
i <- 1
while(i <= nrow(employees)){
# menampilkan nama dan posisi karyawan
cat(
"Name:", employees$name[i],
", Position:", employees$position[i], "\n"
)
# jika menemukan Manager maka berhenti
if(employees$position[i] == "Manager"){
cat("(Stop here)\n")
break
}
i <- i + 1
}## Name: Bagas , Position: Staff
## Name: Joan , Position: Supervisor
## Name: Alya , Position: Staff
## Name: Dwi , Position: Manager
## (Stop here)
Interpretasi
Perulangan while membaca data karyawan satu per satu hingga ditemukan posisi Manager. Ketika posisi tersebut ditemukan, perintah break menghentikan perulangan sehingga data setelahnya tidak ditampilkan.
5. Break (Berhenti Jika Gaji > 10000)
for(i in 1:nrow(employees)){
# jika salary lebih dari 10000 maka berhenti
if(employees$salary[i] > 10000){
cat(
"(Stopped because", employees$name[i],
"has a salary above 10,000)\n"
)
break
}
# menampilkan nama dan salary
cat(
"Name:", employees$name[i],
", Salary:", employees$salary[i], "\n"
)
}## Name: Bagas , Salary: 5000
## Name: Joan , Salary: 7000
## Name: Alya , Salary: 6500
## Name: Dwi , Salary: 10000
## (Stopped because Nabil has a salary above 10,000)
Interpretasi
Kode ini menunjukkan penggunaan break dalam perulangan. Program akan menampilkan data karyawan hingga menemukan gaji yang lebih besar dari 10.000. Ketika kondisi tersebut terpenuhi, perulangan langsung dihentikan.
6. Continue / Next (Melewati Performance “Average”)
for(i in 1:nrow(employees)){
# jika performa Average maka dilewati
if(employees$performance[i] == "Average"){
cat(
employees$name[i],
"is skipped because the performance is 'Average'\n"
)
next
}
# menampilkan nama dan performa
cat(
"Name:", employees$name[i],
", Performance:", employees$performance[i], "\n"
)
}## Name: Bagas , Performance: Good
## Name: Joan , Performance: Very Good
## Alya is skipped because the performance is 'Average'
## Name: Dwi , Performance: Good
## Name: Nabil , Performance: Very Good
Interpretasi
Perintah next digunakan untuk melewati data tertentu dalam perulangan. Jika program menemukan karyawan dengan performa “Average”, maka program tidak akan menampilkan data tersebut dan langsung melanjutkan ke iterasi berikutnya.
Visualisasi
library(dplyr)
library(highcharter)
library(htmlwidgets)
# Menghitung jumlah karyawan berdasarkan performa
performance_df <- employees %>%
count(performance)
# Membuat pie chart distribusi performa
highchart() %>%
# Pengaturan chart
hc_chart(
type = "pie",
backgroundColor = "#F5F7FB",
# Klik grafik → otomatis fullscreen
events = list(
click = JS(
"function () {
this.fullscreen.toggle();
}"
)
)
) %>%
# Judul grafik
hc_title(
text = "Distribusi Performa Karyawan"
) %>%
# Menambahkan data pie chart
hc_add_series(
name = "Jumlah",
data = list_parse2(performance_df)
) %>%
# Menampilkan label persentase pada pie
hc_plotOptions(
pie = list(
dataLabels = list(
enabled = TRUE,
format = "{point.name}: {point.y}"
)
)
) %>%
# Mengaktifkan tombol download dan fullscreen
hc_exporting(enabled = TRUE)Interpretasi
Diagram pie menunjukkan proporsi tingkat performa karyawan. Dari grafik ini dapat dilihat bahwa sebagian besar karyawan memiliki performa Good dan Very Good, sedangkan hanya sedikit yang berada pada kategori Average.