0Pricing
R Academy · Pelajaran

order() untuk Pengurutan Fleksibel

Dapatkan permutasi indeks untuk mengurutkan berdasarkan satu atau beberapa kriteria.

order() untuk Pengurutan Fleksibel adalah pelajaran R Academy gratis di CoddyKit. Ini adalah pelajaran 2 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar R Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus R Academy mencakup 4 pelajaran total.

Nilai yang Dikembalikan order()

order() tidak mengembalikan nilai yang telah diurutkan — fungsi ini mengembalikan indeks yang akan mengurutkan vektor. Pengarahan tidak langsung ini membuatnya jauh lebih kuat daripada sort() karena Anda dapat menerapkan indeks tersebut pada struktur terkait apa pun.

x <- c(30, 10, 50, 20, 40)
indices <- order(x)
print(indices)
# Verify: x[indices] gives sorted x
print(x[indices])

order() dalam Urutan Menurun

Seperti sort(), order() menerima decreasing = TRUE untuk mengembalikan indeks yang menghasilkan urutan menurun. Hal ini berguna untuk mengurutkan dari yang terbesar ke yang terkecil.

scores <- c(78, 92, 65, 88, 71)
desc_order <- order(scores, decreasing = TRUE)
cat('Rank order (index):', desc_order, '\n')
cat('Scores high to low:', scores[desc_order], '\n')

Mengurutkan Data Frame Berdasarkan Satu Kolom

Penggunaan order() yang paling praktis adalah mengurutkan data frame berdasarkan salah satu kolomnya. Berikan kolom tersebut kepada order(), lalu gunakan indeksnya untuk mengurutkan ulang semua baris data frame.

df <- data.frame(
  name = c('Charlie', 'Alice', 'Bob', 'Diana'),
  age  = c(35, 28, 42, 31)
)
sorted_df <- df[order(df$age), ]
print(sorted_df)

Mengurutkan Data Frame secara Menurun

Untuk mengurutkan data frame dari nilai terbesar ke terkecil berdasarkan kolom numeric, berikan decreasing = TRUE kepada order(). Nama baris (indeks) pada keluaran mencerminkan posisi asli.

products <- data.frame(
  item  = c('Pen', 'Notebook', 'Stapler', 'Tape'),
  price = c(1.5, 4.99, 7.25, 2.10)
)
products[order(products$price, decreasing = TRUE), ]

Pengurutan Multi-Kolom

Berikan beberapa vektor kepada order(), dengan pemisah koma. R mengurutkan berdasarkan argumen pertama, lalu menyelesaikan nilai yang sama menggunakan argumen kedua, ketiga, dan seterusnya. Perilaku ini serupa dengan klausa ORDER BY dalam SQL.

df <- data.frame(
  dept   = c('HR', 'IT', 'HR', 'IT', 'HR'),
  salary = c(50000, 70000, 60000, 65000, 55000)
)
# Sort by dept first, then by salary within dept
df[order(df$dept, df$salary), ]

Pengurutan Ganda dengan Arah Campuran

Untuk mengurutkan satu kolom secara menaik dan kolom lain secara menurun, negasikan kolom numeric yang menurun dengan -. Untuk kolom character, gunakan xtfrm() untuk mendapatkan representasi integer yang dapat diurutkan, lalu negasikan hasilnya.

df <- data.frame(
  dept   = c('HR', 'IT', 'HR', 'IT', 'HR'),
  salary = c(50000, 70000, 60000, 65000, 55000)
)
# dept ascending, salary descending
df[order(df$dept, -df$salary), ]

Menangani NA dalam order()

order() juga memiliki argumen na.last, seperti sort(). Secara default, na.last = NA yang menempatkan NA di akhir. Tetapkan na.last = TRUE atau na.last = FALSE untuk mengatur posisinya secara eksplisit.

vals <- c(5, NA, 2, NA, 8, 1)
# Default: NAs sorted last
order(vals)
# NAs first
order(vals, na.last = FALSE)

Mempertahankan Nama Baris Setelah Pengurutan

Ketika Anda memilih bagian data frame menggunakan indeks baris, R mempertahankan nama baris asli. Gunakan row.names(df) <- NULL atau pendekatan reset= untuk mengatur ulang nama tersebut menjadi 1, 2, 3, ... setelah pengurutan.

