[R] R code for selecting places spatially and by time

Ben Bolker bolker at ufl.edu
Fri Mar 7 15:41:18 CET 2008


Andrew McFadden <Andrew.McFadden <at> maf.govt.nz> writes:

> 
> 
> Hi all
> 
> The code of trying to write relates to selecting properties (given by x
> and y co-ordinates) spatially (distance "X" from "infected" properties
> identified by date) over a certain time period.
> 
> i.e. what properties are within 3 km from properties infected on
> "2008-01-01" over the last 14 days.
> 
> Is any one able to give me some clues on how to write code to solve this
> problem.
> 
> Some sample data is as follows:
> 
> x<-rep(c(2660156,2660203,2658165,2659303,2661531,2660914),c(2,2,2,2,1,1)
> )
> y<-rep(c(6476767,6475013,6475487,6479659,6477004,6476388),c(2,2,2,2,1,1)
> )
> date<-as.character(rep(as.Date(c("2008-01-02","2008-01-17","2008-01-01")
> ,format = "%Y-%m-%d"),c(4,4,2)))
> cbind(x,y,date)

  This should certainly be possible.  Your description of the
problem isn't entirely clear to me, but here's a first approximation:

dat <- data.frame(x,y,date)
## data.frame is better than cbind, it can hold dates and locations

infdate <- as.Date("2008-01-01")
infprem <- subset(dat,date==infdate)
otherprem <- subset(dat,date>=infdate)
## or:
elapsed <- dat$date-infdate
otherprem <- subset(dat,elapsed>0 & elapsed<14)
## I'm not sure this is what you wanted in terms
##  of date restrictions, but you could adjust appropriately
dist <- sqrt(outer(infprem$x,otherprem$x,"-")^2+
             outer(infprem$y,otherprem$y,"-")^2)
             
mindist <- apply(dist,2,min)

minval <- 1000 ## (I don't know what the units are??)
prem <- subset(otherprem,mindist<minval)
## or prem <- otherprem[mindist<minval,]



More information about the R-help mailing list