使用R中的提取函数处理NA值



我正试图使用CRU数据库计算11x11km网格单元的年平均温度(如果网格单元是沿海的,则尺寸较小(。矢量和光栅的CRS是相同的。然而,1363个细胞中的332个在提取后显示出NA值。我想在使用数据集进行进一步分析之前填写NA值。你知道我该如何处理这些缺失的价值观吗?我已经在这个论坛(以及其他论坛(上研究了几种可能的解决方案。不幸的是,它们似乎都不适用于我的情况。以下是我的工作流程的详细信息:

# load the temperature dataset 
temp <- brick("/CRU/cru_ts4.02.1901.2017.tmp.dat.nc", varname="tmp")
# set CRS for temp
utm = "+proj=utm +zone=49 +datum=WGS84 +towgs84=0,0,0"
tempro = projectRaster(temp, crs = utm, method = "bilinear")
# load the grid cells (in polygons) & set its CRS
fish <- st_read("/CRU/fish11.shp")
fishpro <- st_transform(fish, "+proj=utm +zone=49 +datum=WGS84 +towgs84=0,0,0")
# extract the temperature dataset 
tempgrid  <- extract(tempro, fishpro, fun='mean',  na.rm=TRUE, df=TRUE, weights = TRUE, small = TRUE, 
method='bilinear') 
write.csv(tempgrid, file="temp.csv") 

而映射是:温度

我认为你的问题没有简单的答案。显然,多边形并不在陆地上;但我们无法告知,因为我们没有您的数据。也可能是所选择的UTM区域不合适。

我可以说你所做的是错误的。如果您需要转换数据;您应该转换矢量数据,而不是光栅数据(即使这不会对NA问题产生太大影响,如果有的话(。

library(raster)
temp <- brick("/CRU/cru_ts4.02.1901.2017.tmp.dat.nc", varname="tmp")
fish <- st_read("/CRU/fish11.shp")
fishpro <- st_transform(fish, "+proj=longlat +datum=WGS84")
tempgrid  <- extract(temp, fishpro, fun='mean', na.rm=TRUE, df=TRUE, small = TRUE)

你也可以制作一张地图来查看正在发生的事情(也许可以将其作为图像包含在你的quesiton.

x <- crop(temp[[1]], extent(fishpro)+1)
plot(x)
lines(fishpro)

最新更新