我有 1295 个样本的数据集,每个样本包含三个因素:a(经度)、b(纬度)、c(收入)。我想:1)计算每个样本之间的行驶距离;2) 在指定的行驶距离(例如,5 公里)或旅行时间(例如,30 分钟)内可以到达的样本的总收益。
我想出了一个非常愚蠢的方法:我创建一个 1295×1295 的矩阵,然后在 ggmap 中使用 mapdist 计算距离。这种方法行得通,但是运行时间太长了......
还有其他更好的解决方案吗?欢迎所有评论!
name<-c(1,2,3)
a<-c(38.986950637300716,39.32997596907951, 42.27913260687474)
b<-c(-76.94255196694931,-76.62047478669649,-83.75554303187236)
c<-c(10000,20000,30000)
data<-data.frame(a,b,c)
data$coordinate<-paste(data$a,data$b, sep=",")
data1 <- data[rep(1:nrow(data),each=1,times=3),]
data1$destination <- rep(data$coordinate[1:3], each=3)
df<-unique(as.data.table(data1)[, c("coordinate", "destination") := list(pmin(coordinate, destination),pmax(coordinate, destination))], by = c("coordinate", "destination")) # reducing duplicates
google_results <- rbind.fill(apply(subset(df, select=c("coordinate", "destination")), 1, function(x) mapdist(x[1], x[2], mode="driving")))
names(google_results)[1]<-"coordinate"
names(google_results)[2]<-"destination"
df1<-left_join(df1, google_results, by=c("coordinate","destination"))