UTS Data Science Programming


Bagian 1

Operasi dan Tipe Data Dasar

# Minta input dari pengguna
angka1 <- as.numeric(readline(prompt = "Masukkan bilangan pertama: "))
## Masukkan bilangan pertama:
angka2 <- as.numeric(readline(prompt = "Masukkan bilangan kedua: "))
## Masukkan bilangan kedua:
# Operasi matematika
penjumlahan <- angka1 + angka2
perkalian <- angka1 * angka2
pembagian <- angka1 / angka2
pangkat <- angka1 ^ angka2

# Tampilkan hasil operasi
cat("Hasil Penjumlahan:", penjumlahan, "\n")
## Hasil Penjumlahan: NA
cat("Hasil Perkalian:", perkalian, "\n")
## Hasil Perkalian: NA
cat("Hasil Pembagian:", pembagian, "\n")
## Hasil Pembagian: NA
cat("Hasil Pangkat:", pangkat, "\n")
## Hasil Pangkat: NA
# Tampilkan tipe data
cat("Tipe data hasil penjumlahan:", typeof(penjumlahan), "\n")
## Tipe data hasil penjumlahan: double
cat("Tipe data hasil perkalian:", typeof(perkalian), "\n")
## Tipe data hasil perkalian: double
cat("Tipe data hasil pembagian:", typeof(pembagian), "\n")
## Tipe data hasil pembagian: double
cat("Tipe data hasil pangkat:", typeof(pangkat), "\n")
## Tipe data hasil pangkat: double
  • readline(prompt = “…”): Meminta input dari pengguna.

  • as.numeric(): Mengubah input dari karakter menjadi angka.

  • cat(): Menampilkan teks atau hasil ke layar.

  • ^: Operator untuk pangkat.

  • typeof(): Menampilkan tipe data dari suatu variabel.

Control Flow

# Baca Input Interaktif
if (interactive()) {
  nilai <- as.numeric(readline(prompt = "Masukkan nilai ujian (0-100): "))
} else {
  nilai <- 78  # Nilai default saat di-knit
}

# Tampilkan nilai yang digunakan
cat("Nilai Ujian:", nilai, "\n")
## Nilai Ujian: 78
# Evaluasi berdasarkan nilai
if (!is.na(nilai)) {
  if (nilai >= 85) {
    cat("Keterangan: Sangat Baik\n")
  } else if (nilai >= 70) {
    cat("Keterangan: Baik\n")
  } else if (nilai >= 60) {
    cat("Keterangan: Cukup\n")
  } else {
    cat("Keterangan: Perlu Perbaikan\n")
  }
} else {
  cat("Nilai tidak valid!\n")
}
## Keterangan: Baik

readline(): Digunakan untuk meminta input dari pengguna.

as.numeric(): Mengubah input teks menjadi angka.

if, else if, dan else: Struktur kendali untuk menentukan kondisi mana yang terpenuhi.

cat(): Menampilkan teks ke layar.

Fungsi dan Perulangan

# Definisikan fungsi untuk menampilkan kelipatan genap 4
kelipatan_genap <- function(n) {
  for (i in 1:n) {
    if (i %% 4 == 0) {
      cat(i, "\n")
    }
  }
}

# Ambil input, pakai default saat knit
if (interactive()) {
  angka <- as.integer(readline(prompt = "Masukkan bilangan bulat n: "))
} else {
  angka <- 20  # nilai default jika sedang di-knit
}

# Tampilkan nilai yang digunakan
cat("Input bilangan n:", angka, "\n")
## Input bilangan n: 20
# Panggil fungsi hanya jika input valid
if (!is.na(angka) && angka > 0) {
  cat("Kelipatan genap 4 dari 1 hingga", angka, ":\n")
  kelipatan_genap(angka)
} else {
  cat("Input tidak valid.\n")
}
## Kelipatan genap 4 dari 1 hingga 20 :
## 4 
## 8 
## 12 
## 16 
## 20
  • function(n): Mendefinisikan fungsi dengan parameter n.

  • for (i in 1:n): Melakukan perulangan dari 1 sampai n.

  • %%: Operator modulus untuk mencari sisa bagi. i %% 4 == 0 artinya i habis dibagi 4.

  • cat(): Menampilkan hasil ke layar.

as.integer(): Mengubah input menjadi bilangan bulat

Bagian 2

Data Collection

