Mengurutkan Data Frame berdasarkan Kolom
Urutkan seluruh data frame menggunakan order() dan arrange() dari dplyr.
Mengurutkan Data Frame berdasarkan Kolom adalah pelajaran R Academy gratis di CoddyKit. Ini adalah pelajaran 4 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.
Mengurutkan Kerangka Data Berdasarkan Satu Kolom
Cara standar dalam base-R untuk mengurutkan kerangka data adalah menggunakan order() pada kolom yang diinginkan, lalu menggunakan indeks yang dihasilkan untuk mengurutkan ulang baris. Koma setelah indeks memilih semua kolom.
df <- data.frame(
name = c('Charlie', 'Alice', 'Bob', 'Diana'),
age = c(35, 28, 42, 31),
salary = c(55000, 48000, 72000, 61000)
)
df[order(df$age), ]Mengurutkan Menurun dengan Negasi
Untuk kolom numerik, negasikan kolom di dalam order() untuk membalik arah pengurutan. Tanda minus membalik semua nilai sehingga nilai yang sebelumnya maksimum menjadi minimum untuk keperluan pengurutan.
df <- data.frame(
name = c('Charlie', 'Alice', 'Bob', 'Diana'),
salary = c(55000, 48000, 72000, 61000)
)
# Highest salary first
df[order(-df$salary), ]Pengurutan Multi-Kolom
Teruskan beberapa kolom ke order() untuk mengurutkan berdasarkan kriteria utama, lalu kriteria sekunder. Argumen kedua memecahkan nilai yang sama pada argumen pertama. Ini menyerupai ORDER BY col1, col2 dalam SQL.
df <- data.frame(
dept = c('Eng', 'HR', 'Eng', 'HR', 'Eng'),
name = c('Zara', 'Bob', 'Alice', 'Eve', 'Mike'),
salary = c(90000, 55000, 85000, 58000, 78000)
)
# Sort by dept, then by salary descending within dept
df[order(df$dept, -df$salary), ]Mengurutkan Kolom Karakter
Pengurutan berdasarkan kolom karakter dilakukan dengan cara yang sama — order() menangani pengurutan leksikografis. Untuk urutan alfabet terbalik, gunakan decreasing = TRUE, bukan negasi (negasi hanya berfungsi untuk nilai numerik).
df <- data.frame(
city = c('Paris', 'Athens', 'Berlin', 'London'),
pop_mil = c(2.1, 0.6, 3.6, 9.0)
)
# Alphabetical by city
df[order(df$city), ]
# Reverse alphabetical
df[order(df$city, decreasing = TRUE), ]Mengatur Ulang Nomor Baris Setelah Pengurutan
Setelah pengurutan, nama baris mencerminkan posisi semula (misalnya, 3, 1, 4, 2). Untuk mengaturnya ulang menjadi bilangan bulat berurutan mulai dari 1, tetapkan row.names(df) <- NULL atau bungkus hasilnya dalam data.frame().
df <- data.frame(
x = c(30, 10, 20),
y = c('c', 'a', 'b')
)
sorted <- df[order(df$x), ]
cat('Before reset:\n'); print(sorted)
row.names(sorted) <- NULL
cat('After reset:\n'); print(sorted)Mengurutkan dengan Nilai NA
Ketika kolom pengurutan berisi NA, order() secara bawaan menempatkannya di bagian akhir. Gunakan na.last = FALSE untuk memindahkan baris NA ke bagian atas, atau saring baris tersebut terlebih dahulu.
df <- data.frame(
name = c('Alice', 'Bob', 'Carol', 'Dave'),
score = c(85, NA, 92, NA)
)
cat('NAs last (default):\n')
print(df[order(df$score), ])
cat('NAs first:\n')
print(df[order(df$score, na.last = FALSE), ])dplyr::arrange() sebagai Alternatif Modern
Paket dplyr menyediakan arrange() sebagai alternatif yang lebih rapi. Meskipun dplyr bukan bagian dari base R, memahami sintaksnya membantu Anda membaca kode R modern. Catatan: isRunnable bernilai TRUE di sini hanya untuk menampilkan sintaks — dplyr harus terpasang agar kode dapat dijalankan.
# dplyr::arrange() syntax (requires dplyr installed)
# library(dplyr)
# df |> arrange(salary) # ascending
# df |> arrange(desc(salary)) # descending
# df |> arrange(dept, desc(salary)) # multi-column
# Equivalent base R:
df <- data.frame(dept=c('A','B','A'), salary=c(50,70,60))
df[order(df$dept, -df$salary), ]Mengurutkan Faktor Berdasarkan Urutan Level
Kolom faktor diurutkan berdasarkan urutan level-nya, bukan secara alfabetis. Dengan demikian, Anda dapat menentukan urutan pengurutan khusus dengan menetapkan level faktor secara eksplisit sebelum mengurutkan.
df <- data.frame(
priority = factor(c('Low', 'High', 'Medium', 'High', 'Low'),
levels = c('Low', 'Medium', 'High')),
task = c('T1', 'T2', 'T3', 'T4', 'T5')
)
# Sorts by factor level (Low < Medium < High)
df[order(df$priority), ]Mengurutkan dan Memilih Baris Teratas
Pola yang umum adalah mengurutkan kerangka data, lalu mengambil N baris teratas dengan head(), atau N baris terbawah dengan tail(). Ini adalah padanan base-R untuk ORDER BY ... LIMIT N dalam SQL.
df <- data.frame(
product = c('A', 'B', 'C', 'D', 'E'),
revenue = c(1200, 4500, 890, 3100, 2750)
)
# Top 3 by revenue
top3 <- head(df[order(-df$revenue), ], 3)
row.names(top3) <- NULL
print(top3)Pengurutan Langsung vs Pengurutan yang Ditugaskan
Pengurutan tidak mengubah kerangka data asli — pengurutan mengembalikan kerangka data baru. Selalu tetapkan hasilnya ke sebuah variabel (variabel baru atau variabel asli yang ditimpa). Menimpa variabel asli tidak masalah jika Anda sudah tidak memerlukan versi yang belum diurutkan.
df <- data.frame(
x = c(3, 1, 4, 1, 5, 9),
y = c('c', 'a', 'd', 'b', 'e', 'i')
)
# Safe: assign to new variable
df_sorted <- df[order(df$x), ]
# Or overwrite original:
df <- df[order(df$x), ]
row.names(df) <- NULL
print(df)Alur Kerja Pengurutan Lengkap
Berikut alur kerja pengurutan kerangka data yang lengkap dan realistis: urutkan karyawan berdasarkan nama departemen secara menaik, lalu berdasarkan gaji secara menurun, atur ulang indeks baris, dan tampilkan hasilnya dengan rapi.
employees <- data.frame(
name = c('Alice', 'Bob', 'Carol', 'Dave', 'Eve'),
dept = c('IT', 'HR', 'IT', 'HR', 'IT'),
salary = c(85000, 58000, 92000, 63000, 78000)
)
result <- employees[order(employees$dept, -employees$salary), ]
row.names(result) <- NULL
print(result)Pemeriksaan Singkat
Bagaimana cara mengurutkan kerangka data df berdasarkan kolom numerik df$salary dalam urutan menurun menggunakan base R?
Inti Penting Pengurutan Kerangka Data
Inti penting untuk mengurutkan kerangka data:
- Idiom base R:
df[order(df$col), ] - Numerik menurun: lakukan negasi dengan
-di dalamorder(-df$col) - Karakter menurun: gunakan argumen
decreasing = TRUE - Multi-kolom:
order(df$a, df$b)— pengurutan sekunder memecahkan nilai yang sama - Faktor diurutkan berdasarkan urutan level yang ditentukan, bukan secara alfabetis
- Atur ulang nama baris dengan
row.names(df) <- NULLsetelah pengurutan - Alternatif modern:
dplyr::arrange()dengandesc()untuk urutan menurun
df <- data.frame(
name = c('Zara', 'Ana', 'Bob', 'Ana'),
score = c(90, 85, 92, 88)
)
# Sort by name asc, score desc
result <- df[order(df$name, -df$score), ]
row.names(result) <- NULL
print(result)Pertanyaan yang Sering Diajukan
Apakah pelajaran “Mengurutkan Data Frame berdasarkan Kolom” gratis?
Ya — teks lengkap “Mengurutkan Data Frame berdasarkan Kolom” 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 “Mengurutkan Data Frame berdasarkan Kolom”?
Urutkan seluruh data frame menggunakan order() dan arrange() dari dplyr. 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 4 dari 4.
Berapa lama pelajaran “Mengurutkan Data Frame berdasarkan Kolom” 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
- Mengurutkan Vektor dengan sort()
- order() untuk Pengurutan Fleksibel
- Memberi Peringkat Nilai dengan rank()
- Mengurutkan Data Frame berdasarkan Kolom