2012-12-07 19 views
11

Có một similar question cho PHP, nhưng tôi đang làm việc với R và không thể dịch giải pháp cho vấn đề của mình.Làm thế nào tôi có thể xóa tất cả các bản sao sao cho KHÔNG còn lại trong một khung dữ liệu?

Tôi có khung dữ liệu này với 10 hàng và 50 cột, trong đó một số hàng hoàn toàn giống nhau. Nếu tôi sử dụng duy nhất trên nó, tôi nhận được một hàng cho mỗi - hãy nói - "loại", nhưng những gì tôi thực sự muốn là chỉ nhận được những hàng chỉ xuất hiện một lần. Có ai biết làm thế nào tôi có thể đạt được điều này?

Tôi có thể xem cụm và bản đồ nhiệt để sắp xếp theo cách thủ công, nhưng tôi có khung dữ liệu lớn hơn khung được đề cập ở trên (với tối đa 100 hàng).

Trả lời

33

này sẽ trích xuất các hàng mà xuất hiện một lần duy nhất (giả sử khung dữ liệu của bạn được đặt tên df):

df[!(duplicated(df) | duplicated(df, fromLast = TRUE)), ] 

Làm thế nào nó hoạt động: Chức năng duplicated kiểm tra liệu một dòng xuất hiện ít nhất là trong lần thứ hai bắt đầu từ dòng một. Nếu đối số fromLast = TRUE được sử dụng, hàm sẽ bắt đầu ở dòng cuối cùng.

Cả hai kết quả boolean được kết hợp với | (lôgic 'hoặc') thành một vectơ mới cho biết tất cả các dòng xuất hiện nhiều lần. Kết quả của việc này bị phủ nhận bằng cách sử dụng ! do đó tạo ra một vectơ boolean chỉ ra các dòng xuất hiện chỉ một lần.

Các vấn đề liên quan