添加条件到is.na

时间:2016-12-09 18:46:45

标签: r raster na

我对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。我还想在这些“十年组”中将我的年份变量分组:

  1. 1984,1990,1991,1992
  2. 1996,2002,2006
  3. 2011,2013,2016
  4. 添加一个条件,确保每个像素在三个组中的每一个中至少有一个NDVI值。因此,如果像素缺少这些组中的至​​少一个中的所有值,那么输出应该是NA。

    任何帮助表示赞赏!

0 个答案:

没有答案