【发布时间】:2012-06-22 13:31:34
【问题描述】:
我对 R 很陌生,并且对使用变量之一的范围值在两个数据帧之间进行子集和重组有疑问。所以我有两个这样的数据框:
x y
[1,] 79.00 19.63
[2,] 79.01 19.58
[3,] 79.02 19.57
[4,] 79.03 19.58
[5,] 79.04 19.60
[6,] 79.05 19.65
[7,] 79.06 19.67
[8,] 79.07 19.70
[9,] 79.08 19.67
[10,] 79.09 19.72
和
id min_x max_x
[1,] 7G005-1010-10 79.01 79.06
[2,] 7G100-0001-10 79.02 79.09
[3,] 8S010-1201-10 79.06 79.09
我的目的是像这样将两者结合起来:
id x y
7G005-1010-10 79,01 19,58
7G005-1010-10 79,02 19,57
7G005-1010-10 79,03 19,58
7G005-1010-10 79,04 19,6
7G005-1010-10 79,05 19,65
7G005-1010-10 79,06 19,7
7G100-0001-10 79,02 19,57
... ... ...
正如您在我的数据帧的输出中看到的那样,我尝试使用 data.table 包来找到解决问题的方法。
好吧,如果有人能告诉我如何处理它(有或没有data.table)!
提前谢谢你。
对不起英语不好。
【问题讨论】:
-
那么,你想根据 x 的范围来获取 id 吗?如果这就是你想要的,那么范围就会重叠!第一个 id 与第二个重叠,第二个也与第三个重叠。你是怎么处理的?
-
感谢您提出非常明确的问题,包括输入和所需输出!这很棒。 :)
-
使用
data.table版本>=v1.9.8(2016年11月25日发布到CRAN),可以使用DT1[DT2, on=.(x>=min_x, x<=max_x), nomatch=0L, .(id, x=x.x, y=x.y)]执行非等连接
标签: r data.table