【问题标题】:How do I get the average location from multiple location records (latitude/longitude readings)?如何从多个位置记录(纬度/经度读数)中获取平均位置?
【发布时间】:2014-03-22 18:00:48
【问题描述】:

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

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 中都有这些信息,所以我很乐意接受这两个方面的建议。

提前谢谢你。

【问题讨论】:

  • 您可以将单个用户的位置视为可以找到centre of gravity 的多边形。

标签: r mongodb location


【解决方案1】:

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

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

【讨论】:

  • 谢谢,但我在生成的数据框中获得的主要是 NA 值。你知道为什么会这样吗?
  • 不确定 - 您的原始数据集中有 NA 吗?
  • 原始数据集中的 NA 很少,但在新数据框中却更多。很多用户也可能只有一条记录,如果这有什么影响?
猜你喜欢
  • 2012-11-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多