使用R data.table中具有唯一行的两列进行查找

时间:2014-04-17 13:20:43

标签: r data.table

我想知道是否可以使用两列在R data.table中进行查找。这是一个失败的小实验:

x <- data.table(A = c("a", "a", "b", "b", "c", "c"),
                D = c( 1,   2,   1,   2,   4,   5))
DT <- data.table(A = c("a", "a", "b", "b"),
                D = c( 1,   2,   1,   2))
setkey(DT, A, D)

DT[J(x$A, x$D), ]  # Same as below, thanks to ilir, I thought it returns an error previously
DT[J(x$A, x$D), , allow.cartesian=TRUE] 
# Return:
#    A D
# 1: a 1
# 2: a 2
# 3: b 1
# 4: b 2
# 5: c 4 # <- ideally (NA NA) or (c NA)
# 6: c 5 # <- ideally (NA NA) or (c NA)

在此实验中,DT中的行是唯一的,但是,两列都有重复的条目。当调用DT [J(x $ A,x $ D),]时,我想做的是查找表DT,因此我希望结果只有DT中的条目,但是,显然情况并非如此。 / p>

使用两列作为键进行查找是否有效?

1 个答案:

答案 0 :(得分:0)

感谢ilir,以下代码有效:

x <- data.table(A = c("a", "a", "b", "b", "c", "c"),
                D = c( 1,   2,   1,   2,   4,   5))
DT <- data.table(A = c("a", "a", "b", "b"),
                 D = c( 1,   2,   1,   2))
DT[, aux := 1L]
setkey(DT, A, D)
DT[J(x$A, x$D), ]

inx <- !is.na(DT[J(x$A, x$D), ]$aux)