Maintenant, je le fais en bouclant par un vecteur trié, mais peut-être il y a un moyen plus rapide d'utiliser les fonctions R internes, et peut-être que je n'ai même pas besoin de trier.comment classer des valeurs dans un vecteur et leur donner des valeurs correspondantes?
vect = c(41,42,5,6,3,12,10,15,2,3,4,13,2,33,4,1,1)
vect = sort(vect)
print(vect)
outvect = mat.or.vec(length(vect),1)
outvect[1] = counter = 1
for(i in 2:length(vect)) {
if (vect[i] != vect[i-1]) { counter = counter + 1 }
outvect[i] = counter
}
print(cbind(vect,outvect))
vect outvect
[1,] 1 1
[2,] 1 1
[3,] 2 2
[4,] 2 2
[5,] 3 3
[6,] 3 3
[7,] 4 4
[8,] 4 4
[9,] 5 5
[10,] 6 6
[11,] 10 7
[12,] 12 8
[13,] 13 9
[14,] 15 10
[15,] 33 11
[16,] 41 12
[17,] 42 13
Le code est utilisé pour faire des graphiques avec des entiers sur l'axe X au lieu des données réelles parce que pour moi la distance entre les valeurs de X n'est pas important. Donc, dans mon cas, la plus petite valeur x est toujours 1. et la plus grande est toujours égale au nombre de valeurs X présentes. - edit: en raison d'un malentendu à propos de ma question, j'ai ajouté un code auto-suffisant avec sortie.
Cette question n'est pas claire car elle est actuellement libellée. A quoi ressemblent vos données d'entrée ('csvdata')? À quoi le produit final est-il censé ressembler? Est-ce que vous essayez juste d'obtenir une tabulation des valeurs uniques dans csvdata? Si oui, regardez 'table()' – Chase
mes données sont une matrice de nombres étiquetés X et Y, mais une seule colonne de csvdata m'interesse ici, c'est X, et z est un nouveau vecteur contenant des valeurs numérotées de csvdata [ , 'X'] – rsk82
désolé, mais je ne vois pas comment le facteur est capable de faire ce que j'ai besoin – rsk82