我遇到了一个需要合并两个数据框的项目.他们看起来像这样:
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
Run Code Online (Sandbox Code Playgroud)
我有以下代码行来合并2个数据帧:
merge.df <- merge(Data1, Data2, by.x = c( "Hour", "Minute"),
by.y = c( "Hour2", "Minute2"))
Run Code Online (Sandbox Code Playgroud)
如果两个数据集之间的可变时间(小时和分钟)没有略微偏离,那将会很有效.有没有办法让列"分钟"与"Minute2"匹配,如果它是+或 - 一分钟关闭?
我以为我可以为数据集1创建2个新列:
Data1
Traffic Source Registrations Hour Minute Minute_plus1 Minute_minus1
organic 1 6 13 14 12
social 1 8 54 55 53
Run Code Online (Sandbox Code Playgroud)
如果"Minute2"匹配"Minute","Minute_plus1"或"Minute_minus1"中的任何变量,是否可以合并2个数据帧?或者是否有更有效的方法来完成此合并?
Gre*_*gor 14
对于像这样的东西我通常转向SQL:
library(sqldf)
x = sqldf("
SELECT *
FROM Data1 d1 JOIN Data2 d2
ON d1.Hour = d2.Hour2
AND ABS(d1.Minute - d2.Minute2) <= 1
")
Run Code Online (Sandbox Code Playgroud)
根据数据的大小,您也可以加入Hour然后过滤.使用dplyr:
library(dplyr)
x = Data1 %>%
left_join(Data2, by = c("Hour" = "Hour2")) %>%
filter(abs(Minute - Minute2) <= 1)
Run Code Online (Sandbox Code Playgroud)
虽然你可以用base功能做同样的事情.
| 归档时间: |
|
| 查看次数: |
15981 次 |
| 最近记录: |