gpt4 book ai didi

r - 如何根据两列之间的条件连接数据框

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

我被困在一个需要合并两个数据框的项目中。它们看起来像这样:

Data1
Traffic Source Registrations Hour Minute
organic 1 6 13
social 1 8 54

Data2
Email Hour2 Minute2
test@domain.com 6 13
test2@domain2.com 8 55

我有以下代码行来合并 2 个数据帧:
merge.df <- merge(Data1, Data2, by.x = c( "Hour", "Minute"),
by.y = c( "Hour2", "Minute2"))

如果两个数据集之间的可变时间(小时和分钟)没有稍微偏离,它会很好用。有没有办法让“分钟”列与“分钟 2”相匹配,如果它是 + 或 - 一分钟?

我以为我可以为数据集一​​创建 2 个新列:
Data1
Traffic Source Registrations Hour Minute Minute_plus1 Minute_minus1
organic 1 6 13 14 12
social 1 8 54 55 53

如果“Minute2”与“Minute”、“Minute_plus1”或“Minute_minus1”中的任何变量相匹配,是否可以合并 2 个数据帧?或者有没有更有效的方法来完成这种合并?

最佳答案

对于这样的事情,我通常会求助于 SQL:

library(sqldf)
x = sqldf("
SELECT *
FROM Data1 d1 JOIN Data2 d2
ON d1.Hour = d2.Hour2
AND ABS(d1.Minute - d2.Minute2) <= 1
")

根据您的数据大小,您也可以只加入 Hour 然后过滤。使用 dplyr :
library(dplyr)
x = Data1 %>%
left_join(Data2, by = c("Hour" = "Hour2")) %>%
filter(abs(Minute - Minute2) <= 1)

虽然你可以用 base 函数做同样的事情。

关于r - 如何根据两列之间的条件连接数据框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29927179/

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