gpt4 book ai didi

r - 两个数据框之间的多列相交

转载 作者:行者123 更新时间:2023-12-04 22:31:12 25 4
gpt4 key购买 nike

我有两个数据框,每个数据框有 2 列。例如:

df.1 = data.frame(col.1 = c("a","a","a","a","b","b","b","c","c","d"), col.2 = c("b","c","d","e","c","d","e","d","e","e"))
df.2 = data.frame(col.1 = c("b","b","b","a","a","e"), col.2 = c("a","c","e","c","e","c"))

我正在寻找一种有效的方法来查找df.1的每个col.1 col.2行对的df.2中的行索引。请注意,df.1 中的行对可能会以相反的顺序出现在 df.2 中(例如 df.1[1,],即 "a","b"在 df.2[1,] 中出现为 "b “,“一种”)。这对我来说无关紧要。换句话说,只要 df.1 中的行对以任何顺序出现在 df.2 中,我希望它在 df.2 中的行索引,否则它应该返回 NA。还有一点需要注意,两个数据框中的行对是唯一的——这意味着每个行对只出现一次。

因此,对于这两个数据帧,返回向量将是:
c(1,4,NA,5,2,NA,3,NA,6,NA)

最佳答案

也许使用 dplyr 的东西包裹:

首先制作引用框架

  • 使用 row_number()根据行索引有效地编号。
  • 使用 select “翻转”列变量。

  • 两半:
    df_ref_top <- df.2 %>% mutate(n=row_number())
    df_ref_btm <- df.2 %>% select(col.1=col.2, col.2=col.1) %>% mutate(n=row_number())

    然后绑定(bind)在一起:
    df_ref <- rbind(df_ref_top,df_ref_btm)

    左连接和选择向量:

    给出答案
    left_join(df.1,df_ref)$n

    关于r - 两个数据框之间的多列相交,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23821556/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com