2010-03-03 9 views
1

I ont une trame de données avec des écarts comme celui-ci:Affecter des indices au niveau du groupe pendant ou après la fonte

  Var1 Var2 Var3 
1   NA  NA  NA 
2   NA  NA  NA 
3   NA  NA  NA 
4   NA 0.06703  NA 
5   NA 0.08639  NA 
6   NA 0.19023 0.02322 
7   NA 0.31764 0.08058 
8   NA 0.44426 0.15081 
9   NA 0.37529 0.29595 
10   NA 0.40029 0.29274 
11   NA 0.33828 0.39168 
12  0.01595 0.31432 0.43192 
13  0.05217 0.28560 0.48150 
14  0.07196 0.32588 0.56065 
15  0.08771 0.26301 0.68131 

Quand je lance melt(), je retire les cellules NA: melt(df, na.rm = TRUE), mais je voudrais ajouter un nouveau colonne qui contient un numéro de ligne pour la position de chaque valeur dans son groupe variable.

donc mes résultats se présentent comme suit:

variable value 
    Var1 0.01595 
    Var1 0.05217 
    Var1 0.07196 
    Var1 0.08771 
    Var2 0.06703 
    Var2 0.08639 
...etc 

et je veux qu'ils se présentent comme suit:

variable value index 
    Var1 0.01595 1 
    Var1 0.05217 2 
    Var1 0.07196 3 
    Var1 0.08771 4 
    Var2 0.06703 1 
    Var2 0.08639 2 
...etc 

Quelle est la meilleure façon de générer ces numéros de ligne internes, que ce soit avant, pendant, ou après le processus de fusion?

Répondre

3

Jetez un coup d'oeil at this previous question sur les comptes de cohortes auto-incrémentés. Je pense c'est ce que vous voulez faire. Si oui, probablement le plus facile (au moins pour moi) de le faire comme une opération séparée avec plyr.

est ici l'essentiel:

ddply(df, .(variable), function(x) data.frame(x, NewID=1:nrow(x))) 
+0

Ce fil a certainement la réponse. Merci. –

+0

Pour la postérité: 'ddply (df,. (Variable), fonction (x) data.frame (x, NewID = 1: nrow (x)))' –

+0

bien pour la postérité je pourrais aussi bien le mettre dans la réponse;) –

Questions connexes