gpt4 book ai didi

r - 如何在不合并的情况下匹配多列?

转载 作者:行者123 更新时间:2023-12-05 09:26:10 25 4
gpt4 key购买 nike

我有这两个 df:

ID1 <- c("TRZ00897", "AAR9832", "NZU44447683209", "sxc89898989M", "RSU765th89", "FFF")
Date1 <- c("2022-08-21","2022-03-22","2022-09-24", "2022-09-21", "2022-09-22", "2022-09-22")
Data1 <- data.frame(ID1,Date1)

ID <- c("RSU765th89", "NZU44447683209", "AAR9832", "TRZ00897","ERD895655", "FFF", "IUHG0" )
Date <- c("2022-09-22","2022-09-21", "2022-03-22", "2022-08-21", "2022-09-21", "2022-09-22", "2022-09-22" )
Data2 <- data.frame(ID,Date)

我试图获得完全匹配。如果两个 df 中的 ID 和 Date 相同,则为完全匹配,例如:“TRZ00897”“2022-08-21”是完全匹配,因为它存在于两个 df 中

用下面一行代码:

match(Data1$ID1, Data2$ID) == match(Data1$Date1, Data2$Date)

输出是:

TRUE  TRUE    NA    NA  TRUE FALSE

显然最后一个不应该是 FALSE 因为“FFF”“2022-09-22”在两个 df 中。它为 FALSE 的原因是,日期“2022-09-22”已经出现在索引位置 1 的 Data2 中。

match(Data1$ID1, Data2$ID)
4 3 2 NA 1 6

match(Data1$Date1, Data2$Date)
4 3 NA 2 1 1

所以最后,索引位置 6 和 1 不相等 --> FALSE

我怎样才能改变这个?我应该使用哪个函数来获得正确答案。

请注意,我不需要合并或加入等。我真的在寻找可以检测这些模式的函数。

最佳答案

合并列然后匹配:

match(paste(Data1$ID1, Data1$Date1), paste(Data2$ID, Data2$Date))
# [1] 4 3 NA NA 1 6

要获得逻辑输出,请使用 %in%:

paste(Data1$ID1, Data1$Date1) %in% paste(Data2$ID, Data2$Date)
# [1] TRUE TRUE FALSE FALSE TRUE TRUE

关于r - 如何在不合并的情况下匹配多列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74206233/

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