【发布时间】:2018-01-06 11:59:51
【问题描述】:
在 R 中,我有两个包含列表列的数据框
d1 <- data.table(
group_id1=1:4
)
d1$Cat_grouped <- list(letters[1:2],letters[3:2],letters[3:6],letters[11:12] )
和
d_grouped <- data.table(
group_id2=1:4
)
d_grouped$Cat_grouped <- list(letters[1:5],letters[6:10],letters[1:2],letters[1] )
我想根据d1$Cat_grouped 中的向量包含在d_grouped$Cat_grouped 中的向量中来合并这两个data.tables
更准确地说,可能有两个匹配条件:
a)d1$Cat_grouped的每个向量的所有元素必须在d_grouped$Cat_grouped的匹配向量中
导致以下匹配:
result_a <- data.table(
group_id1=c(1,2)
group_id2=c(1,1)
)
b)d1$Cat_grouped的每个向量中至少有一个元素必须在d_grouped$Cat_grouped的匹配向量中
导致以下匹配:
result_b <- data.table(
group_id1=c(1,2,3,3),
group_id2=c(1,1,1,2)
)
如何实现 a) 或 b) ?最好以 data.table 的方式。
EDIT1:添加了a)和b)的预期结果
EDIT2:向 d_grouped 添加了更多组,因此分组变量重叠。这打破了一些建议的解决方案
【问题讨论】:
标签: r list merge data.table