How to calculate direct and indirect standardized rates by subgroups in R?

Using below example data, I am trying to calculate direct and indirect standardized rates by subgroups such as year, region and sex using "ageadjust.indirect" and "ageadjust.direct" functions in R, but not much luck. I appreciate any help.

#study Data
data <- data.frame (

  year = rep(c(rep("2010",20), rep("2011",20)),1),
  subregion = rep(c(rep("A",10), rep("B",10)),2),
  gender=rep(c(rep("M",5), rep("F",5)),4),
  agegr = rep(c('00-14','15-34','35-54','55-74','75+'),8),
  pop = round((runif(40, min = 10000, max = 99999)), digits = 0),
  count = round((runif(40, min = 100, max = 999)), digits = 0)
) 

data$rate = data$count / data$pop
# standard data
stdata <- data.frame(age=rep(c('00-14','15-34','35-54','55-74','75+'),2),
                       sex=rep(c('M','F'),c(5,5)),
                       pop=c(308543,401996,409450,199486,610631,
                             293991,388762,418814,227170,104944)
  )
#implement direct age standardization using 'ageadjust.direct'
library(epitools)
dsr<- ageadjust.direct(count = data$count, pop = data$pop, 
                                    , stdpop = stdata$pop)
round(100000*dsr, 2) ##rate per 100,000 per year using standard pop

# how to get dsr by year subregion, and gender?

#implement indirect age standardization using 'ageadjust.indirect'

dataB<-subset(data,subregion == 'B')

isr <- ageadjust.indirect(count = data$count, pop = data$pop,
                          stdcount = dataB$count, stdpop = dataB$pop)
round(isr$sir, 2)         ##standarized incidence ratio
round(100000*isr$rate, 2) ##rate per 100,000 per year

# how to get isr by year, subregion, and sex?
1 Like

The solution is provided for dsr in below Stackoverflow post.
https://stackoverflow.com/a/60137282/9836634

This topic was automatically closed 21 days after the last reply. New replies are no longer allowed.