Suite

Extraction des valeurs de la pile raster et agrégation des résultats à l'aide de R


J'aimerais extraire des valeurs d'une pile raster, cellule par cellule, et créer une liste des valeurs :

ext <- extend(0,100,0,100) r1 <- raster(nrows=100, ncols=100,ext) r1[] <- sample(seq(from = 1, to = 6, by = 1), size = 10000, replace = TRUE) r2 <- raster(nrows=100, ncols=100,ext) r2[] <- sample(seq(from = 1, to = 6, by = 1), size = 10000, replace = TRUE) r3 <- raster(nrows=100, ncols=100,ext) r3[] <- sample(seq(from = 1, to = 6, by = 1), size = 10000, replace = TRUE) r4 <- raster(nrows =100, ncols=100,ext) r4[] <- sample(seq(from = 1, to = 6, by = 1), size = 10000, replace = TRUE) s <- stack(r1,r2,r3, r4)

en utilisant extract, je peux créer une matrice m'indiquant les valeurs de chaque couche de la pile, cellule par cellule :

y <- extrait(s,c(1:ncell(s)))

maintenant, ce que je veux faire, c'est renvoyer uniquement les lignes uniques de la matrice (unique(y)) avec un nombre de fois où cette ligne se produit.

En d'autres termes, placez une épingle dans chaque cellule d'une pile raster et comptez combien de fois chaque « vecteur » de valeurs se produit, et également quels sont ces vecteurs.


Je pense avoir trouvé la réponse.

Convertissez en trame de données et utilisez count dans le package plyr ;

y <- extract(s,c(1:ncell(s))) ydf <- as.data.frame(y) head(ydf) count(ydf, vars = c("layer.1","layer.2 ","layer.3","layer.4"))


Voir la vidéo: Datahubin tietokonversion ja sertifiointitestauksen tilannekatsaus (Octobre 2021).