在融化期间或之后分配组级索引

时间:2010-03-03 16:26:37

标签: r reshape

我的数据框有这样的间隙:

           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

当我运行melt(),时,我删除了NA单元格: melt(df, na.rm = TRUE),但我想添加一个新列,其中包含每个值在variable组中的位置的行号。

所以我的结果看起来像这样:

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

我希望它们看起来像这样:

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

在熔化过程之前,期间或之后生成这些内部行号的最佳方法是什么?

1 个答案:

答案 0 :(得分:3)

查看at this previous question关于自动递增的群组计数。我认为这就是你想要做的。如果是这样,可能最容易(至少对我而言)与plyr进行单独的操作。

这是要点:

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