Nothing
context("test linked-tables")
test_that("linked-tables work", {
skip_on_cran()
# Data including two aggregating variables.
df <- data.frame(
region = c("A", "B", "I", "J", "K", "L", "M", "N"),
county = c(rep("county-1", 4), rep("county-2", 4)),
group = c(rep("small", 5), "BIG", "BIG", "small"),
n = c(2, 2, 8, 8, 3, 3, 3, 7),
stringsAsFactors = FALSE
)
# defining hierarchies
r1 <- sdcHierarchies::hier_create(root = "Total", nodes = c("county-1", "county-2"))
r1 <- sdcHierarchies::hier_add(r1, root = "county-1", nodes = c("A", "B", "I", "J"))
r1 <- sdcHierarchies::hier_add(r1, root = "county-2", nodes = c("K", "L", "M", "N"))
dl1 <- list(region = r1)
r2 <- sdcHierarchies::hier_create(root = "Total", nodes = c("big", "small"))
r2 <- sdcHierarchies::hier_add(r2, root = "big", nodes = c("L", "M"))
r2 <- sdcHierarchies::hier_add(r2, root = "small", nodes = c("A", "B", "I", "J", "K", "N"))
dl2 <- list(region = r2)
# defining common cells
common_cells <- list(
region = list("region", c("Total", "A", "B", "I", "J", "K", "L", "M", "N"))[c(1, 1, 2, 2)]
)
# makeProblem and primarySuppression in sdcTable
p1 <- makeProblem(data = df, dimList = dl1, dimVarInd = 1, freqVarInd = 4)
p2 <- makeProblem(data = df, dimList = dl2, dimVarInd = 1, freqVarInd = 4)
p1 <- primarySuppression(p1, type = "freq", maxN = 3)
p2 <- primarySuppression(p2, type = "freq", maxN = 3)
# check that if protected individually, both tables are safe
p1_prot <- protectTable(p1, method = "SIMPLEHEURISTIC")
p2_prot <- protectTable(p2, method = "SIMPLEHEURISTIC")
# individually, these cells are safe and no additional suppressions are required
expect_identical(getInfo(p1_prot, "nrPrimSupps"), 5L)
expect_identical(getInfo(p2_prot, "nrPrimSupps"), 5L)
expect_identical(getInfo(p1_prot, "nrSecondSupps"), 0L)
expect_identical(getInfo(p2_prot, "nrSecondSupps"), 0L)
expect_identical(all(attack(p1_prot)$protected), TRUE)
expect_identical(all(attack(p2_prot)$protected), TRUE)
# however: suppressed cells can be revealed
# by looking at both tables. The difference between "county-1" and "small"
# is two cells, K and N. The difference is 10 and N is 7.
# -> B can be calculated as 10-7=3
# Secondary suppression of linked tables
out <- protect_linked_tables(
x = p1,
y = p2,
common_cells = common_cells,
doSingletons = TRUE
)
# we check that an additional suppression was found
expect_identical(getInfo(out$x, "nrPrimSupps"), 5L)
expect_identical(getInfo(out$y, "nrPrimSupps"), 5L)
expect_identical(getInfo(out$x, "nrSecondSupps"), 1L)
expect_identical(getInfo(out$y, "nrSecondSupps"), 1L)
region <- sdcStatus <- NULL
fd1 <- getInfo(out$x, "finalData")
fd2 <- getInfo(out$y, "finalData")
expect_equal(fd1[region == "N", sdcStatus], "x")
expect_equal(fd2[region == "N", sdcStatus], "x")
expect_equal(fd1[region == "N", Freq], 7)
expect_equal(fd2[region == "N", Freq], 7)
})
Any scripts or data that you put into this service are public.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.