我有一个数据框,其中包含许多项目 + 他们的开始日期 + 他们的坐标(长/纬度),我有一个数据框,其中包含一些(虚构的)受访者 + 他们接受调查的日期 + 他们的坐标:
respond_id<- c(1:5)
survey_year<- c(2007, 2005, 2008, 2004, 2005)
lat_1<- c(53.780928, 54.025200, 53.931432, 53.881048, 54.083359)
long_1<- c(9.614991, 9.349862, 9.473498, 10.685581, 10.026894)
project_id<- c(1111:1114)
year_start<- c(2007, 2007, 2006, 2008)
lat_2<- c(54.022881, 54.022881, 53.931753, 53.750523)
long_2<- c(9.381104, 9.381104, 9.505700, 9.666336)
survey<- data.frame(respond_id, survey_year, lat_1, long_1)
projects<- data.frame(project_id, year_start, lat_2, long_2)
现在,我想创建一个新的变量survey$project_nearby来计算受访者附近(这里:5 公里)的项目数量。所以数据框survey
应该看起来像这样(可能的其他结果):
> survey
respond_id survey_year lat_1 long_1 projects_nearby
1 1 2007 53.780928 9.614991 0
2 2 2005 54.025200 9.349862 0
3 3 2008 53.931432 9.473498 1
4 4 2004 53.881048 10.685581 0
5 5 2005 54.083359 10.026894 0
需要特别注意项目的开工年份和调查的年份:如果2007年被访者问到,但附近的项目是2008年完成的,这个项目自然不能算作附近的项目。
我想创建一个距离矩阵,然后只计算包含小于 5 公里距离的行数......但我不知道如何创建这个距离矩阵。也许 for 循环会更容易?谁能帮助我或给我一个提示,这样做的代码是什么?
编辑:我编辑了survey$projects_nearby 的预期值。现在,这些值应该与位于相应受访者附近的实际项目数量相匹配。