我对R很新,并且一直在研究代码来计算10层RasterStack中所有像素的NDVI和时间之间的线性回归(使用R中的Raster包)。我有这个工作,但我需要在我的is.na语句中添加一些条件,以确保我只获得具有超过一半(10+中的10个)像素值且至少有一个值的像素的输出每个“十年组”。在这种情况下,NA值是由于某些栅格的某些区域的云层覆盖。
这是我目前所处的位置......
#years variable
years <- c(1984, 1990, 1991, 1992, 1996, 2002, 2006, 2011, 2013, 2016)
#slope function
fun_slope <- function(y) {
if(all(is.na(y))) {
NA
} else {
m = lm(y ~ years); summary(m)$coefficients[2]
}
}
fun_pvalue <- function(y) {
if(all(is.na(y))) {
NA
} else {
m = lm(y ~ years); summary(m)$coefficients[8]
}
}
slope <- calc(NDVI4715_NA, fun_slope)
pvalue <- calc(NDVI4715_NA,fun_pvalue)
就目前而言,如果所有10年的NDVI值都为NA,那么输出中的结果像素将为NA。我想这样做,如果单个RasterStack像素中的一半或更多像素是NA,那么输出将是NA。我还想在这些“十年组”中将我的年份变量分组:
添加一个条件,确保每个像素在三个组中的每一个中至少有一个NDVI值。因此,如果像素缺少这些组中的至少一个中的所有值,那么输出应该是NA。
任何帮助表示赞赏!