我有一个包含多个因素的数据表,例如:
dt <- data.table(station=c(1,1,2,2,3), station.type=c("X","X","Y","Y","Y"), stage=c("A","B","A","B","A"), value=10:14)
station station.type stage value
1: 1 X A 10
2: 1 X B 11
3: 2 Y A 12
4: 2 Y B 13
5: 3 Y A 14
每个电台都与一个类型相关联(我的实际数据有超过50个电台和10种类型)。在该示例中,组合站3 /阶段B丢失。我想为缺少的组合添加行,同时保留与工作站关联的类型。
我是从Matt Dowle对这个问题的回答开始的: Fastest way to add rows for missing values in a data.frame?
setkey(dt, station, stage)
dt[CJ(station, stage, unique=TRUE)]
station station.type stage value
1: 1 X A 10
2: 1 X B 11
3: 2 Y A 12
4: 2 Y B 13
5: 3 Y A 14
6: 3 NA B NA
但是我必须与原始数据表进行另一次合并以填写每个站的类型。
在一行中是否有办法实现这一切 - 例如:
dt[CJ(cbind(station, station.type), stage, unique=TRUE)]
(当然这不起作用,因为CJ将向量作为参数)
答案 0 :(得分:4)
以这种方式:
dt[, .SD[.(stage=c("A", "B")), on="stage"], by=.(station, station.type)]