R Markdown: Laporan Analisis yang Bisa Diulang Setiap Bulan
Blog/Tips & Trik/R Markdown: Laporan Analisis yang Bisa Diulang Setiap Bulan

R Markdown: Laporan Analisis yang Bisa Diulang Setiap Bulan

BimaBima
·17 November 2025·11 menit baca

Penulis

Bima

Bima

Founder & Data Professional

Bagikan

TL;DR

R Markdown adalah format file yang nyampur teks laporan dan kode R di satu dokumen, lalu diubah jadi HTML, Word, atau PDF lewat proses knit. Angka dan grafik di laporannya dihitung ulang tiap kali file dijalankan, jadi laporan bulanan cukup diganti parameter tanggalnya. Ini nghilangin kesalahan copy paste yang paling sering muncul di laporan berulang.

R Markdown itu file yang isinya campuran teks laporan dan kode R. Waktu dijalankan, kodenya dieksekusi dan hasilnya langsung nempel di dokumen jadi.

Manfaat utamanya bukan kerennya. Manfaatnya: bulan depan kamu ganti satu baris tanggal, dan seluruh laporan terbit ulang dengan angka baru.

Aku dulu ngerjain laporan penjualan bulanan dengan cara ekspor, tempel ke Word, ganti angka manual. Rata-rata 2 jam 40 menit per bulan, dan minimal sekali setahun ada angka yang kelewat diganti.

Apa itu R Markdown?

R Markdown adalah format dokumen yang menggabungkan teks biasa dengan blok kode R di file berekstensi .Rmd. Waktu kamu tekan tombol Knit, R jalanin semua kodenya secara urut, lalu nyusun hasilnya (angka, tabel, grafik) jadi satu dokumen HTML, Word, atau PDF. Karena angkanya dihitung ulang tiap kali, laporan kamu nggak mungkin ketinggalan versi lama.

Tiga bagian yang selalu ada: header YAML di paling atas, teks naratif, dan code chunk.

Langkah 1: siapkan alatnya

Install R dan RStudio, lalu paket yang dibutuhkan:

install.packages(c("rmarkdown", "knitr", "tidyverse", "scales"))

Buat laporan Word, cukup itu. Buat PDF, kamu perlu tambahan mesin LaTeX:

install.packages("tinytex")
tinytex::install_tinytex()

Saranku mulai dari HTML dulu. Paling cepat di-knit, dan tabel panjang tetap kebaca tanpa kepotong halaman.

Langkah 2: bikin file .Rmd pertama

Di RStudio, klik File, New File, lalu R Markdown. Isi judul dan pilih HTML.

Bagian paling atas namanya header YAML. Ganti isinya jadi:

---
title: "Laporan Penjualan Bulanan"
author: "Tim Data"
date: "`r format(Sys.Date(), '%d %B %Y')`"
output:
  html_document:
    toc: true
    toc_float: true
    theme: flatly
params:
  bulan: "2025-10"
---

Dua baris yang paling berguna di sini: toc: true yang bikin daftar isi otomatis, dan blok params yang nyimpan bulan laporan. Blok params itu kunci laporan bulanan.

Langkah 3: pahami code chunk

Code chunk itu blok kode yang dibuka dan ditutup dengan tiga backtick.

```{r setup, include=FALSE}
knitr::opts_chunk$set(echo = FALSE, warning = FALSE, message = FALSE)
library(tidyverse)
library(scales)
```

Opsi yang paling sering dipakai:

OpsiArtinyaKapan dipakai
echo = FALSEKode nggak ditampilkan, hasilnya iyaLaporan buat atasan
include = FALSEKode jalan tapi nggak ada yang munculChunk persiapan data
message = FALSESembunyikan pesan paketHampir selalu
fig.width, fig.heightUkuran grafik dalam inciGrafik kekecilan atau kegedean
eval = FALSEKode ditampilkan tapi nggak dijalankanContoh kode di dokumentasi

Baris opts_chunk$set() di chunk setup nerapin opsi itu ke seluruh dokumen, jadi kamu nggak perlu nulis ulang di tiap chunk.

Langkah 4: masukkan data dan hitung angkanya

```{r baca-data}
transaksi <- read_csv("data/transaksi_toko_berkah.csv") |>
  mutate(bulan = format(tanggal, "%Y-%m")) |>
  filter(bulan == params$bulan)

omzet        <- sum(transaksi$total)
jml_struk    <- nrow(transaksi)
rata_struk   <- omzet / jml_struk
```

Perhatikan params$bulan. Nilainya diambil dari header YAML, jadi ganti sekali di atas dan seluruh laporan ikut berubah.

Langkah 5: sisipkan angka ke dalam kalimat

