我有一个包含许多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循环来做到这一点,但无法让它正常工作。如果可能的话,我希望通过申请来做一些指导。
答案 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