计算R

时间:2018-03-29 13:20:13

标签: r raster

我有这些栅格数据集,看起来像这样

      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中使用。

1 个答案:

答案 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