2016-08-01 101 views
0

两个现有的表的一个非常小的样品在Spotfire存在:在Spotfire上使用R,如何通过在查找表中搜索最接近的值来检索值?

主表

Road Easting Northing 
M1 456252 278173 
M1 443281 389200 
M1 447205 335640 
M1 500425 233986 

查找表

CP  Easting Northing 
8219 448325 388413 
36004 457081 275396 
81549 500244 234300 
56005 447134 336976 
73366 446865 330080 
73039 505000 223710 

目标

这将是一个新的列中的结果指向最近的CP。

Road Easting Northing CP 
M1 456252 278173 36004 
M1 443281 389200 8219 
M1 447205 335640 56005 
M1 500425 233986 81549 

是否有公式或R scriopt能够返回此查找列?

我基本上试图在第二个表中的第一个表中搜索Eastings和Northings的最近值。然后通过选择最近的北部和东部查找CP(这是唯一的ID)。

有没有人有任何想法如何做到这一点?

+0

如果这是完全匹配,那么您正在寻找'merge'。类似'merge(df1,df2,by = c(“Easting”,“Northing”))' – lmo

+0

是否要特别使用R?我只问,因为在spotfire中,这很容易实现,没有R – scsimon

+0

scsimon - 我只是希望能够匹配它们,所以如果可以在不使用R的情况下完成,那将非常棒! – kc8g15

回答

0

这段代码能工作吗?

whichindex <- data.frame(
        (sapply(main$Easting, function(x) which.min(abs(x - lookup$Easting)))), 
        (sapply(main$Northing, function(y) which.min(abs(y - lookup$Northing)))) 
       ) 
output <- cbind(main,whichindex)