generated from opensafely/research-template
-
Notifications
You must be signed in to change notification settings - Fork 1
/
ITS_stratified_var.R
99 lines (81 loc) · 4.35 KB
/
ITS_stratified_var.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
##############################################################################
##### This script is for preparing the variable for ITS #####
##### The outcome variables includes broad spectrum & repeat prescribing #####
##############################################################################
library("dplyr")
library("tidyverse")
library("lubridate")
rm(list=ls())
setwd(here::here("output", "measures"))
df <- readRDS("cleaned_indication_ab.rds")
### prepare var ### without Amoxicillin ###
broadtype <- c("Ampicillin","Co-amoxiclav","Moxifloxacin","Cefaclor","Cefadroxil",
"Cefuroxime", "Cefalexin","Cefazolin","Cefixime","Cefotaxime","Cefoxitin","Cefradine",
"Cefpirome","Ceftazidime","Ceftriaxone", "Cefprozil","Ciprofloxacin","Co-fluampicil",
"Doripenem","Ertapenem", "Cilastatin","Cefamandole","Levofloxacin" ,
"Meropenem" ,"Nalidixic acid","Norfloxacin", "Ofloxacin","Cefpodoxime","Cefepime")
start_covid = as.Date("2020-04-01")
covid_adjustment_period_from = as.Date("2020-01-01")
### Prepare the data frame for Interrupted time-series analysis ###
### Transfer df into numOutcome / numEligible version
df <- df %>% filter (age>3)
df <- df %>% mutate(age_group = case_when(age>3 & age<=15 ~ "<16",
age>=16 & age<=44 ~ "16-44",
age>=45 & age<=64 ~ "45-64",
age>=65 ~ "65+"))
df$cal_year <- year(df$date)
df$cal_mon <- month(df$date)
df$time <- as.numeric(df$cal_mon+(df$cal_year-2019)*12)
### Broad spectrum
df.broad <- df %>% filter(type %in% broadtype )
df.broad_total <- df.broad %>% group_by(incidental,sameday_ab,time,age_group,sex) %>% summarise(
numOutcome = n(),
)
df.all <- df %>% group_by(incidental,sameday_ab,time,age_group,sex) %>% summarise(
numEligible = n(),
)
df.model <- merge(df.broad_total,df.all,by=c("incidental","sameday_ab","time","age_group","sex"))
df.model <- df.model %>% mutate(mon = case_when(time>=1 & time<=12 ~ time,
time>=13 & time<=24 ~ time-12,
time>=24 & time<=36 ~ time-24,
time>36 ~ time-36)) %>%
mutate(year = case_when(time>=1 & time<=12 ~ 2019,
time>=13 & time<=24 ~ 2020,
time>=24 & time<=36 ~ 2021,
time>36 ~ 2022)) %>%
mutate(day = 1)
df.model$monPlot <- as.Date(with(df.model,paste(year,mon,day,sep="-")),"%Y-%m-%d")
df.model <- df.model %>%
mutate(pre_covid = ifelse(monPlot < covid_adjustment_period_from , 1, 0),
during_covid = ifelse(monPlot >= start_covid , 1, 0)) %>%
mutate(covid = ifelse(pre_covid == 1 , 0,
ifelse (during_covid == 1, 1,
NA)))
write_csv(df.model, here::here("output", "mon_stratified_broad.csv"))
rm(df.all,df.broad,df.broad_total,df.model)
### repeat antibiotics
df.repeat <- df %>% filter(repeat_ab==1)
df.repeat_total <- df.repeat %>% group_by(incidental,sameday_ab,time,age_group,sex) %>% summarise(
numOutcome = n(),
)
df.all <- df %>% group_by(incidental,sameday_ab,time,age_group,sex) %>% summarise(
numEligible = n(),
)
df.model <- merge(df.repeat_total,df.all,by=c("incidental","sameday_ab","time","age_group","sex"))
df.model <- df.model %>% mutate(mon = case_when(time>=1 & time<=12 ~ time,
time>=13 & time<=24 ~ time-12,
time>=24 & time<=36 ~ time-24,
time>36 ~ time-36)) %>%
mutate(year = case_when(time>=1 & time<=12 ~ 2019,
time>=13 & time<=24 ~ 2020,
time>=24 & time<=36 ~ 2021,
time>36 ~ 2022)) %>%
mutate(day = 1)
df.model$monPlot <- as.Date(with(df.model,paste(year,mon,day,sep="-")),"%Y-%m-%d")
df.model <- df.model %>%
mutate(pre_covid = ifelse(monPlot < covid_adjustment_period_from , 1, 0),
during_covid = ifelse(monPlot >= start_covid , 1, 0)) %>%
mutate(covid = ifelse(pre_covid == 1 , 0,
ifelse (during_covid == 1, 1,
NA)))
write_csv(df.model, here::here("output", "mon_stratified_repeat.csv"))