## ✅ Data gabungan dari seluruh sheet:
## Jumlah baris: 150
## Jumlah kolom: 9
## # A tibble: 150 × 9
##    OrderlD Tanggal      Produk     Kategori   Harga   Jumlah Total Pembeli Kota 
##      <dbl> <chr>        <chr>      <chr>      <chr>   <chr>  <lgl> <chr>   <chr>
##  1    1001 45292.000000 Laptop A   <NA>       150000… empat  NA    Budi@   Band…
##  2    1002 02-01-2024T  as  Brande Fashion    150000… 2      NA    Budi@   Sura…
##  3    1003 03-01-2024T  as  Brande Aksesoris  150000… 3      NA    _anony… Band…
##  4    1004 45295.000000 Kemeja     <NA>       150000… dua    NA    Andi123 Band…
##  5    1005 45296.000000 -          Fashion    Rp750.… 3      NA    _anony… Jaka…
##  6    1006 06-01-2024S  martphon   Fashion    150000… empat  NA    Sinta99 Band…
##  7    1007 07-01-2024S  epatu 'Nik Elektronik 1200000 3      NA    anonymo Band…
##  8    1008 45299.000000 -          Elektronik 250000  dua    NA    _anony… Jaka…
##  9    1009 09-01-2024S  martphon   Elektronik 150000… empat  NA    _anony… <NA> 
## 10    1010 10-01-2024S  epatu ’Nik Aksesoris  Rp750.… 2      NA    Sinta99 Sura…
## # ℹ 140 more rows

Data Cleaning

## ✅ Data setelah dibersihkan:
## # A tibble: 10 × 10
##    OrderlD Tanggal    Produk    Kategori Harga Jumlah  Total Pembeli Kota     ID
##      <dbl> <date>     <chr>     <chr>    <dbl>  <dbl>  <dbl> <chr>   <chr> <int>
##  1    1001 NA         Laptop A  <NA>     1.5e7      4  6  e7 Budi@   Band…     1
##  2    1002 2024-01-02 as  Bran… Fashion  1.5e7     NA NA     Budi@   Sura…     2
##  3    1004 NA         Kemeja    <NA>     1.5e7      2  3  e7 Andi123 Band…     3
##  4    1006 2024-01-06 martphon  Fashion  1.5e7      4  6  e7 Sinta99 Band…     4
##  5    1010 2024-01-10 epatu ’N… Aksesor… 7.5e5     NA NA     Sinta99 Sura…     5
##  6    1012 2024-01-12 as  Bran… Aksesor… 2.5e5      4  1  e6 Andi123 Sura…     6
##  7    1013 NA         Laptop A  Aksesor… 7.5e5     NA NA     Sinta99 Sura…     7
##  8    1014 2024-01-14 as  Bran… Elektro… 7.5e5      2  1.5e6 Sinta99 Sura…     8
##  9    1017 2024-01-17 epatu ’N… Aksesor… 2.5e5      4  1  e6 Andi123 Jaka…     9
## 10    1018 2024-01-18 martphon  Aksesor… 7.5e5      2  1.5e6 Sinta99 <NA>     10

Data Transforming

## 🟦 a. Kolom Bulan:
## # A tibble: 6 × 2
##   Tanggal    Bulan  
##   <date>     <ord>  
## 1 2024-01-02 January
## 2 2024-01-06 January
## 3 2024-01-10 January
## 4 2024-01-12 January
## 5 2024-01-14 January
## 6 2024-01-17 January
## 
## 🟩 b. Total Penjualan per Produk:
## # A tibble: 5 × 2
##   Produk       Total
##   <chr>        <dbl>
## 1 as  Brande 3900611
## 2 as Brande        0
## 3 epatu 'Nik 4800106
## 4 epatu ’Nik 1500106
## 5 martphon   7801526
## 
## 🟨 c. Jumlah Transaksi per Kota:
## # A tibble: 4 × 2
##   Kota     Jumlah_Transaksi
##   <chr>               <int>
## 1 Bandung                 8
## 2 Jakarta                 5
## 3 Surabaya               11
## 4 <NA>                    5
## 
## 🟥 d. Total Penjualan per Bulan:
## # A tibble: 3 × 2
##   Bulan       Total
##   <ord>       <dbl>
## 1 January   3000819
## 2 February 10201118
## 3 March     4800412

Visualisasi Tambahan