Saya telah membaca CSV
file menjadi R data.frame. Beberapa baris memiliki elemen yang sama di salah satu kolom. Saya ingin menghapus baris yang merupakan duplikat di kolom itu. Sebagai contoh:
platform_external_dbus 202 16 google 1
platform_external_dbus 202 16 space-ghost.verbum 1
platform_external_dbus 202 16 localhost 1
platform_external_dbus 202 16 users.sourceforge 8
platform_external_dbus 202 16 hughsie 1
Saya ingin hanya satu baris ini karena yang lain memiliki data yang sama di kolom pertama.
r
duplicates
r-faq
pengguna1897691
sumber
sumber
google
ataulocalhost
atauhughsie
?Jawaban:
cukup isolasi frame data Anda ke kolom yang Anda butuhkan, lalu gunakan fungsi unik: D
sumber
[,1:3]
bagian dari kode itu? Saya baru mengenal R, itulah sebabnya saya bertanya apa yang hanya dapat saya asumsikan adalah pertanyaan yang jelas.Bagi orang-orang yang datang ke sini untuk mencari jawaban umum untuk penghapusan baris rangkap, gunakan
!duplicated()
:Jawaban dari: Menghapus baris yang digandakan dari bingkai data R
sumber
df[!duplicated(df[, 1:2])]
Fungsi
distinct()
dalamdplyr
paket melakukan penghapusan duplikat acak, baik dari kolom / variabel tertentu (seperti dalam pertanyaan ini) atau mempertimbangkan semua kolom / variabel.dplyr
adalah bagian daritidyverse
.Data dan paket
Hapus baris yang digandakan dalam kolom tertentu (mis., Kolom
a
)Perhatikan bahwa
.keep_all = TRUE
mempertahankan semua kolom, jika tidak hanya kolom yanga
akan dipertahankan.Hapus baris yang merupakan duplikat lengkap dari baris lain:
sumber
.keep_all
adalah untuk apakah untuk menjaga semua kolom, tidak dicampur dengankeep
dipandas
.The
data.table
paket juga memilikiunique
danduplicated
metode itu sendiri dengan beberapa fitur tambahan.Baik
unique.data.table
danduplicated.data.table
metode memilikiby
argumen tambahan yang memungkinkan Anda untuk luluscharacter
atauinteger
vektor nama kolom atau lokasi mereka masing-masingFitur penting lain dari metode ini adalah perolehan kinerja yang sangat besar untuk set data yang lebih besar
sumber
Anda juga dapat menggunakan
dplyr
'sdistinct()
fungsi! Ini cenderung lebih efisien daripada opsi alternatif, terutama jika Anda memiliki banyak pengamatan.sumber
jawaban umum dapat misalnya:
keluaran:
sumber
-which
, ini akan menyebabkan kesalahan jika tidak ada duplikat, penggunaandf[!(duplicated(df)), ]
mungkin lebih aman.Dengan
sqldf
:Larutan:
Keluaran:
sumber
Atau Anda bisa membuat sarang data dalam cols 4 dan 5 menjadi satu baris dengan
tidyr
:Duplikat kolom 2 dan 3 sekarang dihapus untuk analisis statistik, tetapi Anda telah menyimpan data kolom 4 dan 5 dalam sebuah tibble dan dapat kembali ke bingkai data asli kapan saja dengan
unnest()
.sumber
Hapus duplikat baris dataframe
Dalam dataset ini, tidak ada satu baris duplikat sehingga menghasilkan jumlah baris yang sama seperti di data saya.
Hapus Baris Duplikat berdasarkan pada satu variabel
Fungsi .keep_all digunakan untuk mempertahankan semua variabel lain dalam bingkai data output.
Hapus Baris Duplikat berdasarkan beberapa variabel
Fungsi .keep_all digunakan untuk mempertahankan semua variabel lain dalam bingkai data output.
(dari: http://www.datasciencemadesimple.com/remove-duplicate-rows-r-using-dplyr-distinct-function/ )
sumber
Masalah ini juga dapat diselesaikan dengan memilih baris pertama dari masing-masing kelompok di mana grup tersebut adalah kolom berdasarkan yang ingin kita pilih nilai-nilai unik (dalam contoh bersama itu hanya kolom 1).
Menggunakan basis R:
Di
dplyr
Atau menggunakan
data.table
Jika kita perlu mencari tahu baris-baris unik berdasarkan beberapa kolom, cukup tambahkan nama kolom itu di bagian pengelompokan untuk masing-masing jawaban di atas.
data
sumber
Berikut ini adalah solusi yang sangat sederhana, cepat
dplyr
/tidy
:Hapus baris yang sepenuhnya sama:
Hapus baris yang sama hanya di kolom tertentu:
sumber