Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/64.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何基于R中的两个不同条件连接两个表?_R_Left Join - Fatal编程技术网

如何基于R中的两个不同条件连接两个表?

如何基于R中的两个不同条件连接两个表?,r,left-join,R,Left Join,我想在两个不同的表上执行左联接,但基于两个不同的条件。第一个条件是id应该匹配,下一个条件是时间。连接的结果应该是这两个条件的组合,但顺序是特定的 例如: 表1 COUNTRY ID TIME VALUE 2 198 01-01-2014 00:00 18 2 198 01-01-2014 00:30 17 2 198 01-01-2014 01:00 16 2 147 01-01-2014 00:00 18 2 147 01-01-2014

我想在两个不同的表上执行左联接,但基于两个不同的条件。第一个条件是id应该匹配,下一个条件是时间。连接的结果应该是这两个条件的组合,但顺序是特定的

例如:

表1

COUNTRY ID  TIME    VALUE
2   198 01-01-2014 00:00    18
2   198 01-01-2014 00:30    17
2   198 01-01-2014 01:00    16
2   147 01-01-2014 00:00    18
2   147 01-01-2014 00:30    19
2   147 01-01-2014 01:00    20
2   142 01-01-2014 00:00    22
2   142 01-01-2014 00:30    25
表2

COUNTRY IDENTITY    TIME_UTC    AMOUNT
2   198 01-01-2014 00:00    2
2   198 01-01-2014 00:30    5
2   198 01-01-2014 01:00    2
2   147 01-01-2014 00:00    6
2   147 01-01-2014 00:30    3
2   147 01-01-2014 01:00    4

现在我想左键连接表1和表2。第一个条件匹配列ID和标识,然后匹配列TIME和TIME\u UTC。

您可以先使用列ID(使用dplyr或data.Table)左键连接表1和表2,然后过滤结果,确保只保留列TIME和TIME\u UTC相等的行。

您可能需要选中
merge
命令。在控制台上尝试
?merge
。我得到一个错误:“ID”和“IDENTITY”中的错误:操作只能用于数字、逻辑或复杂类型。我不知道如何将两个参数传递给by函数。
by.x
应该传递给表1的列名。尝试
merge(表1,表2,by.x=c(“ID”,“TIME”),by.y=c(“IDENTITY”,“TIME\UTC”),all=T)
使用merge(表1,表2,by.x=c(“ID”,“TIME”),by.y=c(“IDENTITY”,“TIME\UTC”),all=T)它可以工作。但出于好奇,我尝试了左路。左联合(表1,表2,by.x=c(“ID”,“TIME”),by.y=c(“IDENTITY”,“TIME\UTC”),all=TRUE)。但它抛出了一个错误:Joining by:“IDENTITY”错误:不支持POSIXlt。。这是因为数据类型问题吗?ID和IDENTITY中的值都是int类型。您从哪个包获得了
left\u join
?我似乎没有把它放在
base