首页 > 解决方案 > 如何将每个 4 列的 2 个数据框合并到一个矩阵中,每个单元格返回相交

问题描述

我有 2 个数据集,我想比较 2 个数据集之间的每一列并获取它们的相交。我该怎么做?我在下面有一个示例可以更好地解释我希望返回的内容。我正在与 Rstudio 合作。

dt1 =

col1 col2 col3 col4 col5 col6
兔子
兔子 兔子

dt2=

col1 col2 col3 col4 col5 col6
兔子 狮子
长颈鹿
兔子

预期回报矩阵=

col1 col2 col3 col4 col5 col6
相交(dt1col1,dt2col1) 相交(dt1col1,dt2col2) 相交(dt1col1,dt2col3) 相交(dt1col1,dt2col4) 相交(dt1col1,dt2col5) 相交(dt1col1,dt2col6)
相交(dt1col2,dt2col1) 相交(dt1col2,dt2col2) 相交(dt1col2,dt2col3) 相交(dt1col2,dt2col4) 相交(dt1col2,dt2col5) 相交(dt1col2,dt2col6)
相交(dt1col3,dt2col1) 相交(dt1col3,dt2col2) 相交(dt1col3,dt2col3) 相交(dt1col3,dt2col4) 相交(dt1col3,dt2col5) 相交(dt1col3,dt2col6)
相交(dt1col4,dt2col1) 相交(dt1col4,dt2col2) 相交(dt1col4,dt2col3) 相交(dt1col4,dt2col4) 相交(dt1col4,dt2col5) 相交(dt1col4,dt2col6)
相交(dt1col5,dt2col1) 相交(dt1col5,dt2col2) 相交(dt1col5,dt2col3) 相交(dt1col5,dt2col4) 相交(dt1col5,dt2col5) 相交(dt1col5,dt2col6)
相交(dt1col6,dt2col1) 相交(dt1col6,dt2col2) 相交(dt1col6,dt2col3) 相交(dt1col6,dt2col4) 相交(dt1col6,dt2col5) 相交(dt1col6,dt2col6)

标签: rmatrixintersect

解决方案


尝试outer

> outer(dt1, dt2, FUN = Vectorize(function(x, y) toString(intersect(x, y))))
     col1          col2             col3       col4                  col5 
col1 "pig"         "dog, cat"       "cat, pig" "dog"                 "dog"
col2 "rabbit"      "bird"           ""         "rabbit, turtle"      ""
col3 ""            "bird, cat, dog" "cat"      "dog"                 "dog"
col4 "pig, rabbit" ""               "pig"      "rabbit, turtle"      ""
col5 "rabbit"      "dog"            ""         "dog, rabbit, turtle" "dog"
col6 "pig"         "bird, dog"      "pig"      "dog"                 "dog"
     col6
col1 "dog, pig"
col2 "bird"
col3 "bird, dog"
col4 "pig"
col5 "dog"
col6 "bird, dog, pig"

推荐阅读