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 baris berikut satu kali jika package belum terpasang:
# install.packages("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.")
)
}
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) {
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 |
Gunakan tabel hasil analisis di atas untuk menjelaskan karakteristik kedua variabel.
Nilai pelayanan dan makanan sebaiknya dibandingkan dengan mempertimbangkan skala dan definisi masing-masing variabel pada sumber data. Jangan menyimpulkan bahwa salah satu lebih baik hanya berdasarkan besar angka jika skala atau cara pengukurannya berbeda.
Analisis ini merangkum ukuran pemusatan dan penyebaran untuk variabel PELAYANAN dan MAKANAN pada dataset rumah makan, restoran, dan kafe di Kota Bandung. Kesimpulan substantif perlu disusun berdasarkan hasil tabel serta keterangan dan skala pengukuran yang tersedia pada sumber data.
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.