Dokumen ini menyajikan analisis statistik deskriptif terhadap data rumah makan, restoran, dan kafe di Kota Bandung. Analisis berfokus pada dua variabel numerik, yaitu PELAYANAN dan MAKANAN, berdasarkan data yang dibaca dari file Excel.
Jalankan install.packages("readxl") satu kali jika paket
readxl belum terpasang. Setelah itu, paket dapat dipanggil
menggunakan library(readxl).
library(readxl)
# Pastikan file Excel berada di folder project yang sama dengan file Rmd.
nama_file <- "Data Rumah Makan Restoran dan Cafe di Kota Bandung.xlsx"
if (!file.exists(nama_file)) {
stop(
paste0(
"File Excel tidak ditemukan: ", nama_file,
". Unggah file Excel ke folder project Posit Cloud yang sama dengan file Rmd."
)
)
}
df <- read_excel(nama_file, skip = 1)
# Periksa apakah kolom yang diperlukan tersedia.
kolom_wajib <- c("PELAYANAN", "MAKANAN")
kolom_hilang <- setdiff(kolom_wajib, names(df))
if (length(kolom_hilang) > 0) {
stop(
paste(
"Kolom berikut tidak ditemukan:",
paste(kolom_hilang, collapse = ", "),
". Periksa nama kolom di file Excel dan nilai skip."
)
)
}
knitr::kable(
df,
caption = "Dataset Rumah Makan, Restoran, dan Cafe"
)
| NAMA PERUSAHAAN | ALAMAT | KET | ID | PELAYANAN | MAKANAN |
|---|---|---|---|---|---|
| ABUBA STEAK | Jl. Prabudimuntur No. 12 | - | 1 | 58 | 7 |
| ARDEN CAFÉ | Jl. Sukajadi No. 228 | - | 2 | 54 | 1 |
| ATMOSPHERE | Jl. Lengkong Besar No. 97 | - | 3 | 98 | 2 |
| B.M.C. | Jl. Aceh No. 30 | - | 4 | 52 | 4 |
| BANDUNG SUKI | Jl. Braga No. 70 | - | 5 | 11 | 4 |
| BANDUNG SUKI / PT. DWIMITRA | Jl. Braga no. 70 | - | 6 | 59 | 10 |
| BAR & GRILL ROSESS RESTOURANT | Jl. Burangrang No. 39 | - | 7 | 61 | 8 |
| BEE HOUSE RESTO AND CAFÉ | Jl. Ters. Jakarta No. 2 Gedung Lucky Squere Mall | - | 8 | 30 | 10 |
| BELLAIR CAFÉ AND LOUNGE | Jl. Pasirkaliki | - | 9 | 45 | 1 |
| BELLAIT CAFÉ/TIME SQUARE | Jl. Pasirkaliki No. 25-27 | - | 10 | 36 | 9 |
| BLEND CAFÉ | Jl. Lombok No. 43 | - | 11 | 10 | 5 |
| BP. SANGKURIANG/CONCORDIA | Jl. Kiputih No. 12 | - | 12 | 38 | 7 |
| BRAGA HUIS | Jl. Braga No. 47 | - | 13 | 80 | 3 |
| BRAGA AVENUE | Jl. Braga No. 14 | - | 14 | 31 | 8 |
| BRAGA PERMAI | Jl. Braga No. 58 | - | 15 | 78 | 5 |
| BUTTONS | Jl. Pelajar Pejuang No. 72 | - | 16 | 82 | 6 |
| C F C. | Jl. Kepatihan No. 11-17 | - | 17 | 70 | 3 |
| C F C. | Jl. Sumber Sari Indah T1 + T2 | - | 18 | 3 | 9 |
| C F C. | Jl. Terusan Jakarta No. 53 | - | 19 | 42 | 3 |
| C F C. | Jl. Kepatihan No. 18 | - | 20 | 49 | 10 |
| C.F.C. | Jl. Jenderal Gatot Subroto No. 289 | - | 21 | 48 | 2 |
| C.F.C. | Jl. Raya Ujung Berung No. 209 | - | 22 | 79 | 9 |
| CAFE DE CASA | Jl. Lodaya No. 119 | - | 23 | 18 | 4 |
| CAFE PANDAWA ABADI PERKASA | Jl. Aceh No. 44 | - | 24 | 100 | 9 |
| CAFÉ LOVEBIRD | Jl. A. Yani No. 134-136 | - | 25 | 61 | 10 |
| CAFÉ BALI | Jl. R.E. Martadinata No. 815 | - | 26 | 4 | 2 |
| CAFÉ BARAYA | Jl. Gandapura No. 56-58 | - | 27 | 59 | 8 |
| CAFÉ HALAMAN | Jl. Taman Sari No. 92 | - | 28 | 44 | 3 |
| CAFÉ HALAMAN | Jl. Sukajadi No. 137-139 | - | 29 | 11 | 8 |
| CAFÉ PASAR CISANGKUY | Jl. Cusangkuy No. 6 | - | 30 | 7 | 6 |
| CAFÉ PISA | Jl. Cihampelas No. 160 | - | 31 | 74 | 9 |
| CHILLI PADI | Jl. Cihampelas No. 121-C | - | 32 | 42 | 3 |
| CITRA SARI | Jl. Soka No. 3 | - | 33 | 33 | 8 |
| CLICK ON | Jl. Cisangkuy No. 64 | - | 34 | 93 | 4 |
| COCA SUKI | Jl. Ir. H. Juanda No. 173 | - | 35 | 4 | 1 |
| CV HAN KOOK GWAN | Jl. Karang Sari No. 21 | - | 36 | 32 | 6 |
| CV. 9 SQUARE | Jl. Sulanjana No. 9 | - | 37 | 31 | 4 |
| CV. 9 SQUARE | Jl. Sulanjana No. 9 | - | 38 | 10 | 1 |
| CV. ADI AVAMA (TREND) | Jl. Pahlawan No. 89 | - | 39 | 52 | 7 |
| CV. BINTANG KULINA JAYA/ RESTO REUNION | Jl. Dr. Setiabudhi No. 45 | - | 40 | 7 | 6 |
| CV. BINTANG MEGA SEJATI | Jl. Merdeka No. 2 | - | 41 | 33 | 2 |
| CV. BOGA MANDIRI/ GAMBRINUS | Jl. Prof.Drg.Suria Somantri No. 59 | - | 42 | 94 | 10 |
| CV. CIPTA PANCA UTAMA | Jl. Pasteur No. 11 a | - | 43 | 34 | 3 |
| CV. DUA SEKAWAN ABADI/TOMODACHI | Jl. Aceh No. 66 | - | 44 | 63 | 2 |
| CV. DWI MANUNGGAL/CHINOOK | Jl. R. E. Martadinata No. 191 | - | 45 | 3 | 8 |
| CV. DWI MITRA BARAGA/BARAGA | Jl. Braga No. 45 | - | 46 | 38 | 1 |
| CV. FORTUNA MEGA ABADI | Jl. Karang Sari No. 14 | - | 47 | 21 | 3 |
| CV. Fresnan Jaya Abadi/TAN YANG SUKI | Ruko Paskal HyperSquare No. A/18 | - | 48 | 64 | 4 |
| CV. GASTRO PRIMA/ GLOSIS | Jl. Hegarmanah No. 6 | - | 49 | 19 | 1 |
| CV. GASTRO PRIMA/ GLOSSIS | Jl. Cihampelas No. 160 | - | 50 | 42 | 5 |
| CV. HAN COOK GWAN | Jl. Karangsari No, 21 | - | 51 | 48 | 10 |
| CV. HERMANDER PRIMA | Jl. Karangsari No, 23 | - | 52 | 94 | 3 |
| CV. HIDUP JAYA SELARAS/ PLATE FOR ME | Jl. R.E. Martadinata No. 172 | - | 53 | 21 | 6 |
| CV. KARYA PEMBANGUNAN UTAMA | Jl. Purnawarman | - | 54 | 64 | 10 |
| CV. MAKMUR BERDAYA/MILESTONES) | Ir. H. Juanda No. 145 | - | 55 | 50 | 7 |
| CV. MIKAWA | Jl. Sukaraja II No. 32 | - | 56 | 49 | 3 |
| CV. MITRA MANDIRI ABADI | Jl. Hegarmanah No. 2 | - | 57 | 24 | 3 |
| CV. NUSA PRIMA PANGAN | Jl. Pajajaran (Husein Sastranegara) | - | 58 | 31 | 1 |
| CV. PIRANTI RASA INDONESIA | Jl. Pelajar Pejuang 45 No. 91 | - | 59 | 28 | 4 |
| CV. RAJAWALI EMAS/ SUMERAGI | Komp. Setrasari Mall B.3 No. 15 | - | 60 | 79 | 6 |
| CV. RUMAH KEBOEN/FAMILY RESTO | Jl. RE. Martadinata No. 156 | - | 61 | 42 | 4 |
| CV. SINAR MULIA SEJAHTERA | Jl. Karapitan No. 60 | - | 62 | 31 | 7 |
| CV. SINAR MULYA SEJAHTERA | Jl. Karapitan No. 60 | - | 63 | 78 | 7 |
| CV. SUMBER SARANA INVESTAMA | Jl. Dr. Setiabudhi No. 41-f | - | 64 | 35 | 2 |
| CV. UNITY INDO SUKSES | Jl. Ir. H. Juanda No. 177 | - | 65 | 3 | 8 |
| CV. VANDEVENTER | Jl. Van de venter No. 10 | - | 66 | 4 | 9 |
| D KOTA CAFÉ & LOUNGE | Jl. Jend. A. Yani No. 134 136 | - | 67 | 27 | 4 |
| D’LUMBOENK | Jl. Ciumbuleuit No. 42 | - | 68 | 59 | 5 |
| DAGO 254 | Jl. Ir. H. Juanda No. 254 | - | 69 | 86 | 10 |
| DUCK KING | Jl. Sukajadi No. 137 | - | 70 | 78 | 8 |
| DPALM | Jl. Lombok No. 45 | - | 71 | 39 | 3 |
| ENTRO | Jl. Braga No. 129 | - | 72 | 26 | 6 |
| EXELLENT SEVEN DEWATA SKY | Jl. Dr. Ehrlich No. 7 | - | 73 | 22 | 10 |
| FABRIK CAFÉ | Jl. R.E Martadinata No. 107 | - | 74 | 54 | 4 |
| FORUM | Jl. Sukajadi No. 166 | - | 75 | 61 | 1 |
| FRIENDS RESTORAN | Jl. Cihampelas No. 160 | - | 76 | 45 | 5 |
| GADING | Jl. Sukajadi No. 228A | - | 77 | 11 | 10 |
| GARASI RESTO | Jl. Braga No. 94 | - | 78 | 20 | 1 |
| GELATO BAR | Jl. Sukajadi No. 137-139 | - | 79 | 87 | 9 |
| GENERAL CO | Jl. Kebonjati (Hyper square) | - | 80 | 39 | 10 |
| GIGLE BOX | Jl. Karangsari No. 1 A | - | 81 | 4 | 10 |
| GOKANA TEPPAN | Jl. Sukajadi No. 225 | - | 82 | 13 | 4 |
| GOKANA TEPPAN | Jl. Pelajar Pejuang 45 No. 119 | - | 83 | 69 | 8 |
| GOKANA TEPPAN | Jl. Cihampelas No. 160 Ciwalk | - | 84 | 11 | 2 |
| GOKANA TEPPAN | Jl. Kepatihan No. 11-17 Lt.IV Bdg | - | 85 | 18 | 4 |
| GOLDEN MONKEY | Jl. Ir. H. Juanda No. 163 | - | 86 | 30 | 5 |
| GOLDEN MONKEY | Jl. Ir. H. Juanda No. 163 | - | 87 | 56 | 4 |
| GOOD SUKI RESTORANT | Jl. Braga No. 39 | - | 88 | 18 | 9 |
| GOSSIP | Jl. Ir. H. Juanda no. 111 | - | 89 | 48 | 2 |
| GRAND EASTERN | Jl. Pasirkaliki No. 18 | - | 90 | 10 | 1 |
| GRANDIA | Jl. Cihampelas No. 90-92 | - | 91 | 98 | 3 |
| GRAPPA PIZZA | Jl. Peta No. 241 Gedung City Link | - | 92 | 83 | 3 |
| GREEN CAFÉ | Jl. Diponegoro No.26 | - | 93 | 40 | 8 |
| HAN KOOK GWAN | Jl. Karangsari No. 21 | - | 94 | 20 | 3 |
| HANGOVER EAT & CHEERS | Jl. Braga No. 47 | - | 95 | 63 | 8 |
| HOKA HOKA BENTO | Jl. DR. Setiabudhi No. 302 A | - | 96 | 30 | 1 |
| HOKA HOKA BENTO | Jl. Merdeka No. 47 | - | 97 | 25 | 3 |
| HOKA HOKA BENTO | Jl. Buah Batu No. 273 | - | 98 | 27 | 10 |
| HOKA HOKA BENTO | Jl. Kepatihan No. 11-17 | - | 99 | 8 | 6 |
| HOKA HOKA BENTO | Jl. Soekarno Hatta No. 590 MTC | - | 100 | 11 | 8 |
| Sumber: Portal Data Kota Bandung (Dataset: Tahun 2017 ) | NA | NA | NA | NA | NA |
Data dibaca dari file Excel. Ringkasan ukuran data, nama kolom, dan enam baris pertama ditampilkan di bawah ini.
cat("Jumlah baris:", nrow(df), "\n")
## Jumlah baris: 101
cat("Jumlah kolom:", ncol(df), "\n")
## Jumlah kolom: 6
knitr::kable(
data.frame(Nama_Kolom = names(df)),
caption = "Nama kolom dalam dataset"
)
| Nama_Kolom |
|---|
| NAMA PERUSAHAAN |
| ALAMAT |
| KET |
| ID |
| PELAYANAN |
| MAKANAN |
knitr::kable(
head(df),
caption = "Enam baris pertama dataset"
)
| NAMA PERUSAHAAN | ALAMAT | KET | ID | PELAYANAN | MAKANAN |
|---|---|---|---|---|---|
| ABUBA STEAK | Jl. Prabudimuntur No. 12 | - | 1 | 58 | 7 |
| ARDEN CAFÉ | Jl. Sukajadi No. 228 | - | 2 | 54 | 1 |
| ATMOSPHERE | Jl. Lengkong Besar No. 97 | - | 3 | 98 | 2 |
| B.M.C. | Jl. Aceh No. 30 | - | 4 | 52 | 4 |
| BANDUNG SUKI | Jl. Braga No. 70 | - | 5 | 11 | 4 |
| BANDUNG SUKI / PT. DWIMITRA | Jl. Braga no. 70 | - | 6 | 59 | 10 |
Statistik deskriptif yang dihitung meliputi mean (rata-rata), median,
modus, nilai minimum, nilai maksimum, varians, dan standar deviasi.
Nilai yang hilang (NA) diabaikan dalam perhitungan. Modus
dihitung sebagai nilai dengan frekuensi tertinggi. Jika ada lebih dari
satu nilai dengan frekuensi tertinggi yang sama, fungsi akan menampilkan
seluruh nilai tersebut.
modus <- function(x) {
x_valid <- x[!is.na(x)]
if (length(x_valid) == 0) {
return(NA_real_)
}
frekuensi <- table(x_valid)
as.numeric(names(frekuensi)[frekuensi == max(frekuensi)])
}
hitung_statistik <- function(x, nama_variabel) {
x_valid <- x[!is.na(x)]
if (length(x_valid) == 0) {
return(data.frame(
Variabel = nama_variabel,
N = 0,
Mean = NA_real_,
Median = NA_real_,
Modus = NA_character_,
Minimum = NA_real_,
Maksimum = NA_real_,
Varians = NA_real_,
Standar_deviasi = NA_real_
))
}
data.frame(
Variabel = nama_variabel,
N = length(x_valid),
Mean = mean(x_valid),
Median = median(x_valid),
Modus = paste(modus(x_valid), collapse = ", "),
Minimum = min(x_valid),
Maksimum = max(x_valid),
Varians = var(x_valid),
Standar_deviasi = sd(x_valid),
check.names = FALSE
)
}
stat_pelayanan <- hitung_statistik(df$PELAYANAN, "PELAYANAN")
knitr::kable(
stat_pelayanan,
digits = 2,
caption = "Statistik deskriptif variabel pelayanan"
)
| Variabel | N | Mean | Median | Modus | Minimum | Maksimum | Varians | Standar_deviasi |
|---|---|---|---|---|---|---|---|---|
| PELAYANAN | 100 | 42.24 | 39 | 11 | 3 | 100 | 712.99 | 26.7 |
stat_makanan <- hitung_statistik(df$MAKANAN, "MAKANAN")
knitr::kable(
stat_makanan,
digits = 2,
caption = "Statistik deskriptif variabel makanan"
)
| Variabel | N | Mean | Median | Modus | Minimum | Maksimum | Varians | Standar_deviasi |
|---|---|---|---|---|---|---|---|---|
| MAKANAN | 100 | 5.42 | 5 | 3 | 1 | 10 | 9.05 | 3.01 |
hasil_statistik <- rbind(stat_pelayanan, stat_makanan)
knitr::kable(
hasil_statistik,
digits = 2,
caption = "Perbandingan statistik deskriptif pelayanan dan makanan"
)
| Variabel | N | Mean | Median | Modus | Minimum | Maksimum | Varians | Standar_deviasi |
|---|---|---|---|---|---|---|---|---|
| PELAYANAN | 100 | 42.24 | 39 | 11 | 3 | 100 | 712.99 | 26.70 |
| MAKANAN | 100 | 5.42 | 5 | 3 | 1 | 10 | 9.05 | 3.01 |
Berdasarkan analisis terhadap 101 data restoran, rumah makan, dan kafe di Kota Bandung, diperoleh hasil berikut:
Hasil tersebut menggambarkan karakteristik numerik kedua variabel. Namun, kualitas pelayanan dan makanan belum dapat disimpulkan sebelum skala penilaian dan arti nilai pada setiap variabel dipastikan.
Visualisasi histogram digunakan untuk menunjukkan persebaran nilai berdasarkan interval tertentu, sehingga dapat diketahui rentang nilai yang memiliki frekuensi tinggi. Histogram juga membantu pengamatan terhadap pola distribusi dan variasi data.
Histogram ini digunakan untuk melihat persebaran nilai pelayanan dan mengetahui rentang nilai yang paling sering muncul. Kami menggunakan histogram karena histogram cara paling mudah untuk melihat data serta membacanya, dalam artian dari segala kalangan, histogramlah yang paling mudah untuk dijangkau walaupun bukan plot/visual yang paling menggambarkan persebaran data.
hist(
as.numeric(df$PELAYANAN),
main = "Distribusi Rating Pelayanan",
xlab = "Rating Pelayanan",
ylab = "Frekuensi",
col = "#5DADE2",
border = "white",
breaks = "Sturges"
)
Histogram ini digunakan untuk mengetahui pola persebaran nilai makanan serta rentang nilai yang paling sering diperoleh.
hist(
as.numeric(df$MAKANAN),
main = "Distribusi Rating Makanan",
xlab = "Rating Makanan",
ylab = "Frekuensi",
col = "#58D68D",
border = "white",
breaks = "Sturges"
)
Boxplot digunakan untuk membandingkan median, persebaran nilai, dan kemungkinan pencilan antara variabel pelayanan dan makanan. Karena skala kedua variabel mungkin berbeda, perbandingan visual perlu ditafsirkan dengan hati-hati.
boxplot(
as.numeric(df$PELAYANAN),
as.numeric(df$MAKANAN),
names = c("Pelayanan", "Makanan"),
main = "Perbandingan Rating Pelayanan dan Makanan",
xlab = "Aspek Penilaian",
ylab = "Nilai",
col = c("#5DADE2", "#58D68D"),
border = "gray30"
)
Kedua variabel memiliki karakteristik distribusi dan rentang nilai yang berbeda. Analisis statistik deskriptif membantu memahami rata-rata, nilai tengah, nilai yang paling sering muncul, serta penyebaran data. Namun, kualitas pelayanan dan makanan belum dapat disimpulkan sebelum skala penilaiannya dipastikan.
Analisis dapat dijalankan kembali selama file Excel tersedia di
folder yang sama dengan dokumen R Markdown serta nama file dan struktur
kolomnya sesuai. Dokumen ini menggunakan paket readxl untuk
membaca file Excel dan knitr untuk menampilkan tabel.