R/sex_age_stats.R

Defines functions sex_age_stats

Documented in sex_age_stats

#' A tools4ukbb function
#' 
#' Function output: a dataframe with data regarding sex and age demographics (count female, count male, count total, median and mean age)
#' Used in dx_demographics() function
#' 
#' @param icd_list a list of the icd10 codes you wish to investigate
#' @keywords demographics, sex, age
#' @export
#' @examples
#' sex_age_stats()
 
sex_age_stats <- function(list_icd, dataframe){
  indiv_with_disease <- individuals_with_disease(list_icd, dataframe)
  sex_df <- filter(dataframe, is_in(eid, indiv_with_disease[[1]])) %>% select(genetic_sex_f22001_0_0)
  
  if (nrow(sex_df) > 0) {                
    age <- dx_age(list_icd, "DX", dataframe)
    age_sex_combined <- bind_cols(sex_df, age)
    sexes <- c("Male", "Female", "combined")
    age_stats <- map(sexes, get_stats_by_sex, age_sex_combined) %>% flatten %>% unlist() 
                           
    Percent_female <- age_stats[6]/age_stats[9]
    Percent_male <- age_stats[3]/age_stats[9]
    stats_df <- data.frame(age_stats[6], age_stats[3], age_stats[9], Percent_female, Percent_male, age_stats[7], age_stats[4], age_stats[1], age_stats[8], age_stats[5], age_stats[2])
    colnames(stats_df) <- c("Female_count", "Male_count", "Total", "Percent_female", "Percent_male", "mean_age_dxd", "Female_mean_age_dxd", "Male_mean_age_dxd", "median_age_dxd", 
                         "Female_median_age_dxd", "Male_median_age_dxd")
    
  } else {
    stats_df <- data.frame(Female_count = 0, Male_count = 0, Total = 0, Percent_female = NA, Percent_male = NA, mean_age_dxd = NA, Female_mean_age_dxd = NA, 
                           Male_mean_age_dxd = NA, median_age_dxd = NA, Female_median_age_dxd = NA, Male_median_age_dxd = NA)
  }

    stats_df
}
Lab-Jaiswal/tools4ukbb documentation built on May 12, 2022, 9:11 a.m.