2017-12-14 48 views
-1

한 달 동안 한 도시에서 발생한 모든 사고와 그 위치 (약 10,000 개의 위치 좌표) 목록을 포함하는 데이터 프레임이 있습니다.내 데이터 프레임의 포인트 중 몇 개가 영역 모양 파일과 겹치고 있는지 확인합니다.

Accident ID Name   latitudes longitudes Intensity time 
1   citycentre  -25.5567 +54.00087  minor morning 
2   
3 
4 

내가 경도와 위도의 주어진 사이에 일어났다 어떻게 그 사고의 많은 찾아야합니다. (예 : 위도의 25 년대와 27 년대 사이에, 54 E 55 E를 lontitudes)

방법이 있나요 R과 같은 일을 할 수 나는 R에 새롭기 때문에 어떤 도움을 많이 주시면 감사하겠습니다. 많은 개월의 데이터와 다른 좌표 쌍 사이에서 동일한 프로세스를 수행해야합니다. 루프를 실행하고 카운터 변수는 매우 많은 시간이 소요됩니다.

내가 다각형 모양 파일

+0

안녕하십니까. a. 시도한 것을 보여주고 b.) 최소한의 재현 가능한 예제를 제공하십시오.이 예제는 추가 수정없이 복사, 붙여 넣기 및 실행할 수 있습니다. 그렇지 않으면, 당신은 downvotes 및/또는 답변을 얻을 수 있습니다. – lukeA

답변

2

내가 할 수있는 많은 방법이 확신으로 내 연구 지역을하면 나에게 사고의 수를 알려줍니다 그 기능을 사용할 수 있습니다. 비공개 조인을 사용하는 것은 다음과 같습니다.

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