如何从多个位置记录(纬度/经度读数)中获取平均位置?

时间:2014-02-21 09:48:35

标签: r mongodb location

我的数据库中的用户执行的每个操作都有多个位置,如下所示。我希望将这些距离的平均值或中心用作每个用户的单个位置。

Action  location.lon    location.lat

user1   -6.2346259      53.3371473
user1    0              0
user4   -6.22550044     53.59729241
user2   -6.262663209    53.33398243
user2   -6.289571616    53.32012803
user3    8.6388684      49.3024665
user5   -80.434882      39.2474397
user3   -2.460740516    52.60026199
user3   -122.5168562   -37.92878211

我在R和mongodb中有这些信息,所以我对两者的建议都很满意。

提前谢谢。

1 个答案:

答案 0 :(得分:0)

这将为您提供简单的方法。如果您正在寻找区域中心,您需要一个更复杂的公式总结:

df<-read.table(header=T,text="Action  location.lon    location.lat
user1   -6.2346259      53.3371473
user1    0              0
user4   -6.22550044     53.59729241
user2   -6.262663209    53.33398243
user2   -6.289571616    53.32012803
user3    8.6388684      49.3024665
user5   -80.434882      39.2474397
user3   -2.460740516    52.60026199
user3   -122.5168562   -37.92878211")

require(dplyr)

group_by(df,Action) %.%
  summarise(mean.lon=mean(location.lon),mean.lat=mean(location.lat))

  Action   mean.lon mean.lat
1  user1  -3.117313 26.66857
2  user2  -6.276117 53.32706
3  user3 -38.779576 21.32465
4  user4  -6.225500 53.59729
5  user5 -80.434882 39.24744