【问题标题】:Why the result of function merge is larger than the original data [duplicate]为什么函数合并的结果大于原始数据[重复]
【发布时间】:2015-04-10 07:36:10
【问题描述】:

比如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合并,不同滞后“时间”的x和y被删除

【问题讨论】:

  • 提供reproducible data。尝试使用虚拟数据,nrow(res) 小于nrow(x)nrow(y)
  • @DominicComtois 默认合并为all = FALSE
  • 比较,对于 x 和 y,length(x$Time)length(unique(x$Time)) - 然后你会看到可能有一些时间是重复的,解释了你的结果数据框的更大的 nrow。
  • @JasonV 我怎样才能删除这些重复的时间
  • 我想我不能为你回答这个问题......如果整行重复,那么我不明白为什么不这样做,但如果你在其他变量上有不同的值(s ),那么您必须弄清楚是否要保留所有内容,如果不保留,则要删除哪一个!

标签: r merge variable-length


【解决方案1】:

来自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

【讨论】:

  • 我是stackoverflow的新人。我怎样才能上传数据??在数据中,时间不同,也许不是问题
  • 最简单的方法是将dput(x)dput(y) 的结果粘贴到您的问题中。
  • 数据比较大,贴不出来
  • 也许只是 head(x)head(y) 将是一个开始...
猜你喜欢
  • 2018-03-09
  • 2019-10-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-07-31
  • 2020-01-20
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多