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.


@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

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

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
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.