r-如何根据另一个二进制文件中的类来计算一个二元文件中变量的平均值



我有两个维度相同的二进制文件(光栅):第一个表示2个数据之间的相关性,第二个表示具有10个类的土地覆盖图。我想根据土地覆盖类别取我的相关性的平均值。因此,最终我们将得到一张与土地覆盖图相同的地图,但使用的是相关性的平均值,而不是类数。

这是两个文件:

  1- to read the first file correlation map:
   conne <- file("C:\corr.bin","rb")
  corr<- readBin(conne, numeric(), size=4,  n=1440*720, signed=TRUE)
  y<-t(matrix((data=corr), ncol=720, nrow=1440))
    r = raster(y)

2-阅读第二份文件土地覆盖图:

  conne <- file("C:\land cover.bin","rb")
  over<- readBin(conne, integer(), size=1,  n=1440*720, signed=F)
  y1<-t(matrix((data=over), ncol=720, nrow=1440))
  r1 = raster(y1)

3-写入结果:

     to.write = file(paste("/orcomplete.bin",sep=""),"wb")
     writeBin(as.double(results), to.write, size = 4)

这不是像一样吗

 tapply(y, y1, mean, na.rm=TRUE)

如果你想要与输入矩阵相同排列相关的类平均值,那么就这样做:

outmat <- matrix( ave( y, y1, FUN=mean, na.rm=TRUE), nrow(y), ncol(y) )

如果陆地覆盖物光栅具有您想要保留的地理参考特征(例如投影信息),您可以使用光栅工具箱中的区域工具:

corr_raster <- raster('correlation raster filename')
land_raster <- raster('landcover raster filename')
zv <- zonal(corr_raster , land_raster, fun=mean)

然后,您所要做的就是将结果表中的平均值分配给陆地覆盖物像素。光栅包有很多替代方法(例如,重新分类函数)。

最新更新