Algoritma & Struktur Data
~ Ujian Tengah Semester ~
| Kontak | : \(\downarrow\) |
| diyasaryanugroho@gmail.com | |
| https://www.instagram.com/diasary_nm/ | |
| RPubs | https://rpubs.com/diyasarya/ |
Kasus 1
Asumsikan Anda telah mengumpulkan beberapa kumpulan data dari perusahaan ABC Property seperti yang dapat kita lihat pada tabel berikut:
Id <- (1:10000)
Marketing_Name <- rep(c("Angel","Sherly","Vanessa","Irene","Julian",
"Jeffry","Nikita","Kefas","Siana","Lala",
"Fallen","Ardifo","Kevin","Juen","Jerrel",
"Imelda","Widi","Theodora","Elvani","Jonathan",
"Sofia","Abraham","Siti","Niko","Sefli",
"Bene", "Diana", "Pupe", "Andi", "Tatha",
"Endri", "Monika", "Hans", "Debora","Hanifa",
"James", "Jihan", "Friska","Ardiwan", "Bakti",
"Anthon","Amry", "Wiwik", "Bastian", "Budi",
"Leo","Simon","Matius","Arry", "Eliando"), 200)
Work_Exp <- rep(c(1.3,2.4,2.5,3.6,3.7,4.7,5.7,6.7,7.7,73,
5.3,5.3,10,9.3,3.3,3.3,3.4,3.4,3.5,5.6,
3.5,4.6,4.6,5.7,6.2,4.4,6.4,6.4,3.5,7.5,
4.6,3.7,4.7,4.3,5.2,6.3,7.4,2.4,3.4,8.2,
6.4,7.2,1.5,7.5,10,4.5,6.5,7.2,7.1,7.6),200)
City <- sample(c("Jakarta","Bogor","Depok","Tangerang","Bekasi"),10000, replace = T)
Cluster <- sample(c("Victoria","Palmyra","Winona","Tiara", "Narada",
"Peronia","Lavesh","Alindra","Sweethome", "Asera",
"Teradamai","Albasia", "Adara","Neon","Arana",
"Asoka", "Primadona", "Mutiara","Permata","Alamanda" ), 10000, replace=T)
Price <- sample(c(7000:15000),10000, replace = T)
Date_Sales <- sample(seq(as.Date("2018/01/01"), by = "day", length.out = 1000),10000, replace = T)
Advertisement <- sample(c(1:20), 10000, replace = T)
Data <- data.frame(Id,
Marketing_Name,
Work_Exp,
City,
Cluster,
Price,
Date_Sales,
Advertisement)
library(DT)
datatable(Data)write.csv(Data,"c:\\Rstudio\\Data.csv", row.names = FALSE)Soal 1
Kategorikan variabel Harga pada dataset di atas menjadi tiga kelompok sebagai berikut:
- \(\text{High} > 12000\)
- \(10000 \le \text{Medium} \le 12000\)
- \(\text{Low} < 10000\)
Tetapkan ke dalam variabel baru yang disebut Kelas dengan menggunakan fungsi kontrol If, else if, dan else,
x <- Data$Price
Data$Kelas <- ifelse(x > 12000, "High",
ifelse(x >= 10000 & x <= 12000, "Medium",
ifelse(x < 10000, "Low", "-")))
library(DT)
datatable(Data)Soal 2
Kategorikan variabel Harga pada dataset di atas menjadi enam kelompok sebagai berikut:
- Booking_fee nya 5 % jika \(\text{Price} < 8000\)
- Booking_fee nya 6 % jika \(8000 \le \text{Price} < 9000\)
- Booking_fee nya 7 % jika \(9000 \le \text{Price} < 10000\)
- Booking_fee nya 8 % jika \(10000 \le \text{Price} < 11000\)
- Booking_fee nya 9 % jika \(11000 \le \text{Price} < 13000\)
- Booking_fee nya 10 % jika \(13000 \le \text{Price} \le 15000\)
Tetapkan ke dalam variabel baru yang disebut Booking_fee dengan menggunakan fungsi kontrol If, else if, dan else,
x <- Data$Price
Data$Booking_fee <- ifelse(x < 8000, 0.05*x,
ifelse(x >= 8000 & x < 9000, 0.06*x,
ifelse(x >= 9000 & x < 10000, 0.07*x,
ifelse(x >= 10000 & x < 11000, 0.08*x,
ifelse(x >= 11000 & x < 13000, 0.09*x,
ifelse(x >= 13000 & x < 15000, 0.1*x, 0))))))
library(DT)
datatable(Data)Soal 3
Menurut kumpulan data akhir yang telah Anda buat pada soal no 2, saya berasumsi bahwa Anda telah bekerja sebagai pemasaran di perusahaan ABC Property, bagaimana Anda dapat mengumpulkan semua informasi tentang penjualan Anda dengan menggunakan pernyataan for,
x = "Budi"
Data$info_saya <- for (i in x) {
w = subset(Data, Marketing_Name==i) %>% head(5)
}
library(DT)
datatable(w)Soal 4
Jika Anda akan mendapatkan bonus 2% dari Booking fee per unit sebagai pemasaran dan juga mendapatkan bonus tambahan 1% jika Anda telah bekerja di perusahaan ini selama lebih dari 3 tahun, Silakan hitung total bonus dengan menggunakan pernyataan if, for, dan break,
x <- subset(Data, Marketing_Name=="Budi")
x$Booking_fee -> a
x$Work_Exp -> b
z <- ifelse(b < 3, (a*0.02), (a*0.02) + (a*0.01))
x$Bonus = z
library(DT)
datatable(x)Soal 5
Pada bagian ini, Anda diharapkan dapa membuat fungsi yang dapat menjawab setiap penyataan dibawah ini dengan melibatkan setiap fungsi kontrol yang dipelajari pada pertemuan 7,
- Siapa nama marketing pemasaran terbaik?
- Kota dan Cluster mana yang paling menguntungkan?
- Hitung total biaya iklan Anda, jika Anda harus membayarnya $4 setiap kali iklan,
- Hitung rata-rata biaya iklan untuk setiap marketing di Perusahaan tersebut,
- Hitung Total Pendapatan (dalam Bulanan)
# Siapa nama marketing pemasaran terbaik?
x <- Data$Marketing_Name
Jonathan = subset(Data, (Marketing_Name == "Jonathan"))
Theodora = subset(Data, (Marketing_Name == "Theodora"))
Angel = subset(Data, (Marketing_Name == "Angel"))
Sherly = subset(Data, (Marketing_Name == "Sherly"))
Vanessa = subset(Data, (Marketing_Name == "Vanessa"))
Irene = subset(Data, (Marketing_Name == "Irene"))
Julian = subset(Data, (Marketing_Name == "Julian"))
Jeffry = subset(Data, (Marketing_Name == "Jeffry"))
Nikita = subset(Data, (Marketing_Name == "Nikita"))
Kefas = subset(Data, (Marketing_Name == "Kefas"))
Siana = subset(Data, (Marketing_Name =="Siana"))
Lala = subset(Data, (Marketing_Name == "Lala"))
Fallen = subset(Data, (Marketing_Name == "Fallen"))
Ardifo = subset(Data, (Marketing_Name == "Ardifo"))
Kevin = subset(Data, (Marketing_Name == "Kevin"))
Juen = subset(Data, (Marketing_Name == "Juen"))
Jerrel = subset(Data, (Marketing_Name =="Jerrel"))
Imelda = subset(Data, (Marketing_Name == "Imelda"))
Widi = subset(Data, (Marketing_Name == "Widi"))
Theodor = subset(Data, (Marketing_Name == "Theodor"))
Elvani = subset(Data, (Marketing_Name == "Elvani"))
Jonathan = subset(Data, (Marketing_Name == "Jonathan"))
Sofia = subset(Data, (Marketing_Name == "Sofia"))
Abraham = subset(Data, (Marketing_Name == "Abraham"))
Siti = subset(Data, (Marketing_Name == "Siti"))
Niko = subset(Data, (Marketing_Name == "Niko"))
Sefli = subset(Data, (Marketing_Name == "Sefli"))
Bene = subset(Data, (Marketing_Name == "Bene"))
Diana = subset(Data, (Marketing_Name == "Diana"))
Pupe = subset(Data, (Marketing_Name == "Pupe"))
Andi = subset(Data, (Marketing_Name == "Andi"))
Tatha = subset(Data, (Marketing_Name == "Tatha"))
Endri = subset(Data, (Marketing_Name == "Endri"))
Monika = subset(Data, (Marketing_Name == "Monika"))
Hans = subset(Data, (Marketing_Name == "Hans"))
Debora = subset(Data, (Marketing_Name == "Debora"))
Hanifa = subset(Data, (Marketing_Name == "Hanifa"))
James = subset(Data, (Marketing_Name == "James"))
Jihan = subset(Data, (Marketing_Name == "Jihan"))
Friska = subset(Data, (Marketing_Name == "Friska"))
Ardiwan = subset(Data, (Marketing_Name == "Ardiwan"))
Bakti = subset(Data, (Marketing_Name == "Bakti"))
Anthon = subset(Data, (Marketing_Name == "Anthon"))
Amry = subset(Data, (Marketing_Name == "Amry"))
Bastian = subset(Data, (Marketing_Name == "Bastian"))
Wiwik = subset(Data, (Marketing_Name =="Wiwik"))
Budi= subset(Data, (Marketing_Name == "Budi"))
Leo = subset(Data, (Marketing_Name == "Leo"))
Simon = subset(Data, (Marketing_Name == "Simon"))
Matius = subset(Data, (Marketing_Name =="Matius"))
Arry = subset(Data, (Marketing_Name =="Arry"))
Eliando = subset(Data, (Marketing_Name == "Eliando"))
y = c(sum(Angel$Booking_fee), sum(Sherly$Booking_fee), sum(Vanessa$Booking_fee), sum(Irene$Booking_fee), sum(Julian$Booking_fee), sum(Jeffry$Booking_fee), sum(Nikita$Booking_fee), sum (Kefas$Booking_fee), sum(Siana$Booking_fee), sum(Lala$Booking_fee), sum(Fallen$Booking_fee), sum(Ardifo$Booking_fee), sum(Kevin$Booking_fee), sum(Juen$Booking_fee), sum(Jerrel$Booking_fee), sum (Imelda $Booking_fee), sum(Widi$Booking_fee), sum(Theodora$Booking_fee), sum (Elvani$Booking_fee), sum(Jonathan$Booking_fee), sum(Sofia$Booking_fee), sum(Abraham$Booking_fee), sum(Siti$Booking_fee), sum (Niko$Booking_fee), sum(Sefli$Booking_fee), sum(Bene$Booking_fee), sum(Diana$Booking_fee), sum(Pupe$Booking_fee), sum(Andi$Booking_fee), sum(Tatha$Booking_fee), sum(Endri$Booking_fee) , sum(Monika$Booking_fee), sum(Hans$Booking_fee), sum(Debora$Booking_fee), sum(Hanifa$Booking_fee), sum (James$Booking_fee), sum(Jihan$Booking_fee), sum(Friska$Booking_fee), sum(Ardiwan$Booking_fee), sum(Bakti$Booking_fee), sum(Anthon$Booking_fee), sum(Amry$Booking_fee), sum(Wiwik$Booking_fee), sum(Bastian$Booking_fee), sum(Budi$Booking_fee), sum (Leo$Booking_fee), sum(Simon$Booking_fee) , sum(Matius$Booking_fee), sum (Arry$Booking_fee), sum(Eliando$Booking_fee))
z = data.frame(x, y)
p = which.max(z$y)
q = z[p, ]
library(DT)
datatable(q)# Kota dan Cluster mana yang paling menguntungkan?
x <- Data$City
Jakarta = subset(Data, City == "Jakarta")
Bogor = subset(Data, City == "Bogor")
Depok = subset(Data, City == "Depok")
Tangerang = subset(Data, City == "Tangerang")
Bekasi = subset(Data, City == "Bekasi")
h = c(sum(Jakarta$Price), sum(Bogor$Price), sum(Depok$Price), sum(Tangerang$Price), sum(Bekasi$Price))
i = data.frame(x, h)
j = which.max(i$h)
k = i[j, ]
library(DT)
datatable(k)y <- Data$Cluster
Victoria = subset(Data, Cluster == "Victoria")
Palmyra = subset(Data, Cluster == "Palmyra")
Winona = subset(Data, Cluster == "Winona")
Tiara = subset(Data, Cluster == "Tiara")
Narada = subset(Data, Cluster == "Narada")
Peronia = subset(Data, Cluster == "Peronia")
Lavesh = subset(Data, Cluster == "Lavesh")
Alindra = subset(Data, Cluster == "Alindra")
Sweethome = subset(Data, Cluster == "Sweethome")
Asera = subset(Data, Cluster == "Asera")
Teradamai = subset(Data, Cluster == "Teradamai")
Albasia = subset(Data, Cluster == "Albasia")
Adara = subset(Data, Cluster == "Adara")
Neon = subset(Data, Cluster == "Neon")
Arana = subset(Data, Cluster == "Arana")
Asoka = subset(Data, Cluster == "Asoka")
Primadona = subset(Data, Cluster == "Primadona")
Mutiara = subset(Data, Cluster == "Mutiara")
Permata = subset(Data, Cluster == "Permata")
Alamanda = subset(Data, Cluster == "Alamanda")
s = c(sum(Victoria$Price), sum(Palmyra$Price), sum(Winona$Price), sum(Tiara$Price), sum(Narada$Price), sum(Peronia$Price), sum(Lavesh$Price), sum(Alindra$Price), sum(Sweethome$Price), sum(Asera$Price), sum(Teradamai$Price), sum(Albasia$Price), sum(Adara$Price), sum(Neon$Price), sum(Arana$Price), sum(Asoka$Price), sum(Primadona$Price), sum(Mutiara$Price), sum(Permata$Price), sum(Alamanda$Price))
t = data.frame(y, s)
u = which.max(t$s)
v = t[u, ]
library(DT)
datatable(v)# Hitung total biaya iklan Anda, jika Anda harus membayarnya $4 setiap kali iklan
x <- subset(Data, Marketing_Name=="Budi")
x$Advertisement -> c
x$Biaya_Iklan <- ifelse(c >= 1, c*4, 0)
library(DT)
datatable(x)Total_Biaya_Iklan = sum(x$Biaya_Iklan)
Total_Biaya_Iklan## [1] 8472
# Hitung rata-rata biaya iklan untuk setiap marketing di Perusahaan tersebut
Data$Biaya_Iklan <- ifelse(Data$Advertisement >= 1, Data$Advertisement*4, 0)
x = c("Angel","Sherly", "Vanessa", "Irene","Julian", "Jeffry", "Nikita", "Kefas", "Siana", "Lala", "Fallen", "Ardifo", "Kevin", "Juen", "Jerrel", "Imelda", "Widi", "Theodora", "Elvani","Jonathan", "Sofia", "Abraham", "Siti", "Niko", "Sefli", "Bene", "Diana", "Pupe", "Andi", "Tatha", "Endri", "Monika", "Hans", "Debora","Hanifa", "James", "Jihan", "Friska", "Ardiwan", "Bakti", "Anthon","Amry", "Wiwik", "Bastian", "Budi", "Leo","Simon", "Matius", "Arry", "Eliando")
for (i in x) {
y <- subset(Data, Marketing_Name == i)
z <- sum(y$Biaya_Iklan)
print(cat(sum(z)/length(y$Id), cat(i, "Rerata Advertisement Cost : ")))
}## Angel Rerata Advertisement Cost : 38.34NULL
## Sherly Rerata Advertisement Cost : 42.4NULL
## Vanessa Rerata Advertisement Cost : 42.94NULL
## Irene Rerata Advertisement Cost : 42.36NULL
## Julian Rerata Advertisement Cost : 44.52NULL
## Jeffry Rerata Advertisement Cost : 41.24NULL
## Nikita Rerata Advertisement Cost : 40.38NULL
## Kefas Rerata Advertisement Cost : 40.9NULL
## Siana Rerata Advertisement Cost : 42.14NULL
## Lala Rerata Advertisement Cost : 41.42NULL
## Fallen Rerata Advertisement Cost : 44.02NULL
## Ardifo Rerata Advertisement Cost : 43.06NULL
## Kevin Rerata Advertisement Cost : 40.58NULL
## Juen Rerata Advertisement Cost : 44.04NULL
## Jerrel Rerata Advertisement Cost : 41.16NULL
## Imelda Rerata Advertisement Cost : 43.8NULL
## Widi Rerata Advertisement Cost : 43.9NULL
## Theodora Rerata Advertisement Cost : 39.84NULL
## Elvani Rerata Advertisement Cost : 44.52NULL
## Jonathan Rerata Advertisement Cost : 44.14NULL
## Sofia Rerata Advertisement Cost : 42.12NULL
## Abraham Rerata Advertisement Cost : 43.68NULL
## Siti Rerata Advertisement Cost : 43.02NULL
## Niko Rerata Advertisement Cost : 42.88NULL
## Sefli Rerata Advertisement Cost : 40.62NULL
## Bene Rerata Advertisement Cost : 44.64NULL
## Diana Rerata Advertisement Cost : 43.88NULL
## Pupe Rerata Advertisement Cost : 40.48NULL
## Andi Rerata Advertisement Cost : 41.5NULL
## Tatha Rerata Advertisement Cost : 43.5NULL
## Endri Rerata Advertisement Cost : 43.3NULL
## Monika Rerata Advertisement Cost : 41.78NULL
## Hans Rerata Advertisement Cost : 42.68NULL
## Debora Rerata Advertisement Cost : 42.44NULL
## Hanifa Rerata Advertisement Cost : 43NULL
## James Rerata Advertisement Cost : 42.6NULL
## Jihan Rerata Advertisement Cost : 41.8NULL
## Friska Rerata Advertisement Cost : 43.86NULL
## Ardiwan Rerata Advertisement Cost : 40.72NULL
## Bakti Rerata Advertisement Cost : 43.08NULL
## Anthon Rerata Advertisement Cost : 38.26NULL
## Amry Rerata Advertisement Cost : 40.44NULL
## Wiwik Rerata Advertisement Cost : 45.42NULL
## Bastian Rerata Advertisement Cost : 42.22NULL
## Budi Rerata Advertisement Cost : 42.36NULL
## Leo Rerata Advertisement Cost : 45.82NULL
## Simon Rerata Advertisement Cost : 45.12NULL
## Matius Rerata Advertisement Cost : 42.5NULL
## Arry Rerata Advertisement Cost : 41.98NULL
## Eliando Rerata Advertisement Cost : 41.06NULL
# Hitung Total Pendapatan (dalam Bulanan)
Data$Price -> x
Data$Advertisement -> y
for (i in Data) {
z = sum(x) - (sum(y)*4)
}
z## [1] 109547314
Kasus 2
Misalkan Anda memiliki proyek riset pasar untuk mempertahankan beberapa pelanggan potensial di perusahaan Anda, Mari kita asumsikan Anda bekerja di perusahaan asuransi ABC, Untuk melakukannya, Anda ingin mengumpulkan kumpulan data berikut:
- Marital_Status : menetapkan status perkawinan acak (“Ya”, “Tidak”)
- Address : berikan alamat acak (JABODETABEK)
- Work_Location : menetapkan lokasi kerja secara acak (JABODETABEK)
- Age : menetapkan urutan angka acak (dari 19 hingga 60)
- Academic : menetapkan tingkat akademik acak (“J,School”, “H,School”, “Sarjana”, “Magister”, “Phd”)
- Job : 10 pekerjaan acak untuk setiap tingkat akademik
- Grade : 5 nilai acak untuk setiap Pekerjaan
- Income : tetapkan pendapatan yang mungkin untuk setiap Pekerjaan
- Spending : tetapkan kemungkinan pengeluaran untuk setiap Pekerjaan
- Number_of_children: menetapkan nomor acak di antara 0 dan 10 (sesuai dengan status perkawinan)
- Private_vehicle : menetapkan kemungkinan kendaraan pribadi untuk setiap orang (“Mobil”, “sepeda motor”, “Umum”)
- Home : “Sewa”, “Milik”, “Kredit”
Soal 1
Tolong berikan saya kumpulan data tentang informasi 50000 pelanggan yang mengacu pada setiap variabel di atas!
Marital_Status <- sample(c("Yes", "No"), 50000, replace=T)
Address <- sample(c("Jakarta", "Bogor", "Depok", "Tangerang", "Bekasi"), 50000, replace=T)
Work_Location <- rep(c("Jakarta", "Bogor", "Depok", "Tangerang", "Bekasi"), 10000, replace=T)
Age <- sample(c(19:60), 50000, replace=T)
Academic <- sample(c("J.School", "H.School", "Sarjana", "Magister", "Phd"), 50000, replace=T)
Job <- ifelse(Academic == "J.School", sample(c("Admin", "Sales", "Helper Production")),
ifelse(Academic == "H.School", "Production Control",
ifelse(Academic == "Sarjana", sample(c("Market Analyst", "Data Analyst")),
ifelse(Academic == "Magister", sample(c("HRD", "IT")),
ifelse(Academic == "Phd", sample(c("Manager Marketing", "Manager")), 0)))))
Grade <- sample(c(1:5), 50000, replace=T)
Income <- ifelse(Job == "Admin", 3200000,
ifelse(Job == "Sales", 4000000,
ifelse(Job == "Helper Production", 4200000,
ifelse(Job == "Production Control", 4500000,
ifelse(Job == "Market Analyst", 5000000,
ifelse(Job == "Data Analyst", 5500000,
ifelse(Job == "HRD", 6200000,
ifelse(Job == "Manager Marketing", 7000000,
ifelse(Job == "Manager", 7500000,
ifelse(Job == "IT", 8000000, 0))))))))))
Spending <- sample(c(50000:500000), 50000, replace=T)
Number_of_children <- ifelse(Marital_Status == "Yes", sample(c(0:10)), "-")
Private_vehicle <- sample(c("Mobil", "Sepeda", "Motor", "Umum"), 50000, replace=T)
Home <- sample(c("Sewa", "Milik", "Kredit"), 50000, replace=T)
Data_Pelanggan <- data.frame(Marital_Status,
Address,
Work_Location,
Age,
Academic,
Job,
Grade,
Income,
Spending,
Number_of_children,
Private_vehicle,
Home)
library(DT)
datatable(Data_Pelanggan)Soal 2
Ringkasan Statistik penting seperti apa yang bisa Anda dapatkan dari kumpulan data Anda?
summary(Data_Pelanggan$Income)## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 3200000 4500000 5500000 5578248 7000000 8000000
summary(Data_Pelanggan$Spending)## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 50003 163653 275311 275659 388299 499991
Soal 3
Menurut perhitungan dan analisis Anda, pelanggan mana yang potensial untuk Anda pertahankan?
Data_Pelanggan$Pendapatan = Data_Pelanggan$Income - Data_Pelanggan$Spending
x <- subset(Data_Pelanggan, Pendapatan >= 6500000)
library(DT)
datatable(x)