# first, set up the registry
reg <- bf_registry(name = "testBF", description = "test bitfield",
template = bf_tbl)
# then, put the test for NA values together
reg <- bf_map(protocol = "na", data = bf_tbl, registry = reg,
x = year)
# all the other protocols...
# boolean encoding
reg <- bf_map(protocol = "nan", data = bf_tbl, registry = reg,
x = y)
reg <- bf_map(protocol = "inf", data = bf_tbl, registry = reg,
x = y)
reg <- bf_map(protocol = "identical", data = bf_tbl, registry = reg,
x = x, y = y, na.val = FALSE)
reg <- bf_map(protocol = "range", data = bf_tbl, registry = reg,
x = yield, min = 10.4, max = 11)
reg <- bf_map(protocol = "matches", data = bf_tbl, registry = reg,
x = commodity, set = c("soybean", "honey"), na.val = FALSE)
reg <- bf_map(protocol = "grepl", data = bf_tbl, registry = reg,
x = year, pattern = ".*r", na.val = FALSE)
# enumeration encoding
reg <- bf_map(protocol = "category", data = bf_tbl, registry = reg,
x = commodity, na.val = 0)
reg <- bf_map(protocol = "case", data = bf_tbl, registry = reg, na.val = 4,
yield >= 11, yield < 11 & yield > 9, yield < 9 & commodity == "maize")
# integer encoding
reg <- bf_map(protocol = "nChar", data = bf_tbl, registry = reg,
x = commodity, na.val = 0)
reg <- bf_map(protocol = "nInt", data = bf_tbl, registry = reg,
x = yield)
reg <- bf_map(protocol = "nDec", data = bf_tbl, registry = reg,
x = yield)
reg <- bf_map(protocol = "integer", data = bf_tbl, registry = reg,
x = as.integer(year), na.val = 0L)
# integer encoding with auto-scaling (numeric data mapped to integer range)
dat <- data.frame(density = c(0.5, 1.2, 2.8, 0.0, 3.1))
reg2 <- bf_registry(name = "scaledBF", description = "auto-scaled",
template = dat)
reg2 <- bf_map(protocol = "integer", data = dat, registry = reg2,
x = density, range = c(0, 3.1),
fields = list(significand = 5), na.val = 0L)
# floating-point encoding
reg <- bf_map(protocol = "numeric", data = bf_tbl, registry = reg,
x = yield, decimals = 2)
# finally, take a look at the registry
reg
# alternatively, a raster
library(terra)
bf_rst <- rast(nrows = 3, ncols = 3, vals = bf_tbl$commodity, names = "commodity")
bf_rst$yield <- rast(nrows = 3, ncols = 3, vals = bf_tbl$yield)
reg <- bf_registry(name = "testBF", description = "raster bitfield",
template = bf_rst)
reg <- bf_map(protocol = "na", data = bf_rst, registry = reg,
x = commodity)
reg <- bf_map(protocol = "range", data = bf_rst, registry = reg,
x = yield, min = 5, max = 11)
reg <- bf_map(protocol = "category", data = bf_rst, registry = reg,
x = commodity, na.val = 0)
reg
Run the code above in your browser using DataLab