Algoritma & Struktur Data
~ UAS ~
| Kontak | : \(\downarrow\) |
| noviaalbl02@gmail.com | |
| https://www.instagram.com/novia_labola/ | |
| RPubs | https://rpubs.com/noviaanita/ |
Berikut ini saya lampirkan data perumahan di kota Melbourne Australia, dengan struktur data sebagai berikut:
Type: yang dibagi menjadi 3 bagian
• TipeA.csv
• TipeB.xlsx
• TipeC.rds
Dimana setiap tipe rumah (A,B,C) tersebut terdiri dari beberapa variabel sebagai berikut:
• Suburb: Suburb
• Rooms: Number of rooms
• Price: Price in dollars
• Method: Status of property sale -
S - property sold;
SP - property sold prior;
PI - property passed in;
PN - sold prior not disclosed;
SN - sold not disclosed;
VB - vendor bid;
W - withdrawn prior to auction;
SA - sold after auction;
SS - sold after auction price not disclosed.
• SellerG: Real Estate Agent
• Date: Date sold
• Distance: Distance from CBD
• Bedroom2: Number of Bedrooms
• Bathroom: Number of Bathrooms
• Car: Number of car spots
• Landsize: Land Size
• YearBuilt: Year the house was built
• Regionname: General Region (West, North West, North, North east …etc)
Tugas :
Soal 1
Gabungkan data tipe A,B, C kedalam satu dataframe sehingga membentuk struktur data (Type,Subur, Price, Method, SellerG, Date, Distance,Bedroom2, Bathroom, Car, Landsize, YearBuilt, Regionname)
Pertama saya memastikan direktori kerja dengan menggunakan fungsi getwd() dan untuk mengatur direktori kerja baru dengan menggunakan fungsi setwd().
print(getwd())## [1] "C:/Users/MASTER/Documents/TugasUASALGO"
getwd()## [1] "C:/Users/MASTER/Documents/TugasUASALGO"
setwd(getwd())Saya juga menggunakan packages readxl untuk membaca langsung filenya. Kemudian saya menggunakan fungsi rbind untuk mengabungkan 3 data yang berbeda dalam satu data frame.
# install.packages(c("readxl","writexl")) # install packages readxl and writexl
pacman::p_load(readxl, writexl) # install pacman# impor data
df1 <-read.csv("File1/TipeA.csv",sep = ",")
df2 <-read_excel("File1/TipeB.xlsx")
df3 <-readRDS("File1/TipeC.rds")
df1$type="A"
df2$type="B"
df3$type="C"
df4 <- rbind(df1,df2,df3)
df4Setelah mengabungkan data, saya menambahkan variabel type di dataset.
baru = data.frame("type" =df4$type,
"Subur" =df4$Suburb,
"Price"= df4$Price,
"Method" = df4$Method,
"SellerG" = df4$SellerG,
"Date" = df4$Date,
"Distance" = df4$Distance,
"Bedroom2" = df4$Bedroom2,
"Bathroom" = df4$Bathroom,
"Car" = df4$Car,
"Landsize" = df4$Landsize,
"YearBuilt" = df4$YearBuilt,
"Regionname" = df4$Regionname)
baruSoal 2
Rename setiap variabel diatas kedalam bahasa Indonesia.
Pada soal nomor 2 ini saya menggunakan fungsi names untuk mengubah nama variabel dari bahasa Inggris ke bahasa Indonesia. Setelah itu,masukan list nama variabel yang baru kemudian print data frame rename_1
rename_1<-baru
names(rename_1)<-c("Tipe",
"pinggiran kota",
"Harga",
"Metode",
"Penjual",
"Tanggal",
"Jarak",
"Kamar_tidur",
"Kamar.mandi",
"Mobil",
"Ukuran_tanah",
"Dibangun.tahun",
"Wilayah")
rename_1Soal 3
Rename kategori variabel “Regionname” kedalam bahasa Indonesia.
Pada soal nomor 3 ini saya menggunakan fungsi unique untuk mengevaluasi variabel unik pada kolom Wilayah
unique(rename_1$Wilayah)## [1] "Northern Metropolitan" "Western Metropolitan"
## [3] "Southern Metropolitan" "Eastern Metropolitan"
## [5] "South-Eastern Metropolitan" "Eastern Victoria"
## [7] "Northern Victoria" "Western Victoria"
## [9] NA
Setelah semua variabel unik diketahui, kemudian saya mengubah variabelnya dari bahasa Inggris menjadi bahasa Indonesia.
rename_1rename_1$Wilayah[rename_1$Wilayah=="Southern Metropolitan"] <- "Metropolitan Selatan"
rename_1$Wilayah[rename_1$Wilayah=="Northern Metropolitan"] <- "Metropolitan Utara"
rename_1$Wilayah[rename_1$Wilayah=="Western Metropolitan"] <- "Metropolitan Barat"
rename_1$Wilayah[rename_1$Wilayah=="Eastern Metropolitan"] <- "Metropolitan Timur"
rename_1$Wilayah[rename_1$Wilayah=="South-Eastern Metropolitan"] <- "Metropolitan Tenggara"
rename_1$Wilayah[rename_1$Wilayah=="Eastern Victoria"] <- "Victoria Timur"
rename_1$Wilayah[rename_1$Wilayah=="Western Victoria"] <- "Victoria Barat"
rename_1Soal 4
Lakukan pengecekan Missing Value dan pengendalian
Pada soal nomor 4 ini saya melakukan pengecekan missing value dengan menggunakan fungsi na.omit untuk menghilangkan data NA pada data frame rename_1. Setelah semua data bersih dari NA, saya memanggil data tersebut. Kemudian data bersih akan muncul.Data bersih tersebut saya beri nama nov_NA.
nov_NA = na.omit(rename_1)
nov_NAKemudian, saya menggunakan fungsi setdiff untuk menunjukkan variabel NA-nya saja. Atau saya ingin memunculkan data rename_1 tanpa data nov_NA.Data nov_NA merupakan data bersih yang tidak ada NA-nya. Data yang berisi NA saja saya beri nama via_NA
via.NA = setdiff(rename_1, nov_NA)
via.NAsummary(rename_1)## Tipe pinggiran kota Harga Metode
## Length:34857 Length:34857 Min. : 85000 Length:34857
## Class :character Class :character 1st Qu.: 635000 Class :character
## Mode :character Mode :character Median : 870000 Mode :character
## Mean : 1050173
## 3rd Qu.: 1295000
## Max. :11200000
## NA's :7610
## Penjual Tanggal Jarak Kamar_tidur
## Length:34857 Length:34857 Min. : 0.00 Min. : 0.000
## Class :character Class :character 1st Qu.: 6.40 1st Qu.: 2.000
## Mode :character Mode :character Median :10.30 Median : 3.000
## Mean :11.18 Mean : 3.085
## 3rd Qu.:14.00 3rd Qu.: 4.000
## Max. :48.10 Max. :30.000
## NA's :1 NA's :8217
## Kamar.mandi Mobil Ukuran_tanah Dibangun.tahun
## Min. : 0.000 Min. : 0.000 Min. : 0.0 Min. :1196
## 1st Qu.: 1.000 1st Qu.: 1.000 1st Qu.: 224.0 1st Qu.:1940
## Median : 2.000 Median : 2.000 Median : 521.0 Median :1970
## Mean : 1.625 Mean : 1.729 Mean : 593.6 Mean :1965
## 3rd Qu.: 2.000 3rd Qu.: 2.000 3rd Qu.: 670.0 3rd Qu.:2000
## Max. :12.000 Max. :26.000 Max. :433014.0 Max. :2106
## NA's :8226 NA's :8728 NA's :11810 NA's :19306
## Wilayah
## Length:34857
## Class :character
## Mode :character
##
##
##
##
Soal 5
Buatlah Visualisasi Data secara lengkap untuk mendapatkan informasi penting yang terkandung dalam Data_Perumahan_Melbourne.xlsx.
# Diagram Boxplot
library(ggplot2)
ggplot(nov_NA, aes(Tipe, Harga)) +
geom_boxplot(outlier.colour = "magenta") +
scale_x_discrete(labels = c('A','B','C')) +
scale_y_continuous(breaks=seq(0,10000000,1500000)) +
xlab("Tipe") +
ylab("Harga") +
ggtitle("Distribusi Harga Tipe Rumah") Berdasarkan diagram diatas dapat disimpulkan bahwa distribusi harga tipe rumah yang memiliki harga tertinggi adalah tipe A. Dibandingkan dengan tipe B dan C.
# Diagram Pai
library(scales)
library(dplyr)##
## 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
plotdata <- nov_NA %>%
count(Wilayah) %>%
arrange(desc(Wilayah)) %>%
mutate(prop = round(n*100/sum(n),1),
lab.ypos = cumsum(prop) - 0.5*prop)
ggplot(plotdata,
aes(x = "",
y = prop,
fill = Wilayah)) +
geom_bar(width = 1, stat = "identity", color = "white") +
coord_polar("y", start = 0) +
geom_text(aes(y = lab.ypos, label = prop), color = ("black")) +
scale_fill_brewer(palette="Paired", direction=-1) +
theme_void() +
labs(title = "Wilayah banyak penduduk ") Berdasarkan kesimpulan diagram diatas dapat disimpulkan, bahwa wilayah yang padat penduduk terdapat di Metropolitan Selatan dengan 31.9% penduduk.
# Diagram Histogram
ggplot(nov_NA, aes(x = Dibangun.tahun)) +
geom_histogram(fill = "Magenta",
color = "white", bins = 30) +
scale_y_continuous(breaks=seq(0,1700,1800))+
theme_minimal() +
labs(title = "Pembangunan Tahun",
x = "Tahun bangunan") Kesimpulan dari diagram diatas adalah pembangunan yang banyak dilakukan pada tahun sekitar 2000-an.
# Plot Sebaran Menyesuaikan Garis
library(ggplot2) # untuk visualisasi
ggplot(nov_NA,
aes(x = Ukuran_tanah,
y = Harga)) +
geom_point(color= "yellow") +
geom_smooth(method = "lm", color = "red")+
scale_y_continuous(label = scales::dollar,
limits = c(50000, 5000000)) +
scale_x_continuous(breaks = seq(0, 2500, 200),
limits=c(0, 2500)) +
theme_minimal() + # menggunakan tema minimal
labs(x = "Luas Bangunan",
y = "Harga",
title = "Luas Bangunan Vs. Harga",
subtitle = "Harga dan Luas")+
theme(axis.text.x = element_text(angle = 60, hjust = 1))## `geom_smooth()` using formula 'y ~ x'
## Warning: Removed 144 rows containing non-finite values (stat_smooth).
## Warning: Removed 144 rows containing missing values (geom_point).
Kesimpulannya adalah rumah yang memiliki luas kecil dan harga yang rendah banyak diminati oleh penduduk. Sedangkan rumah yang memiliki luas yang besar dengan harga yang tinggi jarang diminati oleh penduduk.
# Plot Sebaran Menyesuaikan Garis
library(ggplot2) # untuk visualisasi
ggplot(nov_NA,
aes(x = Ukuran_tanah,
y = Harga)) +
geom_point(color= "orange") +
geom_smooth(method = "lm",
formula = y ~ poly(x, 2),
color = "red")+
scale_y_continuous(label = scales::dollar,
limits = c(50000, 5000000)) +
scale_x_continuous(breaks = seq(0, 2500, 200),
limits=c(0, 2500)) +
theme_minimal() + # menggunakan tema minimal
labs(x = "Luas Bangunan",
y = "Harga",
title = "Luas Bangunan Vs. Harga",
subtitle = "Harga dan Luas")+
theme(axis.text.x = element_text(angle = 60, hjust = 1))## Warning: Removed 144 rows containing non-finite values (stat_smooth).
## Warning: Removed 144 rows containing missing values (geom_point).
# Diagram Batang
library(dplyr) # untuk manipulasi data
library(ggplot2) # untuk visualisasi
library(scales) # menentukan jeda atau label secara otomatis
# menghitung gaji rata-rata untuk setiap jabatan
plotdata <- nov_NA %>%
group_by(Wilayah) %>%
dplyr::summarize(mean_Harga = mean(Harga))
# plot gaji rata-rata dengan cara yang lebih menarik
mycols <- c("#CD534CFF", "#EFC000FF", "#2FDD92","#FFAB4C", "#116530", "#7267CB","#CD534CFF", "#EBE645")
ggplot(plotdata,
aes(x = factor(Wilayah,
labels = c("Selatan",
"Utara",
"Barat",
"Timur",
"Tenggara.Metropolitan",
"Utara.Victoria",
"Barat.Victoria",
"Timur.Victoria")),
y = mean_Harga)) +
geom_bar(stat = "identity",
fill = mycols) +
geom_text(aes(label = dollar(mean_Harga)),
vjust = -0.5) +
scale_y_continuous(breaks = seq(0, 40000000, 500000),
label = dollar) +
theme_minimal() + # menggunakan tema minimal
labs(title = "Rata-rata harga rumah di beberapa wilayah",
x = "",
y = "") +
theme(axis.text.x = element_text(angle = 45, vjust = 0.5)) Dari diagram diatas dapat disimpulkan bahwa rata-rata harga rumah di beberapa wilayah yang memiliki harga tertinggi adalah wilayah Utara dengan $1,449,759. Sedangkan harga yang rendah terdapat di wilayah Barat Victoria dengan harga $441,087.