【发布时间】:2018-01-12 02:11:54
【问题描述】:
我想将两个 data.tables 合并为一个。每个表中有三列(两个坐标 x、y 和分配给坐标的值),另一个表有两列(两个坐标 x 和 y)。但是,data.tables 的坐标略有不同,所以我想合并最近的坐标。但是只有最近的最低坐标。
我想要做的事情与 Michiel (this thread) 非常相似,如果我想要最近的更低或更高,该解决方案对我有用。但是,正如我之前解释的那样,我想滚动最近的最低点,在 data.table 的函数中是 roll = Inf。
任何人知道我可以如何重写另一个线程中提出的函数,或者是否有其他函数可以帮助我。
这是一个数据示例:
DT1 = data.frame(x=c(1,2,3,4,5,6,7,8,9,9,10),y=c(11,11,11,11,11,12,12,12,12,16,15))
DT2 = data.frame(x=c(1,1,1,6,6,6,10,10),y=c(11,12,13,11,12,13,14,16), name=c("A","B","C","D","E","F","G","H"))
按照前一个线程的功能,你会得到这个:
x y name
1: 1 11 A
2: 2 11 A
3: 3 11 A
4: 4 11 D
5: 5 11 D
6: 6 12 E
7: 7 12 E
8: 8 12 E
9: 9 12 G
10: 9 16 G
11: 10 15 G
但我想要的是这样的:
x y name
1: 1 11 A
2: 2 11 A
3: 3 11 A
4: 4 11 **A** # Lowest nearest value of x:4 is 1 (A) not 6 (E)
5: 5 11 **A** # Lowest nearest value of x:5 is 1 (A) not 6 (E)
6: 6 12 E
7: 7 12 E
8: 8 12 E
9: 9 12 **E** # Lowest nearest value of x:9 is 6, and of y:12 is 12 thus E
10: 9 16 **F** # Lowest nearest value of x:9 is 6, and of y:16 is 15 thus F
11: 10 15 G
我希望这能说明我想要什么。谢谢
【问题讨论】:
-
对不起,我不认为我完全理解你的问题......你能举一个你希望达到的输出的例子吗?
-
对不起,我没说清楚,我会在我的问题中更改示例数据集
-
请测试您的代码。 DT2 报错。
-
抱歉 - 我是 stackoverflow 的新手。现已更正
标签: r dataframe merge data.table