Puede coaccionar fácilmente su data.frame a un objeto SpatialPointsDataFrame.
coordinates(datosmerged) <- ~XCOORD+YCOORD
class(datosmerged)
Suponiendo que "shape" es un polígono, puede utilizar la función "over" para identificar el solapamiento entre las dos clases de características. Una alternativa es "gIntersects" en el paquete "rgeos", pero es un poco exagerado para su problema.
He aquí un ejemplo
require(sp)
# Create polygons
r1 = cbind(c(180114, 180553, 181127, 181477, 181294, 181007, 180409,
180162, 180114), c(332349, 332057, 332342, 333250, 333558, 333676,
332618, 332413, 332349))
r2 = cbind(c(180042, 180545, 180553, 180314, 179955, 179142, 179437,
179524, 179979, 180042), c(332373, 332026, 331426, 330889, 330683,
331133, 331623, 332152, 332357, 332373))
srdf=SpatialPolygonsDataFrame(SpatialPolygons(list(Polygons(list(Polygon(r1)),"r1"),
Polygons(list(Polygon(r2)),"r2"))), data.frame(ID=c(1,2),
row.names=c("r1","r2")))
# Coerce data.frame to SpatialPointsDataFrame
data(meuse)
coordinates(meuse) = ~x+y
# Plot Example
plot(meuse, pch=19)
plot(srdf, add=T)
# Use over function to add polygon IDS to points. Non-overlapping points will have NA
meuse@data <- data.frame(meuse@data, over(meuse, srdf[,"ID"]) )
meuse@data