R中的回填数据框基于最大数量

时间:2016-04-25 21:22:35

标签: r

我有一个包含许多id和max值的数据框。

df <- data.frame(id = c("a", "b", "c"), max.number = c(0, 6, 4))

  id max.number
1  a          0
2  b          6
3  c          4

我想创建一个新的数据框,为每个id回填到零。它看起来像是:

  id     number
1  a          0
2  b          0
3  b          1
4  b          2
5  b          3
6  b          4
7  b          5
8  b          6
9  b          0
10 c          1
11 c          2
12 c          3
13 c          4

我试图通过嵌套的for循环来做到这一点,但无法让它正常工作。如果可能的话,我希望通过申请来做一些指导。

1 个答案:

答案 0 :(得分:1)

使用data.table表格非常容易:

# install.packages("data.table")
library(data.table)

df <- data.frame(id = c("a", "b", "c"), max.number = c(0, 6, 4))
dt <- as.data.table(df) 
# or directly: 
# dt <- data.table(id = c("a", "b", "c"), max.number = c(0, 6, 4))
dt[, .(number=seq(0, max.number)), by=id]

输出:

    id number
 1:  a      0
 2:  b      0
 3:  b      1
 4:  b      2
 5:  b      3
 6:  b      4
 7:  b      5
 8:  b      6
 9:  c      0
10:  c      1
11:  c      2
12:  c      3
13:  c      4