#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()