Liệt kê các giá trị khác biệt trong một vectơ trong R


97

Làm cách nào để liệt kê các giá trị riêng biệt trong một vectơ nơi các giá trị là bản sao? Ý tôi là, tương tự như câu lệnh SQL sau:

SELECT DISTINCT product_code
FROM data

Câu trả lời:


168

Ý bạn là unique:

R> x = c(1,1,2,3,4,4,4)
R> x
[1] 1 1 2 3 4 4 4
R> unique(x)
[1] 1 2 3 4

12

Nếu dữ liệu thực sự là a factorthì bạn có thể sử dụng levels()hàm, ví dụ:

levels( data$product_code )

Nếu nó không phải là một thừa số, nhưng nó phải như vậy, trước tiên bạn có thể chuyển nó thành thừa số bằng cách sử dụng factor()hàm, ví dụ:

levels( factor( data$product_code ) )

Một tùy chọn khác, như đã đề cập ở trên, là unique()chức năng:

unique( data$product_code )

Sự khác biệt chính giữa hai (khi áp dụng cho a factor) là levelssẽ trả về một vectơ ký tự theo thứ tự các cấp, bao gồm bất kỳ cấp nào được mã hóa nhưng không xảy ra. uniquesẽ trả về a factortheo thứ tự các giá trị xuất hiện đầu tiên, với bất kỳ mức không xảy ra nào bị bỏ qua (mặc dù vẫn được bao gồm trong levelshệ số trả về).


8

Hãy thử sử dụng hàm trùng lặp kết hợp với toán tử phủ định "!".

Thí dụ:

wdups <- rep(1:5,5)
wodups <- wdups[which(!duplicated(wdups))]

Hy vọng rằng sẽ giúp.


7

Bạn cũng có thể sử dụng gói sqldf trong R.

Z <- sqldf('SELECT DISTINCT tablename.columnname FROM tablename ')
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.