Cross-tabulate two RasterLayer objects, or mulitiple layers in a RasterStack or RasterBrick to create a contingency table.

# S4 method for class 'Raster,Raster'
crosstab(x, y, digits=0, long=FALSE, useNA=FALSE, progress='', ...)

# S4 method for class 'RasterStackBrick,missing'
crosstab(x, digits=0, long=FALSE, useNA=FALSE, progress='', ...)

Arguments

x

Raster* object

y

Raster* object if x is a RasterLayer; Can be missing if x is a RasterStack or RasterBrick

digits

integer. The number of digits for rounding the values before cross-tabulation

long

logical. If TRUE the results are returned in 'long' format data.frame instead of a table

useNA

logical, indicting if the table should includes counts of NA values

progress

character. "text", "window", or "" (the default, no progress bar), only for large files that cannot be processed in one step

...

additional arguments. none implemented

Value

A table or data.frame

See also

Examples

r <- raster(nc=5, nr=5)
values(r) <- runif(ncell(r)) * 2
s <- setValues(r, runif(ncell(r)) * 3)
crosstab(r,s)
#>        layer.2
#> layer.1 0 1 2 3
#>       0 3 2 2 0
#>       1 1 3 5 3
#>       2 0 3 3 0

rs <- r/s
r[1:5] <- NA
s[20:25] <- NA
x <- stack(r, s, rs)
crosstab(x, useNA=TRUE, long=TRUE)
#>    layer.1 layer.2 layer.3 Freq
#> 1        0       0       1    1
#> 2        0       0       3    1
#> 3        0       1       0    1
#> 4        0       2       0    2
#> 5        0      NA       0    1
#> 6        0      NA       2    1
#> 7        1       1       1    1
#> 8        1       2       0    3
#> 9        1       2       1    1
#> 10       1       3       0    1
#> 11       1      NA       0    1
#> 12       1      NA       1    1
#> 13       1      NA       3    1
#> 14       2       1       1    1
#> 15       2       1       3    1
#> 16       2       2       1    1
#> 17       2      NA       1    1
#> 18      NA       1       2    1
#> 19      NA       1       3    1
#> 20      NA       2       1    2
#> 21      NA       3       0    1