我有一个数据框,其中包含一个月内在一个城市发生的所有事故及其位置(大约10,000个位置坐标)的列表。
Accident ID Name latitudes longitudes Intensity time
1 citycentre -25.5567 +54.00087 minor morning
2
3
4
我需要发现在一组经度和纬度之间发生了多少次事故(例如,在纬度25和S&27; S< S< S< 54 E和55 E'之间)
有没有办法在R上做这样的事情 我是R的新手,所以任何帮助都会非常感激。我必须对来自大量月份和不同坐标对之间的数据进行相同的处理。因此运行循环并使用计数器变量将非常耗时。
如果我将学习区域变成多边形形状文件,是否有可用的功能可以告诉我事故的次数
答案 0 :(得分:2)
我确定有很多方法可以做到这一点。这里只有一个使用非equi连接:
library(data.table)
points <- fread("Accident_ID Name latitudes longitudes Intensity time
1 citycentre -28.5567 +54.50087 minor morning
2 citycentre -28.5567 +54.50087 minor morning
3 citycentre 0 0 minor morning
4 citycentre 100 100 minor morning")
extents <- data.table(
extent_id=1:3,
x1=c(-30, -20, 1000),
x2=c(-27, 20, 1100),
y1=c(54, -54, 100),
y2=c(55, 55, 100)
)
points[extents, on=.(latitudes>=x1, latitudes<=x2, longitudes>=y1, longitudes<=y2)][
,.(N=sum(!is.na(Accident_ID))), by=extent_id]
# extent_id N
# 1: 1 2
# 2: 2 1
# 3: 3 0