[R] Calculate Distance and Aggregate Data?

Roger Bivand Roger.Bivand at nhh.no
Tue Feb 24 18:26:27 CET 2004


On Tue, 24 Feb 2004 dsheuman at rogers.com wrote:

> Hi all,
> 
> I've been struggling learning R and need to turn to the list again.
> 
> I've got a dataset (comma-delimited file) with the following fields:  
> recid, latitude, longitude, population, dwelling and age.  For each
> observation, I'd like to calculate the total number of people and
> dwellings and average age within 2 k.m.  Distance could be Euclidean,
> however, a proper distance calculation (great circle route) is best.

One possibility using the spdep package is:

> names(sds)
[1] "recid" "lat"   "long"  "pop"   "dwell" "age"  
> library(spdep)
> sds.nb2 <- dnearneigh(as.matrix(sds[,2:3]), 0, 2, lonlat=TRUE)
> unlist(lapply(sds.nb2, function(x) ifelse(any(x==0), 0, 
+ sum(sds$pop[x]))))+sds$pop
 [1]  9123 10017  9123  8821  6279 10017   892  7061  8245 10654  9010 0
[13]  9010 10017  9010 10681 10122 10122  7627  9574 10654  8034  1611 10095
[25]  9771  9574  8856  9465  2555

using dnearneigh() with the lonlat argument to build up a list of 
neighbouring points. There are also functions for lonlat distances in the 
fields package.

Roger


> 
> Any assistance would be appreciated.
> 
> Thanks,
> 
> Danny
> 
> 
> --------------
> Sample Data
> --------------
> recid,lat,long,pop,dwell,age
> 10010265,47.5971174,-52.7039227,584,219,38
> 10010260,47.5846616,-52.7039147,488,188,34
> 10010263,47.5936538,-52.7037037,605,232,43
> 10010287,47.5739426,-52.7035365,548,256,29
> 10010290,47.5703333,-52.703182,559,336,36
> 10010284,47.5800199,-52.7013245,394,261,61
> 10010191,47.5322617,-52.7010442,892,323,23
> 10010291,47.57004,-52.7009,0,0,0
> 10010289,47.57141,-52.70023,0,0,0
> 10010285,47.5832183,-52.6995828,469,239,44
> 10010273,47.6006838,-52.6984875,855,283,28
> 10010190,47.472353,-52.697991,0,0,0
> 10010274,47.6018197,-52.6978362,344,117,51
> 10010288,47.5755249,-52.6978207,33,0,19
> 10010275,47.6005037,-52.6968299,232,93,43
> 10010279,47.5915368,-52.6954916,983,437,33
> 10010276,47.5993086,-52.6954808,329,131,28
> 10010278,47.5958782,-52.6934253,251,107,27
> 10010354,47.6165839,-52.6934037,27,14,47
> 10010277,47.5975113,-52.6914148,515,194,37
> 10010293,47.5778754,-52.6910827,58,0,40
> 10010292,47.5722183,-52.6899332,1112,523,28
> 10010353,47.6356972,-52.6896838,1387,471,32
> 10010283,47.5873992,-52.6884621,531,296,41
> 10010281,47.5983891,-52.6880528,307,113,52
> 10010280,47.5958439,-52.6878177,374,129,18
> 10010282,47.5999645,-52.6874407,637,226,22
> 10010286,47.5797909,-52.6872042,446,280,32
> 10010355,47.6210282,-52.6777189,197,72,39
> 
> ______________________________________________
> R-help at stat.math.ethz.ch mailing list
> https://www.stat.math.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html
> 

-- 
Roger Bivand
Economic Geography Section, Department of Economics, Norwegian School of
Economics and Business Administration, Breiviksveien 40, N-5045 Bergen,
Norway. voice: +47 55 95 93 55; fax +47 55 95 93 93
e-mail: Roger.Bivand at nhh.no




More information about the R-help mailing list