Ujian Tengah Semester
Programming Data Science
1. Operasi dan Tipe Data Dasar
1.1 Menerima dua bilangan dari pengguna
# A <- as.numeric(readline(prompt = "Bilangan 1: "))
# B <- as.numeric(readline(prompt = "Bilangan 2: "))
A <- 14
B <- 5Fungsi ini digunakan untuk meminta input dari pengguna dan mengubahnya menjadi tipe data numerik.
readline(prompt = “Bilangan 1:”) : Menampilkan pesan “Bilangan 1:” di konsol dan menunggu pengguna memasukkan nilai. Nilai yang dimasukkan akan dibaca sebagai string (teks).
as.numeric(…) : Mengonversi string yang dimasukkan oleh pengguna menjadi nilai numerik (angka). Jika pengguna memasukkan nilai yang tidak dapat dikonversi menjadi angka, hasilnya akan menjadi NA (Not Available)
1.2 Menghitung dan Menampilkan Hasil
## [1] "Perjumlahan = 19"
## [1] "Perkalian = 70"
## [1] "Pembagian = 2.8"
## [1] "Pangkat = 537824"
Kode ini digunakan untuk melakukan operasi matematika dasar antara dua variabel, yaitu A dan B. Operasi yang dilakukan meliputi penjumlahan (A + B), perkalian (A * B), pembagian (A / B), dan perpangkatan (A ^ B). Hasil dari masing-masing operasi kemudian ditampilkan ke layar menggunakan fungsi print().
1.3 Menampilkan Tipe Data Masing - masing Hasil Operasi
## [1] "Tipe = numeric"
## [1] "Tipe = numeric"
## [1] "Tipe = numeric"
## [1] "Tipe = numeric"
kode ini juga mencetak tipe data dari masing-masing hasil menggunakan fungsi class(). Hal ini berguna untuk mengetahui apakah hasil perhitungan bertipe integer (bilangan bulat), float (bilangan desimal), atau tipe data lainnya.
2. Control Flow
2.1 Menerima input nilai dari pengguna (0 - 100)
2.2 Menampilkan keterangan berdasarkan ketentuan
# A <- as.numeric(readline(prompt = "Nilai Ujian: "))
A <- 83
if (A >= 85){
print(paste("Sangat Baik"))
} else if (A >= 70){
print(paste("Baik"))
} else if (A >= 60){
print(paste("Cukup"))
} else {
print(paste("Perlu Perbaikan"))
}## [1] "Baik"
Fungsi ini berguna ketika ingin mengetahui seberapa bagus nilai yang didapatkan.
- A <- 83 : Menyimpan nilai 83 ke dalam variabel A.
- if (A >= 85) : Mengecek apakah nilai A lebih besar atau sama dengan 85. Jika ya, maka cetak “Sangat Baik”.
- else if (A >= 70) : Jika nilai A kurang dari 85 tapi lebih dari atau sama dengan 70, maka cetak “Baik”.
- else if (A >= 60) : Jika tidak memenuhi kondisi sebelumnya, tapi nilai A ≥ 60, maka cetak “Cukup”.
- else if (A < 60)* : Jika nilai A di bawah 60, maka cetak “Perlu Perbaikan”.
- else : Jika semua kondisi tidak terpenuhi, maka cetak “Gagal”.
3. Fungsi dan Perulangan
3.2 Menggunakan loop untuk kelipatan 4 dari 1 hingga n
## [1] "n : 35"
## 4 8 12 16 20 24 28 32
Fungsi ini berguna untuk mengetahui bilangan - bilangan kelipatan 4 sampai bilangan yang kita input.
- n <- 35: Menyimpan angka 35 ke dalam variabel n.
- print(paste(“n :”, n)) : Menampilkan nilai n di konsol.
- for (i in 1:n) : Melakukan perulangan dari angka 1 sampai 35.
- if (i %% 4 == 0) : Mengecek apakah i habis dibagi 4 (menggunakan operator modulo %).
- cat(i, ” “): Menampilkan angka yang habis dibagi 4 secara horizontal, dipisahkan oleh spasi.
4. Studi Kasus
Sebuah perusahaan e-commerce ingin menganalisis perfoma penjualannya berdasarkan data transaksi selama 3 bulan terakhir. Namun, data yang tersedia berasal dari berbagai sumber dan memiliki kualitas yang beragam.
4.1 Data Collection
library(dplyr)
library(readr)
# Baca ketiga file CSV
DTJan <- read_csv("Januari.csv")
DTFeb <- read_csv("Februari.csv")
DTMar <- read_csv("Maret.csv")
# Gabungan ketiga data menjadi satu
DT <- rbind(DTJan, DTFeb, DTMar)
# Simpan file gabungan
write_csv(DT, "data_transaksi.csv")
# Jumlah Baris
DTBaris <- nrow(DT)
# Jumlah Kolom
DTKolom <- ncol(DT)
print(paste("Jumlah Baris =", DTBaris))## [1] "Jumlah Baris = 150"
## [1] "Jumlah Kolom = 9"
Tergabungnya data transaksi pada bulan Januari, Februaridan Maret ini bertujuan untuk memudahkan analisis data secara menyeluruh. Data transaksi gabungan ini terdapat sebanyak 150 baris dan 9 kolom.
Penjelasan Fungsi
- dplyr = Package untuk memanipulasi data
- readr = Package untuk Membaca file
- read_csv = Membaca file csv
- rbind = Menggambungkan ketiga file
- write_csv = Menyimpan file gabungan dalam bentuk csv
- nrow = Menghitung baris pada file gabungan
- ncol = Menghitung kolom pada file gabungan
4.2 Data Cleaning
4.2.1 Format tanggal
library(dplyr)
library(readr)
DTDate <- read_csv("data_transaksi.csv")
# mengubah format tanggal
DTDate$Tanggal <- as.Date(DTDate$Tanggal, format = "%d-%m-%Y")
write.csv(DTDate, "data_cleaning_date.csv")Fungsi ini berguna untuk mengubah kolom tanggal menjadi fomat tanggal dengan menggunakan as.Date dan mengambil kolom DTDate$Tanggal kolom yang akan diubah formatnya.
4.2.2 Format Numerik
library(stringr)
library(dplyr)
library(readr)
DTB <- read_csv("data_cleaning_date.csv")
# Membersihkan kolom 'harga'
DTB$Harga_B <- DTB$Harga |>
str_to_lower() |>
str_remove_all("rp") |>
str_remove_all("[^0-9]") |>
as.numeric()
# Membersihkan kolom 'jumlah'
DTB$Jumlah_B <- DTB$Jumlah |>
str_to_lower() |>
str_remove_all("rp") |>
str_remove_all("[^0-9]") |>
as.numeric()
# Mengganti NA dengan nilai acak
DTB$Jumlah_B[is.na(DTB$Jumlah_B)] <- median(DTB$Jumlah_B, na.rm = TRUE)
write.csv(DTB, "data_cleaning_b.csv", row.names = FALSE)Fungsi ini berguna untuk mengubah menjadi tipe data numeric as.numeric dengan membersihkan nilai yang kosong maupun yang ada “rp dan”-” dan mengubahnya menjadi lalu diubah menjadi nilai acak dan menyimpannya di kolom baru.
4.2.3 Menghitung Total Harga
library(dplyr)
library(readr)
DTC <- read_csv("data_cleaning_b.csv")
DTC$Total <- DTC$Harga_B * DTC$Jumlah_B
write.csv(DTC, "data_cleaning_c.csv")Fungsi ini berguna untuk menghitung kolom harga dan kolom jumlah dengan mengkalikan dan menaruh hasilnya di kolom Total.
4.2.4 Ganti Karakter Tidak Valid
library(dplyr)
library(readr)
DTD <- read_csv("data_cleaning_c.csv")
DTD$Produk <- na_if(DTD$Produk, "-")
DTD$Pembeli <- na_if(DTD$Pembeli, "_anonymous_")
write.csv(DTD, "data_cleaning_d.csv")Fungsi ini berguna untuk mengubah karakter yang tidak jelas menjadi NA dengan menggunakan na_if.
4.2.5 Hapus Baris yang Tidak Memiliki Produk
library(dplyr)
library(readr)
DTE <- read_csv("data_cleaning_d.csv")
DTE <- DTE %>% filter(!is.na(Produk))
DTE <- DTE %>% select(-Harga, -Jumlah)
DTBaris <- nrow(DTE)
print(paste("Jumlah baris =",DTBaris))## [1] "Jumlah baris = 122"
Fungsi ini berguna untuk menghapus baris yang tidak memiliki nilai NA pada kolom produk dengan menggunakan %>% filter(is.na()) dan kolom yang sudah tidak digunakan.
4.3 Data Transformation
4.3.1 membuat kolom baru bulan berdasarkan tanggal
library(dplyr)
library(readr)
Data_clean <- read_csv("Data_Clean_B.csv")
Data_clean$Tanggal <- as.Date(Data_clean$Tanggal)
Data_clean$Bulan <- format(Data_clean$Tanggal, "%m")
nama_bulan <- c("01" = "Januari", "02" = "Februari", "03" = "Maret", "04" = "April")
Data_clean$bulan_nama <- nama_bulan[Data_clean$Bulan]
write.csv(Data_clean, "data_transformation_a.csv")Fungsi format(Data_clean\(Tanggal, "%m")** berguna untuk mengubahnya menjadi nama bulan dari angka bulan dan menyimpannya di kolom baru **Data_clean\)Bulan.
Data yang sudah dibersihkan dapat dianalisis.
4.3.2 Total Penjualan per Kategori
library(dplyr)
library(readr)
Data_clean <- read_csv("data_transformation_a.csv")
Total_penjualan_A <- Data_clean %>%
group_by(Kategori) %>%
summarise(Total_penjualan = sum(Total, na.rm = TRUE))
knitr::kable(Total_penjualan_A)| Kategori | Total_penjualan |
|---|---|
| Aksesoris | 251150000 |
| Elektronik | 535250000 |
| Fashion | 579900000 |
Fungsi ini berguna untuk menghitung jumlah sum() dari kolom kategori yang dikelompokkan sesuai dengan jenis kategori group_by()
4.3.3 Total Penjualan per Kota
library(dplyr)
library(readr)
Data_clean <- read_csv("data_transformation_a.csv")
Total_penjualan_B <- Data_clean %>%
group_by(Kota) %>%
summarise(Total_penjualan = sum(Total, na.rm = TRUE))
knitr::kable(Total_penjualan_B)| Kota | Total_penjualan |
|---|---|
| - | 234100000 |
| Bandung | 427850000 |
| Jakarta | 357550000 |
| Surabaya | 346800000 |
Fungsi ini berguna untuk menghitung jumlah sum() dari kolom bulan yang dikelompokkan sesuai dengan bulan group_by()
4.3.4 Total Penjualan per Bulan
library(dplyr)
library(readr)
Data_clean <- read_csv("data_transformation_a.csv")
Total_penjualan_C <- Data_clean %>%
group_by(bulan_nama) %>%
summarise(Total_penjualan = sum(Total, na.rm = TRUE))
knitr::kable(Total_penjualan_C)| bulan_nama | Total_penjualan |
|---|---|
| April | 154900000 |
| Februari | 422200000 |
| Januari | 367650000 |
| Maret | 421550000 |
Fungsi ini berguna untuk menghitung jumlah sum() dari kolom kota yang dikelompokkan sesuai dengan jenis kota group_by()
4.4 Visualisasi
Grafik menunjukkan penjualan tiga kategori produk—Aksesoris, Elektronik, dan Fashion—selama Januari hingga Maret.
Di Januari, Elektronik unggul dalam penjualan, tapi pada Februari dan Maret, Fashion mengalami lonjakan tajam hingga menjadi yang tertinggi.
Sebaliknya, Aksesoris justru mengalami penurunan signifikan dari bulan ke bulan, sementara Elektronik relatif stabil.
Referensi
DScienceLabs. (n.d.). Basic Programming. Retrieved from https://bookdown.org/dsciencelabs/data_science_programming/01-Basic-Programming.html
DScienceLabs. (n.d.). Syntac and control Flow. Retrieved from https://bookdown.org/dsciencelabs/data_science_programming/02-Syntax-and-Control-Flow.html
DScienceLabs. (n.d.). Functions and Loops. Retrieved from https://bookdown.org/dsciencelabs/data_science_programming/03-Functions-and-Loops.html
DScienceLabs. (n.d.). Data collection. Retrieved from https://bookdown.org/dsciencelabs/data_science_programming/04-Data_Collection.html
DScienceLabs. (n.d.). Data Cleaning. Retrieved from https://bookdown.org/dsciencelabs/data_science_programming/05-Data-Cleaning.html
DScienceLabs. (n.d.). Data Transformation. Retrieved from https://bookdown.org/dsciencelabs/data_science_programming/06-Data-Transformation.html