Liste valores distintos em um vetor em R

97

Como posso listar os valores distintos em um vetor onde os valores são replicativos? Quero dizer, de forma semelhante à seguinte instrução SQL:

SELECT DISTINCT product_code
FROM data
Mehper C. Palavuzlar
fonte

Respostas:

168

Você quer dizer 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
fonte
12

Se os dados forem realmente um factor, você pode usar a levels()função, por exemplo

levels( data$product_code )

Se não for um fator, mas deveria ser, você pode convertê-lo em fator primeiro usando a factor()função, por exemplo

levels( factor( data$product_code ) )

Outra opção, conforme mencionado acima, é a unique()função:

unique( data$product_code )

A principal diferença entre os dois (quando aplicado a factor) é que levelsretornará um vetor de caracteres na ordem dos níveis, incluindo todos os níveis que estão codificados, mas não ocorrem. uniqueretornará a factorna ordem em que os valores aparecem pela primeira vez, com quaisquer níveis não ocorrentes omitidos (embora ainda incluídos em levelsdo fator retornado).

isapir
fonte
8

Tente usar a função duplicada em combinação com o operador de negação "!".

Exemplo:

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

Espero que ajude.

Al R.
fonte
7

Você também pode usar o pacote sqldf em R.

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