generated from opensafely/research-template
/
table_2.R
106 lines (91 loc) · 3.92 KB
/
table_2.R
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
######################################
# This script:
# - Produces counts of patients prescribed antipsychotic by cohrt and demographic characteristics prior to April 2021.
# - saves data summaries (as table)
######################################
# Preliminaries ----
## Import libraries
library('tidyverse')
library('lubridate')
library('reshape2')
library('here')
library('gt')
library('gtsummary')
## Create output directory
dir.create(here::here("output", "tables"), showWarnings = FALSE, recursive=TRUE)
## Custom functions
source(here("analysis", "lib", "custom_functions.R"))
## Read in data
data_cohort <- read_rds(here::here("output", "data", "data_processed.rds"))
# Table 2 ----
## All
table_2_all <- data_cohort %>%
mutate(ethnicity = ifelse(is.na(ethnicity), 6, ethnicity),
ethnicity = fct_case_when(
ethnicity == "1" ~ "White",
ethnicity == "2" ~ "Mixed",
ethnicity == "3" ~ "Asian or Asian British",
ethnicity == "4" ~ "Black or Black British",
ethnicity == "5" ~ "Other ethnic groups",
ethnicity == "6" ~ "Unknown",
#TRUE ~ "Unknown"
TRUE ~ NA_character_),
imd = na_if(imd, "0"),
imd = fct_case_when(
imd == 1 ~ "1 most deprived",
imd == 2 ~ "2",
imd == 3 ~ "3",
imd == 4 ~ "4",
imd == 5 ~ "5 least deprived",
#TRUE ~ "Unknown",
TRUE ~ NA_character_
),
region = fct_case_when(
region == "London" ~ "London",
region == "East" ~ "East of England",
region == "East Midlands" ~ "East Midlands",
region == "North East" ~ "North East",
region == "North West" ~ "North West",
region == "South East" ~ "South East",
region == "South West" ~ "South West",
region == "West Midlands" ~ "West Midlands",
region == "Yorkshire and The Humber" ~ "Yorkshire and the Humber",
#TRUE ~ "Unknown",
TRUE ~ NA_character_)) %>%
mutate(ageband = cut(age,
breaks = c(0, 17, 24, 34, 44, 54, 69, 79, Inf),
labels = c("0-17", "18-24", "25-34", "35-44", "45-54", "55-69", "70-79", "80+"),
right = FALSE)) %>%
select(antipsychotic,
ageband,
sex,
region,
imd,
ethnicity) %>%
tbl_summary(by = antipsychotic) %>%
add_overall()
table_2_all <- table_2_all$table_body %>%
select(group = variable, variable = label, population = stat_0, antipsychotic = stat_2) %>%
separate(population, c("population","perc"), sep = "([(])") %>%
separate(antipsychotic, c("antipsychotic","perc2"), sep = "([(])") %>%
mutate(population = gsub(" ", "", population),
population = as.numeric(gsub(",", "", population)),
antipsychotic = gsub(" ", "", antipsychotic),
antipsychotic = as.numeric(gsub(",", "", antipsychotic))) %>%
filter(!(is.na(population)),
!(is.na(antipsychotic))) %>%
select(-perc, - perc2) %>%
mutate(rate = antipsychotic/population*100000)
## Sub groups
table2_autism <- calculate_table2(population = "autism", Y = 10000)
table2_care_home <- calculate_table2(population = "care_home", Y = 10000)
table2_dementia <- calculate_table2(population = "dementia", Y = 10000)
table2_ld <- calculate_table2(population = "learning_disability", Y = 10000)
table2_smi <- calculate_table2(population = "serious_mental_illness", Y = 10000)
# Save tables ----
write_csv(table_2_all, here::here("output", "tables", "table_2_all.csv"))
write_csv(table2_autism, here::here("output", "tables", "table2_autism.csv"))
write_csv(table2_dementia, here::here("output", "tables", "table2_dementia.csv"))
write_csv(table2_care_home, here::here("output", "tables", "table2_care_home.csv"))
write_csv(table2_ld, here::here("output", "tables", "table2_ld.csv"))
write_csv(table2_smi, here::here("output", "tables", "table2_smi.csv"))