Lewati ke konten utama

Cara Melakukan Subset Data di R: Memilih, Memfilter, dan Mengekstrak Data

Pelajari cara melakukan subset data frame di R menggunakan bracket [], subset(), dan dplyr. Termasuk contoh kode dan perbandingan metode.
Diperbarui 28 Sep 2026  · 6 mnt Baca

Jelajahi bersama AI

ChatGPTClaudePerplexity

Hampir setiap proyek analisis data R melibatkan pengambilan baris, kolom, atau nilai tertentu dari sebuah dataset yang lebih besar. Subsetting adalah caranya di R, menggunakan notasi bracket [] untuk kontrol pengindeksan tingkat rendah, fungsi subset() untuk penyaringan berbasis kondisi yang mudah dibaca, atau verba dplyr seperti filter() dan select() untuk pipeline data modern.

Ringkasan

  • Gunakan notasi bracket df[rows, cols] untuk subset baris dan kolom berbasis posisi

  • Gunakan $ untuk mengekstrak satu kolom sebagai vektor: df$column_name

  • Gunakan subset(df, condition) untuk penyaringan berbasis kondisi yang mudah dibaca pada sesi interaktif

  • Tambahkan drop = FALSE saat memilih satu kolom agar hasil tetap berupa data frame

  • Untuk kode produksi dan pipeline data, utamakan notasi bracket atau dplyr::filter() dibanding subset()

Memilih Baris

Berikut adalah contoh subsetting pada data frame bernama debt.

debt[3:6, ]
      name  payment
3      Dan      150
4      Rob       50
5      Rob       75
6      Rob      100

Sintaks df[rows, columns] adalah dasar dari subsetting di R. Di sini, 3:6 memilih baris ke-3 hingga ke-6, dan bagian kosong setelah koma berarti "kembalikan semua kolom." Hasilnya adalah data frame yang lebih kecil dengan struktur kolom yang sama seperti aslinya.

Memilih baris dari kolom tertentu

Salah satu perilaku yang perlu diperhatikan adalah penyederhanaan yang terjadi saat Anda memilih satu kolom. Memilih tiga baris pertama hanya dari kolom payment menyederhanakan hasil menjadi sebuah vektor.

debt[1:3, 2]
100 200 150

Angka 2 di sini merujuk pada kolom kedua dari debt, yaitu payment. Karena kita memilih satu kolom, R menghapus struktur data frame dan mengembalikan vektor numerik biasa.

Pemformatan dataframe

Untuk mempertahankannya sebagai dataframe, cukup tambahkan drop = FALSE seperti di bawah ini: 

debt[1:3, 2, drop = FALSE]
    payment
1       100
2       200
3       150

Memilih kolom tertentu

Anda juga dapat memilih satu kolom dengan operator $ dengan menulis dataframe$column. Contoh berikut mengekstrak kolom payment dari debt. R mengembalikan hasil sebagai vektor, bukan data frame.

debt$payment
100 200 150 50 75 100

Menggunakan Fungsi subset()

Ketika ingin membuat subset yang lebih kompleks atau subset berdasarkan sebuah kondisi, langkah berikutnya adalah menggunakan fungsi subset(). Misalnya, bagaimana jika Anda ingin melihat utang dari seseorang bernama Dan. Anda bisa saja menggunakan bracket untuk memilih utangnya dan menjumlahkannya, tetapi itu bukan cara yang sangat andal, terutama jika ada potensi perubahan pada dataset.

# Ini berfungsi, tetapi tidak informatif
debt[1:3, ]

subset() pada variabel kategorikal

Cara yang lebih baik adalah menggunakan fungsi subset() untuk memilih baris di mana kolom name sama dengan Dan. Perhatikan bahwa harus ada tanda sama dengan ganda (==), yang dikenal sebagai operator relasional.

# Ini berfungsi, tetapi tidak informatif dan tidak andal
debt[1:3, ]

# Jauh lebih informatif!
subset(debt, name == "Dan")
      name     payment
1      Dan         100
2      Dan         200
3      Dan         150

