Introduction to Data Science
TUGAS 1
| Kontak | : \(\downarrow\) |
| : dhelaagatha@gmail.com | |
| : https://www.instagram.com/dhelaasf/ | |
| RPubs | : https://rpubs.com/dhelaasafiani/ |
| NIM | : 20214920009 |
| Prodi | : Statistika Bisnis 2021 |
| Nama | : Dhela Asafiani Agatha |
Soal
- Import data
- Create and organize subsets of tabular data using filter, select, arrange, and slice
- Visualize data with a ggplot bar plot
Impor Data 1
Pada kasus kali ini, saya ingin melakukan impor data berupa datahotel.csv. Karena bentuk file nya csv, saya menggunakan fungsi read_csv untuk melakukan impor dan baca data nya.
pacman::p_load(readxl, writexl)
data.hotel <- read.csv("C:/Users/hp/Documents/SEMESTER 2/PENGANTAR DATA SCIENCE/datahotel.csv")
data.hoteldata.hotel$golongan[data.hotel$golongan == "Meati 3"] <- "Melati 3"
data.hotel$golongan[data.hotel$golongan == "Melati "] <- "Melati"
data.hotel$golongan[data.hotel$golongan == "Bintang "] <- "Bintang"
data.hotel$jenis[data.hotel$jenis == "Hotel Bintang "] <- "Hotel Bintang"
data.hotel$jenis[data.hotel$jenis == "Hotel Melati "] <- "Hotel Melati"
#categories <- unique(data.hotel$jenis)
#numberOfCategories <- length(categories)Note : Disini saya sedikit melakukan rename kategori variable yang salah/typo agar terlihat rapi dan tertata.
Create and organize subsets of tabular data 1
Filter Data
Disini saya ingin melakukan filter data menggunakan fungsi filter untuk melakukan filter dari kolom golongan yang memiliki kkategori nama Bintang 3. Jadi, yang keluar adalah data ‘Bintang 3’ setelah proses filter. Untuk melakukan hal ini kita perlu memanggil library dplyr.
library(dplyr)## Warning: package 'dplyr' was built under R version 4.1.2
##
## 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
hotel_bintang3 <- filter(data.hotel, golongan == "Bintang 3")
hotel_bintang3Select Data
Setelah itu, saya melakukan proses dengan fungsi select untuk menentukan kolom apa saja yang ingin kita pilih untuk ditampilkan. Saya memilih kolom ‘nama_usaha, golongan, alamat, jumlah_kamar’.
selected_bintang3 <- select(hotel_bintang3, nama_usaha, golongan, alamat, jumlah_kamar)
selected_bintang3Arrange Data
Kemudian, saya melakukan proses pengurutan dengan fungsi arrange untuk menyusun dari kecil ke besar atau dari besar ke kecil. Disini saya mengurutkan jumlah_kamar dari yang terkecil sampai terbesar.
arranged_bintang3 <- arrange(selected_bintang3, jumlah_kamar)
arranged_bintang3Slice Data
Setelah itu, saya melakukan pemotongan data dengan fungsi slice dimana saya ingin menampilkan data dari baris ke-1 sampai ke-10 saja dengan memberi perintah 1:10. Yang berarti 1-10.
bottom10_bintang3 <- slice(arranged_bintang3, 1:10)
bottom10_bintang3Sebagai tambahan, saya ingin memunculkan sisa data diluar dari 10 data baris yang sudah di potong tadi.
exclude_bottom10 <- setdiff(arranged_bintang3, bottom10_bintang3)
exclude_bottom10Visualize the Data 1
Pada tahap ini saya ingin melakukan visualisasi data yang sudah saya impor tadi.
data.hotel1 <- data.hotel %>%
count(golongan)
data.hotel1B <- filter(data.hotel1, golongan == "Bintang")
B1 <- filter(data.hotel1, golongan == "Bintang 1")
B2 <- filter(data.hotel1, golongan == "Bintang 2")
B3 <- filter(data.hotel1, golongan == "Bintang 3")
B4 <- filter(data.hotel1, golongan == "Bintang 4")
B5 <- filter(data.hotel1, golongan == "Bintang 5")
M <- filter(data.hotel1, golongan == "Melati")
M1 <- filter(data.hotel1, golongan == "Melati 1")
M2 <- filter(data.hotel1, golongan == "Melati 2")
M3 <- filter(data.hotel1, golongan == "Melati 3")
M4 <- filter(data.hotel1, golongan == "Melati 4")
Mot <- filter(data.hotel1, golongan == "Motel")
HW <- filter(data.hotel1, golongan == "Hunian Wisata")
H <- filter(data.hotel1, golongan == "Hotel")
data <- data.frame("golongan" = c('Bintang', 'Bintang 1', 'Bintang 2', 'Bintang 3','Bintang 4', 'Bintang 5', 'Melati','Melati 1','Melati 2','Melati 3','Melati 4','Hotel','Motel','Hunian Wisata'),
"n" = c(sum(B$n),sum(B1$n),sum(B2$n),sum(B3$n),sum(B4$n),sum(B5$n),sum(M$n),sum(M1$n),sum(M2$n),sum(M3$n),sum(M4$n),sum(Mot$n),sum(HW$n),sum(H$n)))
library(ggplot2) ## Warning: package 'ggplot2' was built under R version 4.1.2
ggplot(data,
aes(x = reorder(golongan,-n),
y = n)) +
geom_bar(stat = "identity",
fill = rainbow(14),
color = "black") +
geom_text(aes(label = n, vjust = -0.5))+
theme_minimal() +
labs(x = "Golongan",
y = "Jumlah",
title = "Banyak Golongan Hotel & Motel di DKI Jakarta") +
scale_y_continuous(limits = c(0, 100))+
theme(axis.text.x = element_text(angle = 45, vjust = 0.5))
Note : Grafik di atas menunjukkan jumlah banyaknya golongan hotel atau motel yang ada di seluruh DKI Jakarta. Golongan Bintang dan Melati 3 memiliki jumlah frekuensi yang sama yaitu sebanyak 89.
library(tidyverse)## Warning: package 'tidyverse' was built under R version 4.1.2
## -- Attaching packages --------------------------------------- tidyverse 1.3.1 --
## v tibble 3.1.6 v purrr 0.3.4
## v tidyr 1.1.4 v stringr 1.4.0
## v readr 2.1.1 v forcats 0.5.1
## Warning: package 'tibble' was built under R version 4.1.2
## Warning: package 'tidyr' was built under R version 4.1.2
## Warning: package 'readr' was built under R version 4.1.2
## Warning: package 'purrr' was built under R version 4.1.2
## Warning: package 'stringr' was built under R version 4.1.2
## Warning: package 'forcats' was built under R version 4.1.2
## -- Conflicts ------------------------------------------ tidyverse_conflicts() --
## x dplyr::filter() masks stats::filter()
## x dplyr::lag() masks stats::lag()
ggplot(bottom10_bintang3,
aes(x = fct_reorder(nama_usaha, jumlah_kamar),
y = jumlah_kamar)) +
geom_bar(stat = "identity",
fill = rainbow(10),
color = "black") +
geom_text(aes(nama_usaha, 1, label = jumlah_kamar, hjust = 0, vjust = 0.5, fontface = "bold"))+
theme_minimal() +
labs(x = "Nama Usaha",
y = "Jumlah Kamar",
title = "10 Terbawah Jumlah Kamar")+
coord_flip()
Note: Pada grafik ini menjelaskan 10 Nama Usaha yang memiliki jumlah kamar sedikit. Usaha Emporium Boutique Hotel memiliki kamar paling sedikit yaitu 29 kamar saja.
library(dplyr)
library(ggplot2)
library(scales) ## Warning: package 'scales' was built under R version 4.1.2
##
## Attaching package: 'scales'
## The following object is masked from 'package:purrr':
##
## discard
## The following object is masked from 'package:readr':
##
## col_factor
plotdata <- data.hotel %>%
group_by(wilayah, jenis) %>%
dplyr::summarize(n = n()) %>%
mutate(pct = n/sum(n),
persen = scales::percent(pct))## `summarise()` has grouped output by 'wilayah'. You can override using the `.groups` argument.
ggplot(plotdata,
aes(x = factor(wilayah),
y = pct,
fill = factor(jenis))) +
geom_bar(stat = "identity",
position = "fill") +
scale_y_continuous(breaks = seq(0, 1, .2),
label = percent)+
geom_text(aes(label = persen),
size = 3,
position = position_stack(vjust = 0.5), fontface = "bold") +
scale_fill_brewer(palette = "Set1") +
theme_minimal() +
labs(y = "",
fill = "Jenis",
x = "Wilayah",
title = "Presentase Jenis Hotel&Motel di DKI Jakarta") +
theme_minimal()+
theme(axis.text.x = element_text(angle = 45, vjust = 0.5))
Note: Grafik di atas menjelaskan presentase jenis-jenis hotel dan motel yang ada di seluruh DKI Jakarta. Dimana DKI Jakarta terbagi menjadi 5 bagian wilayah (Jak-Bar, Jak-Pus, Jak-Sel, Jak-Tim, Jak-Ut). Wilayah Jakarta Pusat memiliki presentase Hotel Bintang terbanyak.
Impor Data 2
library(tidyverse)
data.lang <- read_csv("C:/Users/hp/Documents/SEMESTER 2/PENGANTAR DATA SCIENCE/data_lang.csv")## Rows: 214 Columns: 6
## -- Column specification --------------------------------------------------------
## Delimiter: ","
## chr (2): category, language
## dbl (4): mother_tongue, most_at_home, most_at_work, lang_known
##
## i Use `spec()` to retrieve the full column specification for this data.
## i Specify the column types or set `show_col_types = FALSE` to quiet this message.
data.langCreate and organize subsets of tabular data 2
Filter Data
Non_Aboriginal_Lang <- filter(data.lang, category == "Non-Official & Non-Aboriginal languages")
Non_Aboriginal_LangSelect Data
selected_nonA_lang <- select(Non_Aboriginal_Lang, language, mother_tongue)
selected_nonA_langArrange Data
arranged_nonA_lang <- arrange(selected_nonA_lang, by = desc(mother_tongue))
arranged_nonA_langSlice Data
ten_nonA_lang <- slice(arranged_nonA_lang, 1:10)
ten_nonA_langVisualize the Data 2
ggplot(data.lang, aes(x = category)) +
geom_bar(fill = "mediumseagreen",
color = "black") +
theme_minimal() +
labs(x = "Category",
y = "Freq",
title = "Frekuensi Category Penggunaan Jenis Bahasa")