# [R-sig-Geo] R-sig-Geo Digest, Vol 43, Issue 21

Nicholas Lewin-Koh nikko at hailmail.net
Sat Mar 24 21:01:11 CET 2007

```Hi Katrina,
If your data are really only points all you need to do if you have dat1
and dat2
as two datasets like you described is,
i1<-which(dat1\$lat%in%dat2\$lat & dat1\$long%in%dat2\$long)
i2<-which(dat2\$lat%in%dat1\$lat & dat2\$long%in%dat1\$long)
o1<-order(dat1\$lat[i1],dat1\$long[i1]
o2<-order(dat2\$lat[i2],dat2\$long[i2]
(dat1[i1,-c("lat","long")])[o1,]-(dat1[i2,-c("lat","long")])[o2,]

Mind you this is not elegant, and there is probably a faster ways,
but it will get you what you need.

Cheers
Nicholas

> Message: 1
> Date: Fri, 23 Mar 2007 12:51:39 -0700
> From: "Katrina Bennett" <kbennett at uvic.ca>
> Subject: [R-sig-Geo] Query for overlapping points in R
> To: <r-sig-geo at stat.math.ethz.ch>
> Message-ID: <000901c76d84\$b067c5d0\$ca0f688e at pcic.uvic.ca>
> Content-Type: text/plain
>
> Hello, I am trying to query in a spatial data set where overlapping
> points
> exist between two data sets, and then average between these two data sets
> in
> R.
>
>
>
> The problem is that my data sets have slightly difference spatial arrays
> -
> therefore when I go to subtract them, I get an error.
>
>
>
> The data sets are set up as follows, columns of - Lat, Long, 10, 11, 12,
> 1,
> 2, 3, 4, 5, 6, 7, 8, 9 (which represent months in the year)
>
>
>
> Here is the portion of my script that does this. I've played around with
> overlay and merge, but neither seems to do what I want to do - just
> extract
> and then calculate on the common data points between these two files.
>
>
>
>
>
>
>
> require(sp)
>
> for (region in regions){
>
>           #Create an empty holder
>
>           monthly_variables = NULL
>
>
>
>           #Clip regions (have to examine maptools package)
>
>           clip_variance <- clip(cbind(variances, io =
> point.in.polygon(variances\$Long, variances\$Lat,
> shape\$shp\$shp[[region]]\$points\$X, shape\$shp\$shp[[region]]\$points\$Y)))
>
>           clip_normal <- clip(cbind(normals, io =
> point.in.polygon(normals\$Long, normals\$Lat,
> shape\$shp\$shp[[region]]\$points\$X, shape\$shp\$shp[[region]]\$points\$Y)))
>
>           #HERE IS WHERE I WANT TO SELECT AND CALCULATE DIFFERENCES ONLY
>           ON
> THE POINTS THAT MATCH in X, Y SPACE
>
>
>
>           # calculate differences, sd (in the time domain) for the
>
>             for (month in 1:12){
>
>              # generate anomalies
>
>
>
>               monthly_anom <- clip_variance[, 3:ncol(clip_variance)] -
> clip_normal[, 3:ncol(clip_normal)]
>
>
>
>               monthly_variables <- rbind(monthly_variables, c(Lat = Lat,
> Long = Long, monthly_anom = monthly_anom))
>
>
>
>             }
>
>
> 	[[alternative HTML version deleted]]
>
>
>
> ------------------------------
>
> _______________________________________________
> R-sig-Geo mailing list
> R-sig-Geo at stat.math.ethz.ch
> https://stat.ethz.ch/mailman/listinfo/r-sig-geo
>
>
> End of R-sig-Geo Digest, Vol 43, Issue 21
> *****************************************

```