使用R中Raster包中的分位数功能计算一叠栅格的第1次和第4​​次方

时间:2018-07-05 10:38:44

标签: r r-raster

我正在使用以下代码在R中使用栅格数据包中的分位数功能对四分位数进行计算。 我的栅格图像堆栈有307张图像,所有图像都有一些“无数据”值。 我只希望输出而无需考虑“无数据”值。我尝试了以下代码:

    library(raster)    
    raster_data<-list.files(path= getwd() , pattern= "\\.tif$", all.files=FALSE,
    full.names=TRUE,recursive=TRUE) 
    s <- stack(raster_data)
    quantile(s, na.rm = TRUE)

输出:

  

分位数

                   0% 25% 50% 75% 100%

    X2008001h25v06 NA  NA  NA  NA   NA

    X2008002h25v06 NA  NA  NA  NA   NA

    X2008003h25v06 NA  NA  NA  NA   NA

    X2008004h25v06 NA  NA  NA  NA   NA

    X2008005h25v06 NA  NA  NA  NA   NA

    X2008006h25v06 NA  NA  NA  NA   NA
      --------------   
     -----------------  so on 

为什么此NA NA NA NA NA值出现在输出中而不是四分位数。

1 个答案:

答案 0 :(得分:0)

这是一个有效的示例:

library(raster)
fn <- system.file("external/test.grd", package="raster")
s <- stack(fn, fn)
quantile(s)

#            0%      25%     50%      75%    100%
#test.1 128.434 293.2325 371.412 499.8195 1805.78
#test.2 128.434 293.2325 371.412 499.8195 1805.78

可以使用以下方法获得相同的结果(具有较小的数据集):

t(apply(values(s), 2, quantile, na.rm=TRUE))

因此,您需要找出文件的不同之处。

我想到的唯一方法是返回所有值为NA的分位数:

quantile(rep(NA, 10), na.rm=TRUE)
# 0%  25%  50%  75% 100% 
# NA   NA   NA   NA   NA 

因此,文件中的所有值似乎都是NA。也许不是这样,但是如果没有其中一个文件,很难对其进行故障排除。