R:识别矩阵中的单元格值

时间:2012-04-04 11:32:09

标签: r matrix

我有一组945个地理编码位置here。每个位置都有一个ID和一个给定的人口:

"ID","LON","LAT","POPULATION"
1,86.648064,22.80682,386
2,86.65358,22.81848,655
3,86.670502,22.78508,624
4,86.685028,22.842409,708
5,86.716599,22.866791,987
6,86.734879,22.87911,415
7,86.736687,23.112619,715

我试图弄清楚,在每个地点,10公里范围内所有村庄的总人口。

计算每个点的距离是微不足道的:

coords = read.csv("filepath/coords.csv", header=T, stringsAsFactors=F)
coords.matrix = data.matrix(coords[,c(2,3)])

library(sp)
dist = list()
for(i in 1:nrow(coords.matrix)) {
  dist[[i]] = (spDistsN1(coords.matrix, coords.matrix[i,], longlat=T)) #See: http://hosho.ees.hokudai.ac.jp/~kubo/Rdoc/library/sp/html/spDistsN1.html
}
dist = do.call(rbind, dist)

它给了我this 945X945矩阵。但是,如何将这些细胞与ID和相应的群体相关联?

1 个答案:

答案 0 :(得分:3)

假设dist矩阵在KM中有距离我认为你可以这样做:

coords$POPIN10KM <- sapply(1:nrow(dist),function(i)sum(coords$POPULATION[dist[i,]<10]))

这会在数据框中添加一列,表明人口在10公里以内