df <- data.frame(
  city = c('Paris', 'Tokyo', 'NYC'),
  pop  = c(2.1, 13.9, 8.3)
)
sorted <- df[order(df$pop), ]
print(sorted)
# Reset row names
row.names(sorted) <- NULL
print(sorted)

order() dan sort() secara Berdampingan

Perbedaan utamanya: sort(x) mengembalikan nilai yang telah diurutkan; order(x) mengembalikan posisi yang telah diurutkan. Gunakan sort() jika Anda hanya memerlukan nilainya; gunakan order() jika Anda perlu mengurutkan ulang beberapa struktur data terkait secara bersamaan.

x <- c(50, 20, 80, 10, 60)
cat('sort(x)  :', sort(x), '\n')
cat('order(x) :', order(x), '\n')
cat('x[order(x)]:', x[order(x)], '\n')

Mengurutkan Data Frame Berdasarkan Kolom String

Anda juga dapat mengurutkan berdasarkan kolom character. order(df$name) mengembalikan indeks baris berdasarkan urutan abjad kolom nama, yang kemudian Anda gunakan untuk mengurutkan ulang data frame.

employees <- data.frame(
  name   = c('Zara', 'Ahmed', 'Maria', 'Bruno'),
  tenure = c(3, 7, 2, 5)
)
employees[order(employees$name), ]

Merangkai order() untuk Pengurutan Kompleks

Pengurutan tiga tingkat mudah dilakukan: berikan tiga vektor kepada order(). Setiap argumen tambahan digunakan sebagai penentu urutan jika nilai pada argumen sebelumnya sama.

df <- data.frame(
  region = c('West', 'East', 'West', 'East', 'West'),
  dept   = c('HR', 'IT', 'HR', 'IT', 'IT'),
  score  = c(85, 90, 78, 88, 92)
)
df[order(df$region, df$dept, df$score), ]

Pemeriksaan Cepat

Apa yang dikembalikan order(x) ketika diterapkan pada vektor x?

Hal-Hal Penting tentang order()

Hal-hal penting tentang order():

  • order(x) mengembalikan indeks, bukan nilai — gunakan x[order(x)] untuk mendapatkan nilai yang telah diurutkan
  • Urutkan data frame dengan df[order(df$col), ]
  • Pengurutan multi-kolom: order(df$a, df$b) — nilai yang sama pada a dibedakan berdasarkan b
  • Negasikan kolom numeric dengan - untuk urutan menurun dalam pengurutan ganda
  • Atur posisi NA dengan na.last = TRUE/FALSE/NA
  • Berbeda dari sort(), order() memungkinkan Anda mengurutkan struktur paralel secara bersamaan
df <- data.frame(
  name  = c('Eve', 'Bob', 'Alice', 'Charlie'),
  score = c(88, 92, 88, 75)
)
# Sort by score descending, then name ascending for ties
df[order(-df$score, df$name), ]

Pertanyaan yang Sering Diajukan

Apakah pelajaran “order() untuk Pengurutan Fleksibel” gratis?

Ya — teks lengkap “order() untuk Pengurutan Fleksibel” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus R Academy, upgrade ke CoddyKit PRO. Kursus R Academy mencakup 4 pelajaran total.

Apa yang akan aku pelajari di “order() untuk Pengurutan Fleksibel”?

Dapatkan permutasi indeks untuk mengurutkan berdasarkan satu atau beberapa kriteria. Kamu berlatih R Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.

Apakah aku perlu pengalaman untuk memulai R Academy?

Tidak diperlukan pengalaman sebelumnya. R Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 2 dari 4.

Berapa lama pelajaran “order() untuk Pengurutan Fleksibel” memakan waktu?

Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.

Bisakah aku menulis dan menjalankan kode dalam pelajaran R Academy ini?

Ya. Setiap pelajaran R Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.

Semua pelajaran dalam kursus ini

  1. Mengurutkan Vektor dengan sort()
  2. order() untuk Pengurutan Fleksibel
  3. Memberi Peringkat Nilai dengan rank()
  4. Mengurutkan Data Frame berdasarkan Kolom
← Kembali ke R Academy