On 19/08/2009, at 9:10 AM, Paul Heinrich Dietrich wrote:


I'm new to spatial analysis and am exploring numerous packages, mostly
enjoying sp, gstat, and spBayes.

Is there a function that allows the user to dedup a data set with multiple values at the same coordinates and replace those duplicated values with the mean at those coordinates? I've written some cumbersome code that works,
but would prefer an efficient R function if it exists.  Thanks.

Using the spatstat package, and with your data set converted to a ppp object with marks equal to the ``values'', you can avail yourself of the following
simple function:

foo <- function(X){
a <- with(X,tapply(marks,paste(x,y),mean))
b <- strsplit(names(a)," ")
x <- as.numeric(sapply(b,function(w){w[[1]]}))
y <- as.numeric(sapply(b,function(w){w[[2]]}))
ppp(x=x,y=y,marks=as.vector(unname(a)))
}

E.g.:

library(spatstat)
set.seed(42)
x <- runif(20)
y <- runif(20)
i <- sample(1:20,100,TRUE)
X <- ppp(x=x[i],y=y[i],marks=rnorm(100))
Y <- foo(X)
plot(unmark(X))
plot(Y,add=TRUE,cols="red")

HTH

        cheers,

                Rolf Turner

P.S. Note that you will have to specify an ***observation window*** when converting your data set to a ppp object. If you haven't a ``naturally occurring'' window, you
can create one using the ripras() function to create a window.

                R. T.

######################################################################
Attention:\ This e-mail message is privileged and confid...{{dropped:9}}

______________________________________________
R-help@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.

Reply via email to