为什么函数合并的结果大于原始数据

时间:2015-04-10 07:36:11

标签: r merge variable-length

例如,如果x是两个变量的矩阵(Time和X,长度为len1),y是两个变量的矩阵(Time和Y,长度为len2),我只想合并x和y,使用以下代码:

> x
                 Time    Value
1 2013-11-03 00:00:11 535.7680
2 2013-11-03 00:00:26 548.6214
3 2013-11-03 00:00:41 543.6477
4 2013-11-03 00:00:56 554.0778
5 2013-11-03 00:01:11 566.5635
6 2013-11-03 00:01:26 555.7684
> y
                 Time    Value
1 2013-11-03 00:00:11 455.4087
2 2013-11-03 00:00:26 457.7967
3 2013-11-03 00:00:41 455.3263
4 2013-11-03 00:00:56 461.9727
5 2013-11-03 00:01:11 460.6974
6 2013-11-03 00:01:26 466.2654

res<-merge(x,y,by="Time")
> res
                 Time  Value.x  Value.y
1 2013-11-03 00:00:11 535.7680 455.4087
2 2013-11-03 00:00:26 548.6214 457.7967
3 2013-11-03 00:00:41 543.6477 455.3263
4 2013-11-03 00:00:56 554.0778 461.9727
5 2013-11-03 00:01:11 566.5635 460.6974
6 2013-11-03 00:01:26 555.7684 466.2654

我只使用xy

的头部

为什么res的长度大于len1和len2

我只想知道如何将x和y合并为相同的滞后&#34;时间&#34;,不同滞后的x和y&#34; Time&#34;已删除

1 个答案:

答案 0 :(得分:0)

来自merge的帮助页面:

  

提取两个数据框中与指定列匹配的行,并将它们连接在一起。如果有多个匹配项,则所有可能的匹配项各占一行。

如果没有可重复的示例,我无法确定,但您的Time列可能包含重复的值。例如,参见以下示例:

A <- data.frame(a=c(1,2,3,1),b=1:4)
B <- data.frame(a=c(1,2,3,1),c=1:4)
merge(A,B,by="a")
  a b c
1 1 1 1
2 1 1 4
3 1 4 1
4 1 4 4
5 2 2 2
6 3 3 3