#Latihan Materi UTS Week 3
nilai <- c(70, 85, 90, 65, 80)
mean(nilai)
## [1] 78
seq(2, 10, by = 2)
## [1] 2 4 6 8 10
rep(c(1, 2, 3), times = 2)
## [1] 1 2 3 1 2 3
rep(c(1, 2, 3), each = 3)
## [1] 1 1 1 2 2 2 3 3 3
df_latihan <- data.frame(nama = c("Ani", "Budi", "Citra"), nilai = c(80, 75, 95))
df_latihan$nilai
## [1] 80 75 95
df_latihan[2, ]
## nama nilai
## 2 Budi 75
df_latihan[3, 2]
## [1] 95
17 %% 5
## [1] 2
17 %/% 5
## [1] 3
17 %% 5 == 2
## [1] TRUE
skor <- 72
if(skor >= 72){
print("Lulus")
} else{
print("Tidak Lulus")}
## [1] "Lulus"
IPK <- 2.9
if(IPK >= 3.5){print("Excellent")} else if(IPK > 3.0){print("Great")} else if(IPK > 3.0){print("OK")} else{print("Enough")}
## [1] "Enough"
library(readxl)
## Warning: package 'readxl' was built under R version 4.5.3
dataset_pendidikan <- read_excel("COLLEGE'S LIFE/RPS dan Bahan Ajar/Pengantar Sains Data/New/PDF Materi/dataset_pendidikan.xlsx")
library(dplyr)
## Warning: package 'dplyr' was built under R version 4.5.3
##
## 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
#Berapa mahasiswa yang berada di semester 5 ke atas dan ber-IPK ≥ 3,0?
dataset_pendidikan %>% filter(IPK >= 3.0) %>% filter(Semester >= 5) %>% nrow()
## [1] 63
#Berapa mahasiswa yang rata-rata tidurnya kurang dari 6 jam tetapi IPK-nya ≥ 3,5?
dataset_pendidikan %>% filter(Rata2_Jam_Tidur < 6 , IPK > 3.5) %>% nrow()
## [1] 6
#Hitung rata-rata Total_Jam_Belajar per semester. Semester berapa yang rata-ratanya paling tinggi?
dataset_pendidikan %>% group_by(Semester) %>% summarise(mean(Total_Jam_Belajar))
## # A tibble: 8 × 2
## Semester `mean(Total_Jam_Belajar)`
## <dbl> <dbl>
## 1 1 189.
## 2 2 198.
## 3 3 198.
## 4 4 203.
## 5 5 193.
## 6 6 192.
## 7 7 180
## 8 8 168.
#Buat kolom baru Kategori_Tidur: kurang dari 6 jam = “Kurang”, 6 sampai 8 jam = “Cukup”, lebih dari 8 jam = “Lebih”. Lalu hitung jumlah mahasiswa di tiap kategori.
data_tidur <- dataset_pendidikan %>% mutate(Kategori_Tidur = case_when(Rata2_Jam_Tidur < 6 ~ "Kurang", Rata2_Jam_Tidur <= 8 ~ "Cukup", Rata2_Jam_Tidur > 8 ~ "Lebih"))
table(data_tidur$Kategori_Tidur)
##
## Cukup Kurang Lebih
## 143 47 10
#Latihan Materi UTS Week 4
library(dplyr)
FileBaru <- data.frame(datasets::Titanic)
head(FileBaru)
## Class Sex Age Survived Freq
## 1 1st Male Child No 0
## 2 2nd Male Child No 0
## 3 3rd Male Child No 35
## 4 Crew Male Child No 0
## 5 1st Female Child No 0
## 6 2nd Female Child No 0
str(FileBaru)
## 'data.frame': 32 obs. of 5 variables:
## $ Class : Factor w/ 4 levels "1st","2nd","3rd",..: 1 2 3 4 1 2 3 4 1 2 ...
## $ Sex : Factor w/ 2 levels "Male","Female": 1 1 1 1 2 2 2 2 1 1 ...
## $ Age : Factor w/ 2 levels "Child","Adult": 1 1 1 1 1 1 1 1 2 2 ...
## $ Survived: Factor w/ 2 levels "No","Yes": 1 1 1 1 1 1 1 1 1 1 ...
## $ Freq : num 0 0 35 0 0 0 17 0 118 154 ...
#. Pilih hanya kolom Class, Survived, Freq. Berapa kolom hasilnya?
select(FileBaru, Class, Survived, Freq)
## Class Survived Freq
## 1 1st No 0
## 2 2nd No 0
## 3 3rd No 35
## 4 Crew No 0
## 5 1st No 0
## 6 2nd No 0
## 7 3rd No 17
## 8 Crew No 0
## 9 1st No 118
## 10 2nd No 154
## 11 3rd No 387
## 12 Crew No 670
## 13 1st No 4
## 14 2nd No 13
## 15 3rd No 89
## 16 Crew No 3
## 17 1st Yes 5
## 18 2nd Yes 11
## 19 3rd Yes 13
## 20 Crew Yes 0
## 21 1st Yes 1
## 22 2nd Yes 13
## 23 3rd Yes 14
## 24 Crew Yes 0
## 25 1st Yes 57
## 26 2nd Yes 14
## 27 3rd Yes 75
## 28 Crew Yes 192
## 29 1st Yes 140
## 30 2nd Yes 80
## 31 3rd Yes 76
## 32 Crew Yes 20
#Berapa total penumpang anak-anak (Age == "Child"
FileBaru %>% select(Class, Survived, Freq)
## Class Survived Freq
## 1 1st No 0
## 2 2nd No 0
## 3 3rd No 35
## 4 Crew No 0
## 5 1st No 0
## 6 2nd No 0
## 7 3rd No 17
## 8 Crew No 0
## 9 1st No 118
## 10 2nd No 154
## 11 3rd No 387
## 12 Crew No 670
## 13 1st No 4
## 14 2nd No 13
## 15 3rd No 89
## 16 Crew No 3
## 17 1st Yes 5
## 18 2nd Yes 11
## 19 3rd Yes 13
## 20 Crew Yes 0
## 21 1st Yes 1
## 22 2nd Yes 13
## 23 3rd Yes 14
## 24 Crew Yes 0
## 25 1st Yes 57
## 26 2nd Yes 14
## 27 3rd Yes 75
## 28 Crew Yes 192
## 29 1st Yes 140
## 30 2nd Yes 80
## 31 3rd Yes 76
## 32 Crew Yes 20
FileBaru %>% filter(Age == "Child") %>% summarise(total = sum(Freq))
## total
## 1 109
#Urutkan dari Freq terbesar, ambil 3 teratas. Apa isi baris pertama?
FileBaru %>% arrange(desc(Freq)) %>% head(3)
## Class Sex Age Survived Freq
## 1 Crew Male Adult No 670
## 2 3rd Male Adult No 387
## 3 Crew Male Adult Yes 192
#Tambah kolom Persen = Freq / sum(Freq) * 100. Berapa persen pada baris ke-12 (Crew, Male, Adult, No)?
FileBaru %>% mutate(Persen = Freq / sum(Freq) * 100)
## Class Sex Age Survived Freq Persen
## 1 1st Male Child No 0 0.00000000
## 2 2nd Male Child No 0 0.00000000
## 3 3rd Male Child No 35 1.59018628
## 4 Crew Male Child No 0 0.00000000
## 5 1st Female Child No 0 0.00000000
## 6 2nd Female Child No 0 0.00000000
## 7 3rd Female Child No 17 0.77237619
## 8 Crew Female Child No 0 0.00000000
## 9 1st Male Adult No 118 5.36119945
## 10 2nd Male Adult No 154 6.99681963
## 11 3rd Male Adult No 387 17.58291686
## 12 Crew Male Adult No 670 30.44070877
## 13 1st Female Adult No 4 0.18173557
## 14 2nd Female Adult No 13 0.59064062
## 15 3rd Female Adult No 89 4.04361654
## 16 Crew Female Adult No 3 0.13630168
## 17 1st Male Child Yes 5 0.22716947
## 18 2nd Male Child Yes 11 0.49977283
## 19 3rd Male Child Yes 13 0.59064062
## 20 Crew Male Child Yes 0 0.00000000
## 21 1st Female Child Yes 1 0.04543389
## 22 2nd Female Child Yes 13 0.59064062
## 23 3rd Female Child Yes 14 0.63607451
## 24 Crew Female Child Yes 0 0.00000000
## 25 1st Male Adult Yes 57 2.58973194
## 26 2nd Male Adult Yes 14 0.63607451
## 27 3rd Male Adult Yes 75 3.40754203
## 28 Crew Male Adult Yes 192 8.72330759
## 29 1st Female Adult Yes 140 6.36074512
## 30 2nd Female Adult Yes 80 3.63471149
## 31 3rd Female Adult Yes 76 3.45297592
## 32 Crew Female Adult Yes 20 0.90867787
#Hitung total penumpang selamat dan tidak per Class. Kelas mana yang selamatnya terbanyak?
FileBaru %>% group_by(Class, Survived) %>% summarise(total = sum(Freq))
## `summarise()` has regrouped the output.
## ℹ Summaries were computed grouped by Class and Survived.
## ℹ Output is grouped by Class.
## ℹ Use `summarise(.groups = "drop_last")` to silence this message.
## ℹ Use `summarise(.by = c(Class, Survived))` for per-operation grouping
## (`?dplyr::dplyr_by`) instead.
## # A tibble: 8 × 3
## # Groups: Class [4]
## Class Survived total
## <fct> <fct> <dbl>
## 1 1st No 122
## 2 1st Yes 203
## 3 2nd No 167
## 4 2nd Yes 118
## 5 3rd No 528
## 6 3rd Yes 178
## 7 Crew No 673
## 8 Crew Yes 212
#Latihan Week 5
library(readxl)
df_customer <- read_excel("COLLEGE'S LIFE/RPS dan Bahan Ajar/Pengantar Sains Data/New/df_customer.xlsx")
#Hitung banyaknya transaksi dengan Total_Belanja lebih dari Rp8.000.000.
sum(df_customer$Total_Belanja > 8000000)
## [1] 68
#Hitung rata-rata Total_Belanja khusus pelanggan Perempuan yang tinggal di Kota
mean(df_customer$Total_Belanja[df_customer$Jenis_Kelamin == "Perempuan" & df_customer$Tempat_Tinggal == "Kota"])
## [1] 7949063
#Tampilkan ID_Pelanggan dan Penghasilan dari 3 transaksi dengan penghasilan terendah.
df_customer[order(df_customer$Penghasilan), c("ID_Pelanggan", "Penghasilan")] %>% head(3)
## # A tibble: 3 × 2
## ID_Pelanggan Penghasilan
## <chr> <dbl>
## 1 ID00011 901314
## 2 ID00072 1777583
## 3 ID00027 2149709
#Hitung total belanja kumulatif tiap pelanggan, lalu tampilkan 3 pelanggan teratas
agg <- aggregate(Total_Belanja ~ ID_Pelanggan, data = df_customer, sum)
agg[order(-agg$Total_Belanja), ] %>% head(3)
## ID_Pelanggan Total_Belanja
## 6 ID00007 62929250
## 23 ID00025 51728276
## 88 ID00093 48831121
#Latihan Week 6
library(ggplot2)
## Warning: package 'ggplot2' was built under R version 4.5.3
library(dplyr)
library(readxl)
df_customer <- read_excel("COLLEGE'S LIFE/RPS dan Bahan Ajar/Pengantar Sains Data/New/df_customer.xlsx")
#Buat bar chart jumlah transaksi per Tempat_Tinggal dengan geom_bar(). Berapa tinggi batang Kota dan Desa?
ggplot(df_customer, aes(x = Tempat_Tinggal)) + geom_bar(fill = "Khaki")

#Buat bar chart rata-rata Total_Belanja per Jenis_Kelamin dengan geom_col(). Berapa tinggi kedua batang?
mean <- df_customer %>% group_by(Jenis_Kelamin) %>% summarise(rata = mean(Total_Belanja))
ggplot(mean, aes(x = Jenis_Kelamin, y = rata)) + geom_col()

#Buat boxplot Penghasilan menurut Tempat_Tinggal. Berapa median tiap kelompok, dan mana yang lebih tinggi?
ggplot(df_customer, aes(X = Tempat_Tinggal, y = Penghasilan, fill = Tempat_Tinggal)) + geom_boxplot()
