【问题标题】:Calculation of 1st and 3rd quadrilles for a stack of raster using quantile function in Raster package in R使用 R 中 Raster 包中的分位数函数计算栅格堆栈的第一个和第三个四边形
【发布时间】:2018-07-05 10:38:43
【问题描述】:

我正在使用以下代码在 R 中使用光栅包中的分位数函数进行四分位数计算。 我的光栅图像堆栈有 307 个图像,所有图像都有一些无数据值。 我只想要输出而不考虑 No Data 值。我尝试了以下代码:

    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 值在输出而不是四分位数。

【问题讨论】:

  • 如果不知道您的数据是什么或看起来如何,很难说...请添加更多信息,如果可能,请提供reproducible

标签: r r-raster


【解决方案1】:

这是一个有效的例子:

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。情况可能并非如此,但如果没有其中一个文件,就很难解决这个问题。

【讨论】:

    猜你喜欢
    • 2021-08-25
    • 2018-02-06
    • 2023-04-04
    • 2016-08-30
    • 2017-07-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多