Как найти значения из растра, основанного на другом?

#r

#r

Вопрос:

Предполагая, что у меня есть эти растры:

  library(raster)
 r1 <- r2 <- r3 <- raster(ncol=10, nrow=10)
 r1[] <- runif(ncell(r1))
 r2[] <- runif(ncell(r2)) / 2
 r3[] <- runif(ncell(r3)) * 1.5
 s <- stack(r1, r2, r3)
  

И у меня есть этот категориальный растр:

   rs <- raster(ncol=10, nrow=10)
  rs[] <-c(5,10,21,36,15)
  

Я хотел бы вычислить среднее значение всех пикселей в стеке, s которые соответствуют 5,10, etc (all values in rs) .
итак, получите что-то вроде этого:

         r1   r2    r3
5       ?     ?      ?
10       ?      ?      ?
21       ?    ?        ?
36
15
  

Ответ №1:

Это было бы «зональным» средним:

 set.seed(1)
z <- zonal(s, rs, mean)
round(z, 2)
     zone layer.1 layer.2 layer.3
[1,]    5    0.53    0.26    0.55
[2,]   10    0.50    0.23    0.51
[3,]   15    0.53    0.30    0.83
[4,]   21    0.52    0.22    0.71
[5,]   36    0.51    0.28    0.67
>