psuID <- c(1:10)
D1 <- c(50, 50, 50, 50, 50, 70, 50, 50, 50, 50)
D2 <- c(50, 30, 90, 40, 25, 40, 80, 65, 30, 50)
dsn <- cbind.data.frame(psuID, D1, D2)
n.PSU <- 4
domain <- c("D1", "D2")
domain.req.n <- c(130, 50)
exp.domain.rr <- c(1, 1)
CompMOS(dsn = dsn, psuID = psuID, n.PSU = n.PSU, domain = domain,
domain.req.n = domain.req.n, exp.domain.rr = exp.domain.rr)
# MDarea.popA has multiple rows for each TRACT; need to summarize TRACT/Age totals
# for input to CompMOS
data(MDarea.popA)
MDpop <- MDarea.popA[,1:8]
MDpop$AgeGrp <- cut(MDpop$Age, breaks = c(0, 12, 17, 23),
labels = c("Age.44.or.under", "Age.45-64", "Age.65+"))
xx <- by(MDpop$TRACT, INDICES=MDpop$AgeGrp, table)
# All tracts do not contain every age group; merge tract/domain count tables, retaining all tracts
xx1 <- cbind(tract=rownames(xx$Age.44.or.under), as.data.frame(unname(xx$Age.44.or.under)))
colnames(xx1)[3] <- 'Age.44.or.under'
xx2 <- cbind(tract=rownames(xx$`Age.45-64`), as.data.frame(unname(xx$`Age.45-64`)))
colnames(xx2)[3] <- 'Age.45-64'
xx3 <- cbind(tract=rownames(xx$`Age.65+`), as.data.frame(unname(xx$`Age.65+`)))
colnames(xx3)[3] <- 'Age.65+'
pop <- merge(xx1,xx2,by='tract', all=TRUE)
pop <- merge(pop,xx3,by='tract', all=TRUE)
pop <- pop[, -c(2,4,6)]
# recode counts for missing tract/age-groups to 0
pop[is.na(pop)] <- 0
# Note that one tract cannot be sampled at the desired rate for the 'Age.65+' domain
MDmos <- CompMOS(dsn = pop, psuID = pop$tract, n.PSU = 15,
domain = c("Age.44.or.under", "Age.45-64", "Age.65+"),
exp.domain.rr = c(0.60, 0.70, 0.85),
domain.req.n = c(100, 100, 100))
Run the code above in your browser using DataLab