代码之家  ›  专栏  ›  技术社区  ›  BetterCallMe

使用R中光栅包中的分位数函数计算光栅堆栈的第一个和第三个四边形

  •  0
  • BetterCallMe  · 技术社区  · 7 年前

    我使用以下代码在R中使用光栅包中的分位数函数进行四分位数计算。 我只想要输出,不考虑任何数据值。我尝试了以下代码:

        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 
    

    1 回复  |  直到 7 年前
        1
  •  0
  •   Robert Hijmans    7 年前

    下面是一个有效的示例:

    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的方法是当所有值都为NA时:

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

    因此,文件中的所有值似乎都是 NA . 情况可能并非如此,但如果没有其中一个文件,则很难对其进行故障排除。