我的数据库中用户执行的每个操作都有多个位置,如下所示。我想获取这些距离的平均值或中心,以用作每个用户的单个位置。
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 中有这些信息,所以我会对两者的建议感到满意。
提前谢谢你。
这将为您提供简单的方法。如果您正在寻找区域中心,则需要一个更复杂的公式:
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