Ini bagian yang bikin R Markdown beda dari sekadar script. Kamu bisa naruh angka langsung di tengah paragraf pakai kode sebaris.

Omzet bulan ini `r comma(omzet, prefix = "Rp ")` dari
`r comma(jml_struk)` transaksi, dengan rata-rata
`r comma(round(rata_struk), prefix = "Rp ")` per struk.

Hasilnya di dokumen jadi kalimat biasa: "Omzet bulan ini Rp 1.420.000.000 dari 18.400 transaksi, dengan rata-rata Rp 77.174 per struk."

Nggak ada lagi angka di paragraf yang lupa diperbarui. Itu satu-satunya alasan yang aku butuh buat pindah dari Word.

Langkah 6: tambahkan tabel dan grafik

```{r tabel-cabang}
ringkas <- transaksi |>
  group_by(cabang) |>
  summarise(
    omzet     = sum(total),
    transaksi = n(),
    rata_rata = round(sum(total) / n())
  ) |>
  arrange(desc(omzet))

knitr::kable(
  ringkas,
  col.names = c("Cabang", "Omzet", "Transaksi", "Rata-rata"),
  format.args = list(big.mark = ".")
)
```

Fungsi kable() ngubah data frame jadi tabel yang rapi di dokumen. Buat tabel yang lebih cantik, tambahkan paket kableExtra.

Grafiknya tinggal panggil ggplot2 di chunk terpisah:

```{r grafik-harian, fig.width=8, fig.height=4}
transaksi |>
  group_by(tanggal) |>
  summarise(omzet = sum(total)) |>
  ggplot(aes(tanggal, omzet)) +
  geom_col(fill = "#0891b2") +
  scale_y_continuous(labels = label_number(scale = 1e-6, suffix = " jt")) +
  labs(title = "Omzet Harian", x = NULL, y = "Juta Rp") +
  theme_minimal()
```

Kalau kamu belum familier sama sintaks grafiknya, baca dulu panduan ggplot2 dasar.

Langkah 7: terbitkan laporan buat banyak bulan sekaligus

Inilah yang nghemat waktu paling banyak. Bikin satu file R terpisah bernama render.R:

bulan_list <- c("2025-07", "2025-08", "2025-09", "2025-10")

for (b in bulan_list) {
  rmarkdown::render(
    input       = "laporan.Rmd",
    params      = list(bulan = b),
    output_file = paste0("laporan-", b, ".html")
  )
}

Jalanin sekali, keluar 4 file laporan lengkap. Waktu prosesnya buat data 61.400 baris sekitar 38 detik di laptop biasa.

Bandingin dengan bikin 4 laporan manual di Word. Itu setengah hari kerja.

Contoh kasus: laporan bulanan toko_berkah

Laporan yang aku pakai buat toko_berkah isinya 5 bagian: ringkasan angka utama, tren harian, perbandingan cabang, 10 produk terlaris, dan catatan kejadian khusus.

Empat bagian pertama otomatis penuh. Bagian kelima diketik manual tiap bulan, isinya konteks yang cuma diketahui manusia, misal "cabang Jatiasih tutup 2 hari karena banjir".

Waktu pengerjaan turun dari 2 jam 40 menit jadi 25 menit. Dua puluh menit di antaranya buat nulis bagian kelima itu.

Yang nggak aku duga: jumlah revisi setelah laporan dikirim turun drastis. Dari rata-rata 3 kali per bulan jadi hampir nol, karena angka di paragraf dan angka di tabel sekarang selalu berasal dari hitungan yang sama.

Kesalahan umum waktu pakai R Markdown

  • Ngandelin objek yang ada di Environment. Proses knit jalan di sesi R baru yang kosong. Kalau data cuma ada di memori sesi kamu, knit-nya bakal gagal. Baca datanya di dalam chunk.
  • Path file absolut. C:/Users/bima/Documents/data.csv nggak jalan di komputer orang lain. Pakai path relatif dari folder proyek.
  • Nulis angka manual di paragraf. Ini balik ke masalah awal. Pakai kode sebaris.
  • Chunk kepanjangan. Satu chunk sebaiknya satu tugas. Kalau gagal, kamu langsung tau bagian mana yang salah.
  • Lupa echo = FALSE. Atasan kamu nggak butuh lihat 40 baris kode di laporan.
  • Nggak ngatur locale buat nama bulan. Kalau mau "Oktober" bukan "October", set Sys.setlocale("LC_TIME", "id_ID.UTF-8") di chunk setup.

Kapan pilih R Markdown, kapan pilih dashboard

R Markdown cocok buat laporan yang ada narasinya dan terbit berkala, misal laporan bulanan ke manajemen atau laporan penelitian.

Dashboard cocok buat angka yang dicek berulang kali dalam sehari dan butuh filter interaktif.

