我有兴趣将所有缺失的行插入到数据表中,以获得2列的 new 值范围。
示例,dt1[,a]
的值为1到5,dt1[,b]
也是如此,但我不仅希望所有成对的组合出现在a和b列中,而且所有组合将出现在新定义的范围内,例如改为1到7。
# Example data.table
dt1 <- data.table(a=c(1,1,1,1,2,2,2,2,3,3,3,4,4,4,4,4,5,5,5),
b=c(1,3,4,5,1,2,3,4,1,2,3,1,2,3,4,5,3,4,5),
c=sample(1:10,19,replace=T))
setkey(dt1,a,b)
# CJ in data.table will create all rows to ensure all
# pair wise combinations are present (using the nominated columns).
dt1[CJ(a,b,unique=T)]
以上情况很好,但只会在指定栏中使用最大值和最小值。我希望插入的行能够为我提供新的指定范围之间的所有组合,例如:将会有49行。
# the following is a temporary workaround
template <- data.table(a1=rep(1:7,each=7),b1=rep(1:7,7))
setkey(template,a1,b1)
full <- dt1[template]
答案 0 :(得分:2)
我们可以将一系列值传递给'a'
的'CJ',而不是'a'列中已有的值。{{1}}