Hasilnya hanya berisi tiga baris di mana name sama dengan "Dan". Perhatikan bahwa nomor baris asli (1, 2, 3) dipertahankan, yang membantu Anda menelusuri hasil kembali ke data frame sumber.

subset() pada variabel numerik

Kita juga dapat melakukan subset pada kolom numerik. Jika kita ingin melihat baris di mana pembayaran sama dengan $100, Anda akan melakukan hal berikut:

subset(debt, payment == 100)
      name  payment
1      Dan      100
6      Rob      100

Dua baris memenuhi kondisi: baris 1 (Dan) dan baris 6 (Rob) sama-sama memiliki pembayaran tepat $100. Ini menunjukkan bahwa subset() memindai setiap baris terlepas dari name, dan mengembalikan semua kecocokan.

Mengakses dan Melakukan Subset Dataframe

Bagaimana jika Anda hanya membutuhkan arus kas dari perusahaan A? Di sini fungsi subset() memfilter baris dari data frame lain, cash:

subset(cash, company == "A")
      company  cash_flow  year
1           A       1000     1
2           A       4000     3
3           A        550     4

Ingat:

  • Argumen pertama yang Anda berikan ke subset() adalah nama dataframe Anda, cash.

  • Perhatikan bahwa Anda tidak boleh menuliskan company dalam tanda kutip!

  • == adalah operator kesetaraan. Operator ini menguji di mana dua hal sama dan mengembalikan vektor logis.

Contoh Interaktif Metode subset()

Pada contoh berikut, kita menggunakan subset() untuk memilih baris cash yang sesuai dengan perusahaan B, lalu memfilter arus kas yang jatuh tempo dalam 1 tahun.

# Baris tentang perusahaan B
subset(cash, company == "B")

# Baris dengan arus kas yang jatuh tempo dalam 1 tahun
subset(cash, year == 1)

Saat Anda menjalankan kode di atas, akan menghasilkan keluaran berikut:

  company cash_flow year
4       B      1500    1
5       B      1100    2
6       B       750    4
7       B      6000    5
  company cash_flow year
1       A      1000    1
4       B      1500    1

Coba sendiri di kursus Introduction to R for Finance kami.

Konten ini diambil dari kursus Introduction to R for Finance oleh Lore Dirick di DataCamp.

Subsetting dengan dplyr

Paket tidyverse dplyr menyediakan alternatif modern untuk melakukan subset pada data frame. Fungsinya filter() memilih baris dan select() memilih kolom, keduanya menggunakan sintaks berbasis pipe yang merangkai operasi secara berurutan.

library(dplyr)

# Filter baris di mana name adalah "Dan"
debt %>% filter(name == "Dan")

# Pilih hanya kolom payment (tetap sebagai data frame)
debt %>% select(payment)

# Gabungkan: filter baris dan pilih kolom dalam satu pipeline
debt %>%
  filter(payment >= 100) %>%
  select(name, payment)

Tidak seperti subset(), fungsi-fungsi dplyr bekerja andal di dalam fungsi lain dan menangani operasi berkelompok, join, dan ringkasan dalam satu pipeline. Jika Anda membangun alur kerja analisis data alih-alih menjalankan kueri satuan, dplyr adalah alat standar.

Perbandingan Metode Subsetting

Mari bandingkan berbagai metode subsetting di R dalam sebuah tabel:

Metode Sintaks Terbaik untuk Catatan
Brackets [] df[rows, cols] Kontrol tingkat rendah, pemrograman Bekerja pada semua objek R
$ df$col Ekstraksi satu kolom secara cepat Mengembalikan vektor, bukan data frame
subset() subset(df, cond) Filter interaktif Tidak direkomendasikan di dalam fungsi
dplyr::filter() df %>% filter(cond) Pipeline data, kode yang mudah dibaca Memerlukan paket dplyr

Pemikiran Akhir

R menyediakan beberapa cara untuk melakukan subset data: notasi bracket [] untuk kontrol penuh, subset() untuk penyaringan interaktif yang mudah dibaca, dan dplyr::filter() untuk pipeline data. Bracket bekerja pada objek R apa pun, subset() mudah dipahami untuk eksplorasi satuan, dan dplyr terukur dengan baik saat Anda merangkai banyak operasi.

