data(eusilcS)
data(eusilcP)
# no districts are available in the population, so we have to generate those
# we randomly assign districts within "region" in the eusilc population data
# each hh has the same district
simulate_districts <- function(inp) {
hhid <- "hid"
region <- "region"
a <- inp[!duplicated(inp[,hhid]),c(hhid, region)]
spl <- split(a, a[,region])
regions <- unique(inp[,region])
tmpres <- lapply(1:length(spl), function(x) {
codes <- paste(x, 1:sample(3:9,1), sep="")
spl[[x]]$district <- sample(codes, nrow(spl[[x]]), replace=TRUE)
spl[[x]]
})
tmpres <- do.call("rbind", tmpres)
tmpres <- tmpres[,-c(2)]
out <- merge(inp, tmpres, by.x=c(hhid), by.y=hhid, all.x=TRUE)
invisible(out)
}
eusilcP <- simulate_districts(eusilcP)
table(eusilcP$district)
# we generate a synthetic population
inp <- specifyInput(data=eusilcS, hhid="db030", hhsize="hsize", strata="db040", weight="db090")
synthPopObj <- simStructure(data=inp, method="direct", basicHHvars=c("age", "rb090"))
# we generate the input table using the broad region (variable 'region')
# and the districts, we have generated before.
# we
tab <- as.data.frame(xtabs(rep(1, nrow(eusilcP)) ~ eusilcP$region + eusilcP$district))
colnames(tab) <- c("db040", "district", "Freq")
synthPopObj <- simInitSpatial(synthPopObj, additional="district", region="db040", tspatial=tab)Run the code above in your browser using DataLab