dplyr untuk yang Sudah Bisa pandas: Tabel Padanan Fungsi
Blog/Tips & Trik/dplyr untuk yang Sudah Bisa pandas: Tabel Padanan Fungsi

dplyr untuk yang Sudah Bisa pandas: Tabel Padanan Fungsi

BimaBima
·11 November 2025·8 menit baca

Penulis

Bima

Bima

Founder & Data Professional

Bagikan

TL;DR

dplyr dan pandas ngerjain hal yang sama dengan nama beda: filter jadi pengganti boolean indexing, select jadi pengganti pemilihan kolom, mutate jadi pengganti assign, dan group_by plus summarise jadi pengganti groupby plus agg. Perbedaan terbesarnya ada di gaya nulis. dplyr nyambungin langkah pakai pipe jadi satu alur yang kebaca dari atas ke bawah, sementara pandas nyusun lewat rantai method. Kalau kamu udah paham logika pandas, pindah ke dplyr biasanya cuma butuh satu sore.

dplyr adalah paket R buat olah tabel, dan hampir semua fungsinya punya padanan langsung di pandas.

Kamu udah bisa groupby dan merge. Waktu buka kode R orang lain, yang bikin bingung bukan logikanya, tapi nama fungsinya.

Di bawah ini tabel padanannya, dari yang paling sering kepake sampai yang agak jarang, plus contoh di data penjualan toko_berkah.

Apa itu dplyr?

dplyr adalah paket R buat manipulasi data tabel dengan kata kerja yang namanya gamblang: filter, select, mutate, arrange, dan summarise. Dia bagian dari kumpulan paket tidyverse. Fungsinya sama kayak pandas di Python, cuma gaya nulisnya nyambungin langkah pakai pipe, jadi kode kebaca berurutan dari atas ke bawah.

Pipe di R modern ditulis |>. Tanda ini ngoper hasil langkah sebelumnya jadi argumen pertama fungsi berikutnya.

Kalau kamu terbiasa nulis df.groupby().agg() berantai, konsepnya udah kamu pegang.

Tabel padanan fungsi dplyr dan pandas

Ini padanan yang paling sering kepake di kerjaan harian analis.

Tugasdplyr (R)pandas (Python)
Saring barisfilter(total > 100000)df[df["total"] > 100000]
Pilih kolomselect(kota, total)df[["kota", "total"]]
Bikin kolom barumutate(margin = harga - modal)df.assign(margin=df["harga"] - df["modal"])
Urutkanarrange(desc(total))df.sort_values("total", ascending=False)
Ganti nama kolomrename(omzet = total)df.rename(columns={"total": "omzet"})
Ambil nilai unikdistinct(kota)df[["kota"]].drop_duplicates()
Hitung per kelompokcount(kota, sort = TRUE)df["kota"].value_counts()
Ambil baris teratasslice_head(n = 10)df.head(10)
Gabung tabelleft_join(produk, by = "produk_id")df.merge(produk, on="produk_id", how="left")
Ambil satu kolom jadi vektorpull(total)df["total"]
Hitung nilai unikn_distinct(kota)df["kota"].nunique()
Logika bertingkatcase_when(...)np.select(...)

Daftar resmi semua fungsinya ada di dokumentasi resmi dplyr.

Gimana cara nulis group by di dplyr?

Ini bagian yang paling beda rasanya. Di pandas, kamu ngelompokin dan meringkas dalam satu langkah agg. Di dplyr, kamu pisah jadi dua kata kerja.

Versi pandas:

ringkas = (
    df.groupby("kota")
      .agg(omzet=("total", "sum"),
           jumlah_transaksi=("total", "size"))
      .reset_index()
      .sort_values("omzet", ascending=False)
)

Versi dplyr:

ringkas <- df |>
  group_by(kota) |>
  summarise(
    omzet = sum(total),
    jumlah_transaksi = n(),
    .groups = "drop"
  ) |>
  arrange(desc(omzet))

Hasil keduanya sama. Yang beda cuma urutan bacanya.

Perhatiin .groups = "drop". Tanpa itu, hasilnya masih bawa status berkelompok, dan langkah berikutnya bisa jalan di tiap kelompok tanpa kamu sadar. Ini sumber bug yang paling sering nyusahin pendatang dari pandas.

Fungsi sum dan n di sini termasuk aggregate function, konsep yang sama persis kayak di SQL.

Contoh kasus: penjualan toko_berkah per kota

Data yang aku pakai: transaksi toko_berkah selama Januari sampai Juni, 84.216 baris, tersebar di 6 kota di Jawa Tengah.

Pertanyaannya sederhana. Kota mana yang omzetnya besar tapi rata-rata belanjanya kecil?

hasil <- transaksi |>
  filter(status == "selesai") |>
  group_by(kota) |>
  summarise(
    omzet = sum(total),
    transaksi = n(),
    rata_belanja = mean(total),
    .groups = "drop"
  ) |>
  mutate(rata_belanja = round(rata_belanja)) |>
  arrange(desc(omzet))

Hasilnya:

KotaOmzetTransaksiRata-rata belanja
SemarangRp 3,84 miliar28.410Rp 135.000
SoloRp 2,61 miliar14.902Rp 175.000
KudusRp 1,92 miliar17.336Rp 111.000
SalatigaRp 1,04 miliar9.118Rp 114.000
PekalonganRp 0,88 miliar7.905Rp 111.000
MagelangRp 0,74 miliar6.545Rp 113.000

