我有两个数据表:
表格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
答案 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上使用两个条件的相同策略(或者两个数据帧共享的任何网格系统用于事故定位。