Menghapus bingkai data baris duplikat di R [ditutup]

71

Bagaimana saya bisa menghapus baris duplikat dari frame data contoh ini?

A   1
A   1
A   2
B   4  
B   1
B   1
C   2
C   2

Saya ingin menghapus duplikat berdasarkan kedua kolom:

A   1
A   2
B   4
B   1
C   2

Ketertiban tidak penting.

Jana
sumber
@whuber bukankah itu harus dipindahkan ke SO?
llrs
@Lopis Ya, tapi sudah terlambat untuk melakukannya sekarang - dan sudah terlambat ketika kami awalnya menutupnya. Pertanyaan semacam ini dianggap (batas) pada topik beberapa tahun yang lalu tetapi saat ini akan dimigrasi dengan cepat.
whuber

Jawaban:

115

unique()memang menjawab pertanyaan Anda, tetapi fungsi lain yang terkait dan menarik untuk mencapai tujuan yang sama adalah duplicated().

Ini memberi Anda kemungkinan untuk mencari baris mana yang diduplikasi.

a <- c(rep("A", 3), rep("B", 3), rep("C",2))
b <- c(1,1,2,4,1,1,2,2)
df <-data.frame(a,b)

duplicated(df)
[1] FALSE  TRUE FALSE FALSE FALSE  TRUE FALSE  TRUE

> df[duplicated(df), ]
  a b
2 A 1
6 B 1
8 C 2

> df[!duplicated(df), ]
  a b
1 A 1
3 A 2
4 B 4
5 B 1
7 C 2
Rahul
sumber
2
Terima kasih telah menyebutkan fungsi 'duplikat'. Itu dapat digunakan untuk menghapus baris yang digandakan berdasarkan subset dari kolom.
Joko
51

Anda sedang mencari unique().

a <- c(rep("A", 3), rep("B", 3), rep("C",2))
b <- c(1,1,2,4,1,1,2,2)
df <-data.frame(a,b)
unique(df)

> unique(df)
  a b
1 A 1
3 A 2
4 B 4
5 B 1
7 C 2
Bernd Weiss
sumber
1
Terima kasih Bernd. Saya pikir unik hanya dapat diterapkan untuk kolom tertentu. Saya tidak tahu bahwa itu dapat digunakan untuk seluruh kerangka data juga. terima kasih lagi
Jana