Banyak tim pakai dua-duanya. Dashboard buat pantau harian, R Markdown buat dokumen resmi yang diarsipkan tiap bulan. Panduan lengkap opsi format dan fitur lainnya ada di dokumentasi resmi R Markdown.

FAQ

Apa bedanya R Markdown dan Quarto?

Quarto adalah penerus R Markdown yang dibuat tim yang sama, dan bisa jalanin Python serta Julia selain R. Sintaks dasarnya hampir identik, jadi keterampilan kamu kebawa. Buat proyek baru yang campur bahasa, Quarto pilihan yang masuk akal. Buat file .Rmd yang udah ada dan jalan, nggak ada keharusan pindah.

Bisa nggak hasil R Markdown diekspor ke Word?

Bisa, ganti bagian output di YAML jadi word_document. Kamu juga bisa pakai file Word sebagai template supaya font dan gaya heading ikut standar kantor, lewat opsi reference_docx. Ini berguna kalau laporan akhirnya harus diedit lagi oleh orang yang nggak pakai R.

Kenapa knit gagal padahal kode jalan di console?

Karena knit jalan di sesi R yang bersih tanpa objek yang ada di Environment kamu. Semua data, paket, dan variabel harus dipanggil di dalam file .Rmd itu sendiri. Cara ngeceknya: restart R, lalu jalanin semua chunk dari atas. Kalau lancar, knit-nya juga bakal lancar.

Gimana cara bikin laporan yang tanggalnya ganti otomatis?

Pakai blok params di header YAML buat nyimpan bulan atau tanggal laporan, lalu panggil dengan params$bulan di kode. Buat menerbitkan banyak periode sekaligus, tulis loop yang manggil rmarkdown::render() dengan nilai params berbeda tiap putaran. Satu perintah bisa ngeluarin laporan 12 bulan sekaligus.

Perlu paham R dulu sebelum belajar R Markdown?

Perlu dasarnya: baca file, ngolah data frame, dan bikin grafik. R Markdown sendiri cuma pembungkus, dia nggak nambah konsep pemrograman baru. Kalau kamu udah bisa bikin ringkasan dan grafik di script R biasa, migrasi ke R Markdown paling makan waktu satu sore.

Ringkasnya

R Markdown nggabungin teks dan kode di satu file, jadi angka di laporan selalu ikut data terbaru.

Pakai blok params buat bulan laporan, lalu terbitkan banyak periode sekaligus dengan satu loop.

Mulai dari laporan paling sederhana: satu angka utama, satu tabel, satu grafik. Kalau kamu masih ngerekap datanya di spreadsheet sebelum masuk R, rapikan dulu pakai SUMIFS dan COUNTIFS, lalu cek juga konsep ETL biar alur datanya jelas.

Coba Langsung

Mau praktek langsung? Mulai latihan SQL gratis

Latihan interaktif, langsung di browser.

Buka NgulikSQL →
Bagikan:
Bima
Ditulis oleh

Bima

Founder & Data Professional

Founder Ngulik Data. Passionate about making data analysis accessible for everyone.

Artikel terkait

Pandas groupby: Agregasi Data ala Pivot di Python (2026)
Tips & Trik
20 Juli 2026•9 menit baca

Pandas groupby: Agregasi Data ala Pivot di Python (2026)

groupby ngelompokin baris berdasarkan kolom, lalu ngitung ringkasan per grup kayak total atau rata-rata. Ini pivot-nya pandas.

BimaBima
Pandas to_excel: Ekspor DataFrame ke Excel (2026)
Tips & Trik
18 Juli 2026•8 menit baca

Pandas to_excel: Ekspor DataFrame ke Excel (2026)

to_excel nyimpen DataFrame pandas jadi file Excel .xlsx. Ini cara pakainya, dari satu sheet sampai banyak sheet, plus setelan yang bikin hasilnya rapi.

BimaBima
Pandas read_excel: Baca File Excel di Python
Tips & Trik
16 Juli 2026•8 menit baca

Pandas read_excel: Baca File Excel di Python

pandas read_excel baca file Excel jadi DataFrame, bisa pilih sheet tertentu dan lompatin baris judul yang berantakan. Ini cara pakai plus parameter penting dengan contoh data toko.

BimaBima
Kembali ke Blog
Ngulik Data logoNgulik Data

Platform edukasi data lengkap untuk professionals Indonesia. Belajar SQL, Data Analysis, dan lebih banyak lagi dengan praktek langsung dan feedback real-time.

© 2026 Ngulik Data. Semua hak dilindungi.

TAUTAN
BantuanHargaDatasetBlogAfiliasi
LEGAL
Syarat & KetentuanKebijakan Privasi
Ngulik Data
DatasetLeaderboardBlogStore