Yang menarik: Kudus punya transaksi 16% lebih banyak dari Solo, tapi omzetnya 26% lebih kecil. Selisih rata-rata belanja Rp 64.000 per struk yang jadi penyebabnya.

Kalau Kudus bisa naikin rata-rata belanja jadi Rp 130.000 aja, tambahannya sekitar Rp 329 juta di periode yang sama. Angka itu ketemu dalam 6 baris dplyr.

Logika ringkasan kayak gini di spreadsheet biasanya dikerjain pakai SUMIFS, dan mulai berat waktu barisnya lewat ratusan ribu.

Beda kebiasaan yang bikin pengguna pandas kepeleset

Nama kolom nggak pakai tanda kutip. Di dplyr kamu nulis filter(kota == "Solo"), bukan filter("kota" == "Solo"). Nama kolom dianggap variabel di dalam data.

Indeks mulai dari 1. R ngitung dari 1, Python dari 0. Ini bikin salah waktu ambil baris atau kolom pakai posisi.

Nggak ada indeks baris kayak pandas. Data frame di R nggak punya index yang nyimpen makna. Kalau kamu terbiasa set_index, di dplyr kamu simpan aja sebagai kolom biasa.

summarise ngurangin jumlah baris, mutate nggak. Kalau kamu mau nambah kolom total per kelompok tanpa ngurangin baris, pakai group_by lalu mutate, bukan summarise.

NA bukan NaN. Nilai kosong di R ditulis NA, dan banyak fungsi hitung bakal balikin NA kalau ada satu nilai kosong. Tambahin na.rm = TRUE di sum atau mean.

Kapan pilih dplyr, kapan pilih pandas?

Pilih pandas kalau hasil analisismu bakal nyambung ke pipeline produksi, model machine learning, atau aplikasi web. Ekosistem Python lebih luas di situ.

Pilih dplyr kalau kerjaanmu banyak di statistik, riset, atau laporan. Bikin model statistik dan grafik di R biasanya lebih singkat kodenya.

Buat perbandingan tool yang lebih luas sebelum mutusin, cek Excel vs Python untuk analis. Kalau kamu mau lihat contoh analisis statistik yang R sering dipakai, ada di regresi linear.

FAQ

Apakah dplyr lebih cepat dari pandas?

Tergantung ukuran data dan operasinya, dan bedanya biasanya nggak besar buat data di bawah satu juta baris. Kalau kamu butuh kecepatan di data besar, ada paket dtplyr yang jalan pakai mesin data.table tapi sintaksnya tetap dplyr. Di sisi Python, ada Polars yang gaya nulisnya justru mirip dplyr. Pilihannya lebih baik didasarkan pada kenyamanan tim daripada selisih detik.

Pipe di R pakai %>% atau |>?

Dua-duanya jalan. %>% datang dari paket magrittr dan udah dipakai bertahun-tahun di kode tidyverse. |> adalah pipe bawaan R yang ada sejak versi 4.1 dan nggak butuh paket tambahan. Buat kode baru, pakai |> aja biar lebih sedikit ketergantungan. Kalau kamu baca kode lama, kamu bakal sering ketemu %>%, dan artinya sama.

Gimana cara bikin kolom kondisional kayak np.select di dplyr?

Pakai case_when di dalam mutate. Contohnya mutate(segmen = case_when(total >= 200000 ~ "besar", total >= 100000 ~ "sedang", .default = "kecil")). Urutan kondisinya penting, soalnya yang pertama cocok yang dipakai. Buat kondisi tunggal yang cuma punya dua hasil, if_else lebih ringkas dan lebih gampang dibaca orang lain.

Apakah aku perlu belajar R kalau udah bisa Python?

Nggak wajib, tapi berguna kalau kamu kerja di tim yang laporannya udah jalan di R, atau kamu masuk ke bidang riset dan statistik. Banyak lowongan analis di riset pasar dan kesehatan nyebut R sebagai syarat. Kalau kamu udah paham pandas, mempelajari dplyr sampai bisa kerja nyata biasanya cuma butuh beberapa jam, bukan berminggu-minggu.

Kenapa hasil summarise-ku masih terkelompok?

Karena summarise cuma ngelepas satu tingkat pengelompokan. Kalau kamu group_by(kota, bulan) lalu summarise, hasilnya masih terkelompok per kota, dan operasi berikutnya jalan di tiap kota. Tambahin .groups = "drop" di dalam summarise buat ngelepas semuanya. Kebiasaan ini nyelametin kamu dari angka yang keliatan bener tapi salah kelompok.

Penutup

Pindah dari pandas ke dplyr sebagian besar cuma soal kosakata. Lima kata kerja utama nutupin mayoritas kerjaan harian.

Yang perlu perhatian ekstra cuma dua: sisa pengelompokan setelah summarise, dan penanganan NA.

Coba ambil satu script pandas yang paling sering kamu jalanin, lalu tulis ulang jadi dplyr sambil buka tabel padanan di atas. Habis itu lanjut ke regresi linear buat lihat kekuatan R di sisi statistik.

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