Liste des valeurs distinctes dans un vecteur dans R

97

Comment puis-je lister les valeurs distinctes dans un vecteur où les valeurs sont réplicatives? Je veux dire, de la même manière que l'instruction SQL suivante:

SELECT DISTINCT product_code
FROM data
Mehper C. Palavuzlar
la source

Réponses:

168

Voulez-vous dire 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
la source
12

Si les données sont en fait un, factorvous pouvez utiliser la levels()fonction, par exemple

levels( data$product_code )

Si ce n'est pas un facteur, mais qu'il devrait l'être, vous pouvez d'abord le convertir en facteur en utilisant la factor()fonction, par exemple

levels( factor( data$product_code ) )

Une autre option, comme mentionné ci-dessus, est la unique()fonction:

unique( data$product_code )

La principale différence entre les deux (lorsqu'ils sont appliqués à a factor) est que levelsrenvoie un vecteur de caractères dans l'ordre des niveaux, y compris tous les niveaux qui sont codés mais qui ne se produisent pas. uniquerenverra a factordans l'ordre dans lequel les valeurs apparaissent en premier, avec tous les niveaux non existants omis (bien que toujours inclus dans levelsle facteur renvoyé).

isapir
la source
8

Essayez d'utiliser la fonction dupliquée en combinaison avec l'opérateur de négation "!".

Exemple:

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

J'espère que cela pourra aider.

Al R.
la source
7

Vous pouvez également utiliser le package sqldf dans R.

Z <- sqldf('SELECT DISTINCT tablename.columnname FROM tablename ')
Brûlures d'argile
la source