r - 使用 R 中 Raster 包中的分位数函数计算栅格堆栈的第一个和第三个四边形
问题描述
我正在使用以下代码在 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 值是输出而不是四分位数。
解决方案
这是一个有效的示例:
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
. 情况可能并非如此,但是如果没有其中一个文件,就很难解决这个问题。
推荐阅读
- javascript - Angular ReferenceError:从 html 表单或按钮调用 typescript 函数
- android - 在android studio中打开新项目时android资源编译失败
- r - 按唯一标识符折叠多行,多个值(列),每个变量的多个元素(行)
- jquery - 获取每个 .class 的编号
- c++ - 为什么按值传递局部变量有效?
- c# - XPathNavigator 可以从测试输入中选择,但不能从真实输入中选择
- c# - C# - 使用 String.Split(CharArray) 时识别匹配字符
- python - Python Dash:'Dash' 对象没有属性'route'
- css - 在全屏桌面视图中如何隐藏 fontawesome 图标
- ruby-on-rails - 如何去除空的段落标签