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

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

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).


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.


7

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

Z <- sqldf('SELECT DISTINCT tablename.columnname FROM tablename ')
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.