Atribuir índices em nível de grupo durante ou após derreter [duplicado

StackOverflow https://stackoverflow.com/questions/2372992

  •  24-09-2019
  •  | 
  •  

Pergunta

Esta pergunta já tem uma resposta aqui:

Eu tenho um quadro de dados com lacunas como esta:

           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

Quando eu corro melt(), Eu removo as células NA:melt(df, na.rm = TRUE), mas eu gostaria de adicionar uma nova coluna que contém um número de linha para a posição de cada valor em seu variable grupo.

Então, meus resultados são assim:

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

E eu quero que eles fiquem assim:

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

Qual é a melhor maneira de gerar esses números internos de linha, seja antes, durante ou após o processo de fusão?

Foi útil?

Solução

Dê uma olhada Nesta pergunta anterior sobre contagens de coorte incrementadas automáticas. EU acho É isso que você quer fazer. Nesse caso, provavelmente mais fácil (pelo menos para mim) para fazer isso como uma operação separada com Plyr.

Aqui está a essência:

ddply(df, .(variable), function(x) data.frame(x, NewID=1:nrow(x))) 
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top