IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

R Discussion :

Numéroter les éléments d'un facteur par levels


Sujet :

R

  1. #1
    Membre régulier
    Inscrit en
    Juillet 2009
    Messages
    155
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 155
    Points : 77
    Points
    77
    Par défaut Numéroter les éléments d'un facteur par levels
    Bonjour,

    Je cherche à numéroter chaque éléments d'un facteur, ou d'une colonne d'un dataframe, en recommençant la numérotation pour chaque nouveau facteur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    toto   1
    toto   2
    toto   3
    tata   1 
    tata   2
    tutu   1
    tutu   2
    tutu   3
    tutu   4
    C'est pourtant assez simple mais je ne vois pas du tout comment m'y prendre.
    Quelle fonction devrais-je utiliser ? Ou quelle méthode employer ? Afin que ceci soit optimisé pour R.

    D'avance merci de vos indications !

  2. #2
    Membre averti
    Homme Profil pro
    Data scientist
    Inscrit en
    Février 2017
    Messages
    211
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Data scientist
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2017
    Messages : 211
    Points : 343
    Points
    343
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
     
    # il faut que ta variable soit triée
    test = data.frame(x =  c( rep("Tata" , 3) , rep("Titi" , 2), rep("tutu" , 4)))
     
    test$y = rep()
    test$y[1] = 1
    for( i in 2:nrow(test))
    {test$y[i] = ifelse( test$x[i] != test$x[i-1] , 1 ,  test$y[i-1] + 1)}

  3. #3
    Membre régulier
    Inscrit en
    Juillet 2009
    Messages
    155
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 155
    Points : 77
    Points
    77
    Par défaut
    En effet, cette solution marche très bien, merci !
    Mais il ne semble pas que les données aient besoin d'être triées.

    Mais dans les faits, les quantités de données à traiter peuvent être gigantesques et je recherchais idéalement une solution par vectorisation plutôt que par des boucles for.

    Alors si quelqu'un a des idées, des pistes que je pourrais explorer, je suis preneur.

  4. #4
    Membre averti
    Homme Profil pro
    Data scientist
    Inscrit en
    Février 2017
    Messages
    211
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Data scientist
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2017
    Messages : 211
    Points : 343
    Points
    343
    Par défaut
    L'utilisation de Rank() sur sql librairy sqldf peut aussi régler le soucis.

Discussions similaires

  1. Réponses: 2
    Dernier message: 29/10/2008, 11h13
  2. Les éléments de formulaire par dessus un DIV
    Par zooffy dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 20/07/2007, 23h28
  3. Réponses: 2
    Dernier message: 17/06/2007, 19h17
  4. Ordonner les éléments par rapport à une sélection ?
    Par brunoperel dans le forum Langage SQL
    Réponses: 3
    Dernier message: 22/03/2007, 12h13
  5. Réponses: 5
    Dernier message: 22/02/2006, 17h32

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo