如何在R中通过加权平均对点数据进行栅格化?

如何在R中通过加权平均对点数据进行栅格化?,r,spatial,raster,R,Spatial,Raster,我有一个data.frame的空间数据,其中包含按田地划分的作物产量。我想通过栅格化这些数据来制作热图。我已经能够使用光栅平均值生成地图。我可以通过计算加权平均值来改进这一点,权重是绘图区域。到目前为止,我还没能做到这一点 以下是我所做的一个简单示例: require(dplyr) 需要(光栅) 要求(sf) d% 坐标=c(“经度”、“纬度”)) r我修改了您在创建可复制示例时所做的操作,以避免出现错误。希望这有助于: #require(dplyr) #looks redundant requ

我有一个data.frame的空间数据,其中包含按田地划分的作物产量。我想通过栅格化这些数据来制作热图。我已经能够使用光栅平均值生成地图。我可以通过计算加权平均值来改进这一点,权重是绘图区域。到目前为止,我还没能做到这一点

以下是我所做的一个简单示例:

require(dplyr)
需要(光栅)
要求(sf)
d%
坐标=c(“经度”、“纬度”))

r我修改了您在创建可复制示例时所做的操作,以避免出现错误。希望这有助于:

#require(dplyr) #looks redundant
require(raster)
require(sf)

d <- data.frame(longitude = runif(100, 10, 30),
                latitude = runif(100, 40, 50),
                yield = runif(100, 2, 6),
                area = runif(100, .1, 10)) %>%
                st_as_sf(coords = c("longitude", "latitude"))

r <- raster(extent(c(st_bbox(d)))) #modified

x1 <- rasterize(d, r, field = "yield", mean)
x2 <- rasterize(d, r, field = "yield", fun=function(x,...) (sum(x[1]*x[2])/sum(x[2])))
#require(dplyr)#看起来是多余的
需要(光栅)
要求(sf)
d%
坐标=c(“经度”、“纬度”))

r非常感谢
dplyr
确实是多余的。我不知道
sf
也会导入管道操作符。因此,函数参数
x
中的索引是对象
d
的列索引,也感谢您向我介绍
st_bbox
速记!别担心。是的,函数参数
x
中的索引是对象
d
的列索引。我想您现在可以自定义自己的功能了。:)