Xóa khung dữ liệu hàng trùng lặp trong R [đã đóng]


71

Làm cách nào để xóa các hàng trùng lặp khỏi khung dữ liệu mẫu này?

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

Tôi muốn xóa các bản sao dựa trên cả hai cột:

A   1
A   2
B   4
B   1
C   2

Thứ tự không quan trọng.


@whuber không nên chuyển sang SO?
llrs

@Llopis Có, nhưng bây giờ đã quá muộn để làm điều đó - và đã quá muộn khi chúng tôi ban đầu đóng nó. Loại câu hỏi này đã được xem xét (đường biên giới) về chủ đề nhiều năm trước nhưng ngày nay nó sẽ được di chuyển nhanh chóng.
whuber

Câu trả lời:


115

unique()thực sự trả lời câu hỏi của bạn, nhưng một chức năng thú vị và liên quan khác để đạt được cùng một kết quả là duplicated().

Nó cung cấp cho bạn khả năng tìm kiếm các hàng được nhân đôi.

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
Cảm ơn đã đề cập đến chức năng 'trùng lặp'. Nó có thể được sử dụng để xóa các hàng trùng lặp dựa trên tập hợp con của các cột.
Joko

51

Bạn đang tìm kiếm 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
Cảm ơn Bernd. Tôi nghĩ rằng duy nhất có thể được áp dụng cho một cột cụ thể. Tôi không biết rằng nó cũng có thể được sử dụng cho toàn bộ khung dữ liệu. cảm ơn một lần nữa
Jana
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.