在 R 中生成数据集
Generate dataset in R
正在努力想一个好的功能实现如下(貌似很明显但是经验不足想不到)
我想解决4个问题:
- 计算数据集中所有点(城市)之间的距离(所以在 5 行中,(n-1)+(n-2)+...+(n-n))总共 10 个距离)
- 计算这些城市人口的乘积
- 计算重力
- 确定移动方向(简单检查两个比较城市的较大人口)
基于像这样的数据集(值有点缺乏灵感,但它们应该代表经纬度):
location population
1 10,100 1000
2 20,200 2000
3 30,300 3000
4 40,400 4000
5 50,500 5000
获取包含以下内容的数据集:
- 距离:位置 A-B
- pop.prod。 = 两个总体的乘积 (A
和 B)
- 重力=pop.prod。 /距离
方向性 = 如果 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
小免责声明:这不是作业:)
我只是想看看我居住地区的movement/commuter估计,希望它对每个人都有好处!
它背后的想法被称为 "Gravity Based Model" 以估计通勤。
欢迎任何帮助,包括问题的子集。
非常感谢。
这是一个开胃菜:
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
我想这给了你一个想法,你可以想出剩下的。
正在努力想一个好的功能实现如下(貌似很明显但是经验不足想不到)
我想解决4个问题:
- 计算数据集中所有点(城市)之间的距离(所以在 5 行中,(n-1)+(n-2)+...+(n-n))总共 10 个距离)
- 计算这些城市人口的乘积
- 计算重力
- 确定移动方向(简单检查两个比较城市的较大人口)
基于像这样的数据集(值有点缺乏灵感,但它们应该代表经纬度):
location population
1 10,100 1000
2 20,200 2000
3 30,300 3000
4 40,400 4000
5 50,500 5000
获取包含以下内容的数据集:
- 距离:位置 A-B
- pop.prod。 = 两个总体的乘积 (A 和 B)
- 重力=pop.prod。 /距离
方向性 = 如果 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
小免责声明:这不是作业:) 我只是想看看我居住地区的movement/commuter估计,希望它对每个人都有好处! 它背后的想法被称为 "Gravity Based Model" 以估计通勤。
欢迎任何帮助,包括问题的子集。 非常感谢。
这是一个开胃菜:
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
我想这给了你一个想法,你可以想出剩下的。