试图想出一个很好的功能来实现以下目标(看起来很明显,但没有足够的经验来考虑它)
我想解决4个问题:
基于像这样的数据集(值有点没有灵感,但它们应该代表lon-lat的):
location population
1 10,100 1000
2 20,200 2000
3 30,300 3000
4 40,400 4000
5 50,500 5000
获取包含以下内容的数据集:
定向性=如果A> B;边缘从B到A,否则;从A到B的边缘
distance pop.prod. gravity directedness
1-2 x x x x
1-3 x x x x
1-4 x x x x
1-5 x x x x
2-3 x x x x
2-4 x x x x
2-5 x x x x
3-4 x x x x
3-5 x x x x
4-5 x x x x
小免责声明:这不是作业:) 我只想看看我住的地区的运动/通勤估计,希望它对每个人都有好处! 它背后的想法被称为“基于重力的模型”,以估计通勤。
欢迎任何帮助,也欢迎问题的子集。 非常感谢提前。
答案 0 :(得分:1)
这是一个启动者:
df <- read.table(header=T, text=" location population
1 10,10 1000
2 20,20 2000
3 30,30 3000
4 40,40 4000
5 50,50 5000", stringsAsFactors=F)
locs <- do.call(rbind, lapply(strsplit(df$location,",",T), as.integer))
(idx <- combn(1:nrow(locs), 2))
# [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10]
# [1,] 1 1 1 1 2 2 2 3 3 4
# [2,] 2 3 4 5 3 4 5 4 5 5
(distance <- geosphere::distHaversine(locs[idx[1,],], locs[idx[2,],]) )
# [1] 1546488 3044009 4463588 5770107 1500779 2930665 4260187 1436941 2785801 1360777
(popProd <- df$population[idx[1,]]*df$population[idx[2,]])
# [1] 2000000 3000000 4000000 5000000 6000000 8000000 10000000 12000000 15000000 20000000
我认为这会给你一个想法,你可以弄清楚其余部分。