Untuk mendalami manipulasi data di R, saya merekomendasikan kursus Data Manipulation with dplyr atau Introduction to the Tidyverse di DataCamp.

FAQ Subset di R

Apa perbedaan antara subset() dan dplyr::filter() di R?

Kedua fungsi menyaring baris berdasarkan kondisi, tetapi perilakunya berbeda dalam konteks pemrograman. subset() menggunakan evaluasi non-standar, yang membuatnya nyaman untuk penggunaan interaktif namun tidak andal di dalam fungsi buatan pengguna. dplyr::filter() dirancang untuk bekerja dengan aman di dalam fungsi dan terintegrasi dengan operator pipe (%>%) untuk merangkai beberapa langkah manipulasi data sekaligus.

Bagaimana cara melakukan subset beberapa kolom sekaligus di R?

Anda dapat memberikan vektor nama kolom atau indeks di dalam bracket. Misalnya, df[, c("name", "payment")] memilih dua kolom berdasarkan nama, sedangkan df[, c(1, 3)] memilihnya berdasarkan posisi. Dengan dplyr, Anda dapat menggunakan select(df, name, payment) atau fungsi bantu seperti starts_with() dan contains() untuk mencocokkan kolom berdasarkan pola.

Mengapa memilih satu kolom di R mengembalikan vektor, bukan data frame?

R menyederhanakan hasil secara default ketika hanya satu kolom dipilih menggunakan notasi bracket. Perilaku ini dikendalikan oleh parameter drop, yang default-nya adalah TRUE. Untuk menjaga hasil tetap sebagai data frame, tambahkan drop = FALSE pada ekspresi bracket Anda, misalnya, df[, 2, drop = FALSE].

Bisakah saya melakukan subset baris berdasarkan beberapa kondisi di R?

Ya. Anda dapat menggabungkan kondisi menggunakan operator & (AND) dan | (OR). Misalnya, subset(df, name == "Dan" & payment > 100) mengembalikan baris di mana name adalah Dan dan payment melebihi 100. Dengan dplyr, Anda dapat memisahkan kondisi dengan koma di dalam filter(): df %>% filter(name == "Dan", payment > 100).

Topik
R
Data Science

Kursus R Teratas

Kursus

Pengantar R

4 jam
3.1M
Kuasai dasar analisis data di R, termasuk vectors, lists, dan data frames, lalu praktikkan R dengan data sets nyata.
Lihat DetailRight Arrow
Mulai Kursus
Lihat SelengkapnyaRight Arrow
Terkait

blogs

Tutorial Korelasi di R

Dapatkan pengenalan dasar-dasar korelasi di R: pelajari lebih lanjut tentang koefisien korelasi, matriks korelasi, plotting korelasi, dan sebagainya.
David Woods's photo

David Woods

13 mnt

blogs

40 Pertanyaan Wawancara DBMS Teratas di 2026

Kuasai pertanyaan wawancara basis data, dari konsep SQL dasar hingga skenario desain sistem tingkat lanjut. Panduan mendalam ini mencakup semua yang Anda perlukan untuk sukses di wawancara DBMS dan meraih peran berikutnya.
Dario Radečić's photo

Dario Radečić

15 mnt

blogs

Spaghetti Plot dan Jalur Badai

Temukan alasan mengapa Anda sebaiknya (tidak) menggunakan spaghetti plot untuk menyampaikan ketidakpastian jalur prediksi badai serta dampaknya terhadap interpretasi.
Hugo Bowne-Anderson's photo

Hugo Bowne-Anderson

13 mnt

blogs

12 Alternatif ChatGPT Terbaik yang Bisa Anda Coba pada 2026

Artikel ini menyajikan daftar alternatif ChatGPT yang akan meningkatkan produktivitas Anda.
Javier Canales Luna's photo

Javier Canales Luna

14 mnt

Lihat SelengkapnyaLihat Selengkapnya