我有这些栅格数据集,看起来像这样
1 2 3 4 5
1 NA NA NA 10 NA
2 7 3 7 10 10
3 NA 3 7 3 3
4 9 9 NA 3 7
5 3 NA 7 NA NA
经由
MyRaster1 <- raster("MyRaster_EUNIS1.tif")
head(MyRaster1)
我创建了那张桌子。 使用unique(MyRaster1)我得到3 7 9 10。
我需要的是栅格数据集中这些唯一值的计数。
我已经尝试了很多方法,单向工作,但是很麻烦,我无法为我拥有的所有栅格数据集设置循环。
Classes1 <- as.factor(unique(values(MyRaster1)))[!is.na(unique(values(MyRaster1)))]
val1 <- unique(MyRaster1)
Tab1 <- matrix(nrow = length(values(MyRaster1)), ncol = length(val))
colnames(Tab1) <- levels(unique(Classes1))
Tab1 <- Tab1[!is.na(Tab1[,1]),]
colSums(Tab1)
它似乎正常工作,直到我尝试删除NA值。当我在此之前使用colSums时,我得到NA作为每列的结果,在删除NA值后,我得到0。
这是我第一次使用R,所以我是一个真正的新手。我已经研究了很多,但由于我根本不懂语言,这是我得到的最远的。
感谢您的帮助。
编辑: 表(MyRaster1) 给我这个:unique.default中的错误(x,nmax = nmax): unique()仅适用于矢量
最好的结果是:
3 7 9 10
6 5 2 3
但我也可以使用不同的格式,我可以在Excel中使用。
答案 0 :(得分:2)
使用raster::freq()
以下是数据前两行的示例:
r <- raster(matrix(c(NA,NA,NA,10,NA,7,3,7,10,10), nrow = 2, ncol =5))
> freq(r)
value count
[1,] 3 1
[2,] 7 2
[3,] 10 3
[4,] NA 4