根据2个来源中的存在/不存在添加一列

时间:2018-06-20 12:38:38

标签: r grep data.table pattern-matching multiple-columns

我需要根据每个单独记录的存在/不存在,在现有记录对表中增加一个存在/不存在的附加列。因此,如果成对的两个记录都存在,那么该对也将存在。我正在专门寻找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]))]

有什么想法吗?

0 个答案:

没有答案