我有许多渔船的轨道,我正试图用R来检测它们的运动中的某种模式。在这样做的时候,我已经达到了我已经丢弃了所需模式所在的轨道的所有点的点。没有发生在给定的时间窗口内,我留下了剩余的地理参考点。这些点具有相关的得分值,其测量所需图案的“强度”。
track_1 [1:10,]:
LAT LON SCORE
1 32.34855 -35.49264 80.67
2 31.54764 -35.58691 18.14
3 31.38293 -35.25243 46.70
4 31.21447 -35.25830 22.65
5 30.76365 -35.38881 11.93
6 30.75872 -35.54733 22.97
7 30.60261 -35.95472 35.98
8 30.62818 -36.27024 31.09
9 31.35912 -35.73573 14.97
10 31.15218 -36.38027 37.60
下面的代码提供相同的数据
data.frame(cbind(
LAT=c(32.34855,31.54764,31.38293,31.21447,30.76365,30.75872,30.60261,30.62818,31.35912,31.15218),
LON=c(-35.49264,-35.58691,-35.25243,-35.25830,-35.38881,-35.54733,-35.95472,-36.27024,-35.73573,-36.38027),
SCORE=c(80.67,18.14,46.70,22.65,11.93,22.97,35.98,31.09,14.97,37.60)))
因为其中一些点在地理上彼此接近,我需要将他们的分数“汇集”在一起。因此,我现在需要一种方法将这些数据投入到某种空间网格中,并累计计算落在网格相同单元格中的所有点的分数。这将使我能够找到一个特定渔船在哪些区域展示出我最多的模式(这不仅仅是在一个地方花费的时间)。最终,首选输出将包含每个网格单元(中心)的lat和lon,以及每个单元格上所有分数的总和。此外,我还希望能够调整网格单元的大小。
我环顾四周,所有我能找到的不是保留地理参考信息,效率非常低,或者执行数据分级。可能已经有了一些答案,但可能是我无法识别它们的情况,因为我对这个问题有点不合时宜。有人可以指点一些方向(包装,功能等)吗?任何指导将不胜感激。
答案 0 :(得分:2)
获取lat / lon坐标,并将它们乘以所需网格单元边长的倒数,以度为单位。结果将是一对浮点数,其整数部分标识所讨论的网格单元。取floor
这些,你有两个数字描述单元格,你可以paste
形成一个单独的字符串。您可以将其添加为数据框的新因子列。然后,您可以根据该因素执行操作,例如汇总值。
示例:
latScale <- 2 # one cell for every 0.5 degrees
lonScale <- 2 # likewise
track_1$cell <- factor(with(track_1,
paste(floor(LAT*latScale), floor(LON*lonScale), sep='.')))
library(plyr)
ddply(track_1, .(cell), summarize,
LAT=mean(LAT), LON=mean(LON), SCORE=sum(SCORE))
如果您愿意,可以使用weighted.mean
代替平均值。如果您不喜欢这些因素,您可以付出更多努力使其变得更好(例如,使用罗盘方向而不是标志),或者完全删除它们并使用一对整数列代替。