比较两个表之间的数据

时间:2015-02-22 22:15:08

标签: database r

我有两个数据表: 表格A包含交通事故,表B包含道路上的某些点(例如十字路口)。

我的想法是在小组B的点周围创建方形区域,并查找在这些区域中发生的小组A的意外。

我使用的是KROVAK坐标,例如:

Step 1: take point from group B with coo. (X=1800050 Y=6000050)
Step 2: create square area around this point (a=50m)
    Area size is: X=(1800000 ; 1800100)
                  Y=(6000000 ; 6000100)
Step 3: is point from group A in this area(is X and Y belong in this interval) ? 

最后我的问题:是否可以比较R中这两个表(组A,组B)之间的数据?并且任何人都可以给我一些建议如何跨两个表进行间隔比较?非常感谢。 :-) evz

1 个答案:

答案 0 :(得分:0)

应该可以使用sqldf。如果查看https://code.google.com/p/sqldf/#Example_4._Join中的示例11,您会看到两个数据库表由一个使用邻近度的计算字段连接:

seqdf <- data.frame(thetime=seq(100,225,5),thevalue=factor(letters))
boundsdf <- data.frame(thestart=c(110,160,200), theend=c(130,180,220), groupID=c(555,666,777))
testquery_1 <- sqldf("select seqdf.thetime, seqdf.thevalue, boundsdf.groupID 
from seqdf left join boundsdf on (seqdf.thetime <= boundsdf.theend) and (seqdf.thetime >= boundsdf.thestart)")

我对其进行了修改,以便它使用单个计算字段与具有单个位置字段的表连接:

boundsdf2 <- data.frame(loc = c(120,170,210), groupID=boundsdf$groupID)
testquery_2 <- sqldf("select seqdf.thetime, seqdf.thevalue, boundsdf2.groupID 
from seqdf left join boundsdf2 on ( abs(seqdf.thetime-boundsdf2.loc) <=10 ) ")
 #-----------
 > identical(testquery_2, testquery_1)
 [1] TRUE

因此,你应该能够在lat和long上使用两个条件的相同策略(或者两个数据帧共享的任何网格系统用于事故定位。