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.
Nama Data: Restaurant and Cafe Reviews Pengunggah: Ghania Audi https://www.kaggle.com/datasets/ghania06/review-restoran-rumah-makan-dan-cafe
Paket yang digunakan untuk membaca data Excel, mengolah data, dan menampilkan tabel.
# Jalankan sekali jika paket belum tersedia:
# install.packages("readx1")
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)
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 berhasil 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 pada perhitungan statistik
yang mendukung argumen na.rm = TRUE.
Modus dihitung sebagai nilai dengan frekuensi tertinggi. Jika ada lebih dari satu nilai yang sama-sama memiliki frekuensi tertinggi, fungsi akan menampilkan seluruh nilai tersebut.
modus <- function(x) {
x_valid <- x[!is.na(x)]
if (length(x_valid) == 0) {
returm(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:
Variabel PELAYANAN memiliki rata-rata 42,24, median 39, dan modus 11. Nilainya berkisar antara 3–100 dengan standar deviasi 26,70. Hal ini menunjukkan adanya variasi nilai pelayanan dalam dataset.
Variabel MAKANAN memiliki rata-rata 5,42, median 5, dan modus 3. Nilainya berkisar antara 1–10 dengan standar deviasi 3,01. Hal ini menunjukkan bahwa nilai makanan dalam dataset juga bervariasi.
Kami menggunakan visualisasi data histogram dikarenakan visualisasi ini membantu menunjukkan persebaran nilai rating berdasarkan interval tertentu, sehingga dapat diketahui rentang nilai yang memiliki frekuensi tinggi. Selain itu, histogram juga memudahkan pengamatan terhadap pola distribusi dan variasi data, sehingga karakteristik kedua variabel dapat dipahami dengan lebih jelas.
Histogram dipilih untuk melihat persebaran nilai rating pelayanan dan mengetahui rentang nilai yang paling sering muncul.
hist(
as.numeric(df$PELAYANAN),
main = "Distribusi Rating Pelayanan",
xlab = "Rating Pelayanan",
ylab = "Frekuensi",
col = "#5DADE2",
border = "white",
breaks = "Sturges"
)
Histogram dipilih untuk mengetahui pola persebaran rating 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 dipilih untuk membandingkan median, persebaran nilai, dan kemungkinan pencilan antara rating pelayanan dan makanan.
boxplot(
as.numeric(df$PELAYANAN),
as.numeric(df$MAKANAN),
names = c("Pelayanan", "Makanan"),
main = "Perbandingan Rating Pelayanan dan Makanan",
xlab = "Aspek Penilaian",
ylab = "Rating",
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 dan nama file serta struktur kolomnya sesuai. Dokumen ini menggunakan package readxl untuk membaca Excel dan knitr untuk menampilkan tabel.