Buat daftar nilai berbeda dalam vektor di R

98

Bagaimana saya bisa membuat daftar nilai yang berbeda dalam vektor di mana nilainya mereplikasi? Maksud saya, mirip dengan pernyataan SQL berikut:

SELECT DISTINCT product_code
FROM data
Mehper C. Palavuzlar
sumber

Jawaban:

169

Apakah maksud Anda 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
csgillespie.dll
sumber
12

Jika datanya benar-benar a factormaka Anda dapat menggunakan levels()fungsi tersebut, misalnya

levels( data$product_code )

Jika ini bukan faktor, tetapi seharusnya, Anda dapat mengonversinya menjadi faktor terlebih dahulu dengan menggunakan factor()fungsi, mis

levels( factor( data$product_code ) )

Opsi lain, seperti yang disebutkan di atas, adalah unique()fungsinya:

unique( data$product_code )

Perbedaan utama antara keduanya (bila diterapkan ke a factor) adalah bahwa levelsvektor karakter akan dikembalikan dalam urutan level, termasuk level apa pun yang diberi kode tetapi tidak terjadi. uniqueakan mengembalikan a factordalam urutan nilai pertama kali muncul, dengan setiap level yang tidak terjadi dihilangkan (meskipun masih termasuk dalam levelsfaktor yang dikembalikan).

isapir
sumber
8

Coba gunakan fungsi duplikat dalam kombinasi dengan operator negasi "!".

Contoh:

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

Semoga membantu.

Al R.
sumber
7

Anda juga dapat menggunakan paket sqldf di R.

Z <- sqldf('SELECT DISTINCT tablename.columnname FROM tablename ')
Clay Burns
sumber