我是R语言的新手,在我的项目中,我需要绘制与特定事件相关的热图。这个事件有大约200万个观测值,每个观测值都有一个经纬度坐标。此外,我已经将地图数据转换为数据框,该数据框包含71个区域,每个区域都用一组坐标定义。我需要确定事件的哪个观测值属于哪个区域。我正在使用以下代码:
for (row in 1:nrow(data2015)){
point.x=data2015[row,"Latitude"]
point.y=data2015[row,"Longitude"]
for (name in names(polygonOfdis)){
if (point.in.polygon(point.x, point.y, polygonOfdis[[name]]$lat, polygonOfdis[[name]]$long, mode.checked=FALSE)){
count[[name]]<-count[[name]]+1
break
}
}
}
data2015是事件的数据集,polygonOfdis是每个区域的数据集。
对于小型数据集,此算法效果良好,但对于我的数据集,它肯定会运行超过十个小时甚至更长时间(对于当前大小的数据集的1/400,此算法运行时间为1到2分钟)。我想知道有没有更好的方法来查找哪个观察值属于哪个区域?我的问题是point.in.polygon函数需要太多时间,我想知道是否有其他函数可以完成此操作?
注:当前数据实际上只有我需要处理的真实数据的1/10,因此我真的需要一种更快的方法来处理这个问题。