我需要根据每个单独记录的存在/不存在,在现有记录对表中增加一个存在/不存在的附加列。因此,如果成对的两个记录都存在,那么该对也将存在。我正在专门寻找data.table
方法。
require(data.table)
set.seed(10)
l <- as.data.table(paste("item", LETTERS, sep = ""))
l[,state := sample(0:1, nrow(l), replace = T)]
x <- l[,.(sample(V1, 15, replace = T), sample(V1, 15, replace = T))]
下面的表x
应该包含一个额外的列,该列基于构成该对的每个项目而存在的每对存在1,否则为0。
EDIT
Ryan发布了一个可能的解决方案:
x[, present := Reduce(`&`, lapply(.SD, `%in%`, l[state == 1, V1]))]
我希望能够使用%like%
,但它似乎不能以相同的方式工作。基本上,如果l
包含itemX (itemX.1)
且x
具有itemX
作为一对的一部分,我仍然希望它为该观察返回TRUE
。
x[, present := Reduce(`&`, lapply(.SD, `%like%`, l[state == 1, V1]))]
有什么想法吗?