First we load annual cancer incidence rate and mortality rate from HA open data

carinc_list <- rjson::fromJSON(file = "https://www3.ha.org.hk/cancereg/datagovhk/HKCaR-incidence-EN.json")
carinc_df <- as.data.frame(do.call(rbind, carinc_list))

carmor_list <- rjson::fromJSON(file = "https://www3.ha.org.hk/cancereg/datagovhk/HKCaR-mortality-EN.json")
carmor_df <- as.data.frame(do.call(rbind, carmor_list))

cancer_df <- merge(carinc_df, carmor_df, by = c("Year", "Sex"))
cancer_df[colnames(cancer_df)[-2]] <- cancer_df[colnames(cancer_df)[-2]] %>% apply(MARGIN = c(1, 2), FUN = as.numeric) # unlist numeric elements
cancer_df[colnames(cancer_df)[2]] <- lapply(cancer_df[colnames(cancer_df)[2]], FUN = as.character) # unlist char elements
head(cancer_df,5)
##   Year    Sex Number_of_new_cases Crude_incidence_rate
## 1 1983 Female                6334                246.1
## 2 1983   Male                8654                312.3
## 3 1984 Female                6280                241.0
## 4 1984   Male                8313                297.8
## 5 1985 Female                6694                253.5
##   Age_standardized_incidence_rate Number_of_deaths Crude_mortality_rate
## 1                           228.8             2687                104.4
## 2                           349.8             4539                163.8
## 3                           221.3             2812                107.9
## 4                           326.1             4535                162.4
## 5                           229.3             2945                111.5
##   Age_standardized_mortality_rate
## 1                            93.8
## 2                           185.0
## 3                            95.3
## 4                           179.5
## 5                            97.0

Interative chart to visualize change of cancer incidence rate by gender - play button to play the chart in standard speed - scrollbar allows focus on specific year