现在设法解决问题
我有一组大约 50,000 个点,它们具有坐标和一个与其关联的值。我希望能够将点放入网格中,对落在网格正方形中的所有点的关联值进行平均。所以我想最终得到一个对象来识别每个网格方块并给出网格方块内的平均值。
如果有帮助的话,我有空间点数据框和空间网格对象中的数据。
改进答案:我确实做了一些搜索,对问题的初始状态感到抱歉,我只是设法在自己的脑海中构建问题;之前没必要跟其他人沟通过...
这是示例数据,希望能更清楚地说明问题
##make some data
longi <- runif(100,0,10)
lati <- runif(100,0,10)
value <- runif(500,20,30)
##put in data frame then change to spatial data frame
df <- data.frame("lon"=longi,"lat"=lati,"val"=value)
coordinates(df) <- c("lon","lat")
proj4string(df) <- CRS("+proj=longlat")
##create a grid that bounds the data
grd <- GridTopology(cellcentre.offset=bbox(df)[,1],
cellsize=c(1,1),cells.dim=c(11,11))
sg <- SpatialGrid(grd)
然后我希望得到一个对象,尽管是一个向量/数据框/列表,它给我每个网格单元/正方形中的平均值以及识别它是哪个单元的某种方法。
Solution
##convert the grid into a polygon##
polys <- as.SpatialPolygons.GridTopology(grd)
proj4string(polys) <- CRS("+proj=longlat")
##can now use the function over to select the correct points and average them
results <- rep(0, length(polys))
for(i in 1:length(polys)) {
results[i] = mean(df$val[which(!is.na(over(x=df,y=polys[i])))])
}
我现在的问题是这是最好的方法还是有更有效的方法?