我有一個柵格,我想將其值重新分類為四個值(NA、1、2 和 3)。
我使用了包中的reclassify命令raster。在此命令中,可以指示包含必須重新分類的區間的陣列。但在我看來,reclassify它只接受一個 3x3 陣列,所以我不能重新分類超過 3 個范圍。
我試圖將一個 m包含我所有范圍的陣列分配給命令rcl內reclassify,但它只考慮前 3 行,因此該命令忽略了陣列的其他行。
陣列的m作業方式如下:
第一列代表下限值范圍,第二列代表上限值范圍,第三列代表分配給該單元格的新值。例如,在第 1 行的行中,0,0,NA我希望將所有等于零的值轉換為 NA。在第 2 行1,5,1,我希望將 1 和 5 之間的所有值轉換為值 1。16,19,3例如,在第 7 行,應該將 16 和 19 之間的值轉換為等于 3 的值,依此類推。
我不知道這種轉換有什么問題。我會接受帶有raster包裹或其他包裹的解決方案嗎?
這里有一個例子
#raster
r <- raster(matrix(runif(100, 0, 50), ncol=10))
plot(r)

#matrix with rules reclass
m<-matrix(c(0,0,NA,
1,5,1,
6,8,3,
9,9,2,
10,13,1,
14,15,2,
16,19,3,
20,20,2,
21,23,3,
24,24,3,
25,25,3,
26,32,3,
33,33,3,
34,38,3,
39,39,2,
40,40,3,
41,41,2,
42,Inf,3), ncol=3, byrow=TRUE)
#r2 with reclass
r2<-raster::reclassify(x=r, rcl=m)
uj5u.com熱心網友回復:
如果重新分類矩陣中沒有間隙,效果會更好
#matrix with rules reclass
m<-matrix(c(0,1,NA,
1,6,1,
6,8,3,
8,9,2,
9,13,1,
13,15,2,
15,19,3,
19,20,2,
20,23,3,
23,24,3,
24,25,3,
25,32,3,
32,33,3,
33,38,3,
38,39,2,
39,40,3,
40,41,2,
41,Inf,3), ncol=3, byrow=TRUE)
#r2 with reclass
r2<-raster::reclassify(x=r, rcl=m, include.lowest=TRUE)
這必須像使用十進制數字那樣完成。對于整數,可以允許以您想要的方式指定它,其中區間在兩邊都是開放的,from并且to可以是相同的值,但目前情況并非如此。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/414688.html
標籤:
