【发布时间】:2015-03-20 08:35:43
【问题描述】:
我的问题和上一个问题Fastest way to add rows for missing values in a data.frame?类似
当最小/最大值因组而异时,我不知道如何添加用“NA”填充的行。
> red<-data.frame(project = c(6, 6, 6, 6, 6, 9, 9, 9), period =c(1, 2, 5:7, 2, 4, 5), v3=letters[1:8], v4=c("red", "yellow", recursive = T))
> red
project period v3 v4
1 6 1 a red
2 6 2 b yellow
3 6 5 c red
4 6 6 d yellow
5 6 7 e red
6 9 2 f yellow
7 9 4 g red
8 9 5 h yellow
我希望它看起来像:
project period v3 v4
6 1 a red
6 2 b yellow
6 3 NA NA
6 4 NA NA
6 5 c red
6 6 d yellow
6 7 e red
9 2 f yellow
9 3 NA NA
9 4 g red
9 5 h yellow
当我使用时
library(data.table)
DT=as.data.table(red)
setkey(DT, project, period)
DT[CJ(unique(project), seq(min(period), max(period)))]
它使每个项目组有7个时期;项目 6 应该有周期 1-7,但项目 9 应该有周期 2-5。
我试过摆弄.SD[ which.max(period)], by=project],但没有雪茄。
我认为这应该是 seq() 中的简单内容,但我尝试了 seq(min(period, by=project)) 却没有运气
谢谢!
【问题讨论】:
标签: r data.table plyr