193 lines
6.4 KiB
R
193 lines
6.4 KiB
R
## Article 1 data set definition
|
|
## To be enriched from Statistics Denmark
|
|
##
|
|
## Based on the ItMLiHSmar2022 course
|
|
|
|
library(Hmisc)
|
|
library(dplyr)
|
|
library(daDoctoR)
|
|
library(tidyverse)
|
|
library(patchwork)
|
|
library(caret)
|
|
library(glmnet)
|
|
library(leaps)
|
|
library(pROC)
|
|
library(gt)
|
|
library(gtsummary)
|
|
library(glue)
|
|
# library(ggdendro)
|
|
library(corrplot)
|
|
|
|
## ====================================================================
|
|
# Step 2: Selection
|
|
## ====================================================================
|
|
|
|
|
|
export<-export[,c("pase_0",
|
|
"age",
|
|
"sex",
|
|
"civil",
|
|
"smoke_ever",
|
|
"smoker",
|
|
"rtreat",
|
|
"alc",
|
|
"afli",
|
|
"hypertension",
|
|
"diabetes",
|
|
"mrs_0",
|
|
"nihss_c",
|
|
"thrombolysis",
|
|
"pad",
|
|
"thrombechtomy",
|
|
"ami",
|
|
"tci",
|
|
"pase_6")]
|
|
|
|
## ====================================================================
|
|
# Step 3: Formatting variables
|
|
## ====================================================================
|
|
|
|
export$diabetes[is.na(export$diabetes)]<-"no"
|
|
export$diabetes[is.na(export$hypertension)]<-"no"
|
|
export$thrombolysis[is.na(export$thrombolysis)]<-"no"
|
|
export$thrombechtomy[is.na(export$thrombechtomy)]<-"no"
|
|
export$pad[is.na(export$pad)]<-"no"
|
|
export$ami[is.na(export$ami)]<-"no"
|
|
# export$smoker_prev <- ifelse(export$smoker=="3","yes","no")
|
|
export$smoker <- ifelse(export$smoker=="1","yes","no")
|
|
export$smoker[is.na(export$smoker)] <- "no"
|
|
# export$mrs_0[export$mrs_0==3]<-NA
|
|
|
|
dta <- export %>%
|
|
# as_tibble()%>%
|
|
mutate(any_rep=factor(ifelse(thrombolysis=="yes"|thrombechtomy=="yes","yes","no")), # If not noted, no therapy was received
|
|
male_sex= factor(ifelse(sex=="female","no","yes")),
|
|
# smoke_ever=factor(ifelse(smoke_ever=="never","no","yes")),
|
|
civil=factor(ifelse(civil=="partner","no","yes")), # Sets "yes" for not-cohabiting
|
|
rtreat=factor(ifelse(rtreat=="Placebo","no","yes")), # "Yes" receives active treatment
|
|
alc=factor(ifelse(alc=="more","yes","no")), # Yes for more than guideline
|
|
pase_0=as.numeric(pase_0),
|
|
pase_6=as.numeric(pase_6),
|
|
across(c("diabetes",
|
|
"hypertension",
|
|
"smoker",
|
|
"afli",
|
|
"pad",
|
|
"ami",
|
|
"tci",
|
|
"mrs_0"),as.factor),
|
|
across(c("nihss_c",
|
|
"age"),as.numeric )
|
|
)%>%
|
|
select(-c(sex))
|
|
|
|
|
|
## ====================================================================
|
|
# Step 4: Defining outcome
|
|
## ====================================================================
|
|
|
|
## Changed to step 7
|
|
## This is to perform proper quantile split based on actually included.
|
|
|
|
## ====================================================================
|
|
# Step 5: Ordering variables
|
|
## ====================================================================
|
|
|
|
vars <- c("age",
|
|
"male_sex",
|
|
"civil",
|
|
"pase_0",
|
|
"smoker",
|
|
"alc",
|
|
"afli",
|
|
"hypertension",
|
|
"diabetes",
|
|
"pad",
|
|
"ami",
|
|
"tci",
|
|
"mrs_0",
|
|
"nihss_c",
|
|
"any_rep",
|
|
"rtreat",
|
|
"pase_6")
|
|
|
|
dta<-dta[vars]
|
|
|
|
## ====================================================================
|
|
# Step 6: Labeling
|
|
## ====================================================================
|
|
|
|
var.labels = c(age="Age",
|
|
male_sex="Male",
|
|
civil="Living alone",
|
|
pase_0="Pre-stroke PASE score",
|
|
pase_6="Six month PASE score",
|
|
smoker="Daily or occasinally smoking",
|
|
alc="More alcohol than recommendation",
|
|
afli="AFIB",
|
|
hypertension="Hypertension",
|
|
diabetes="Diabetes",
|
|
pad="PAD",
|
|
ami="Previous MI",
|
|
tci="Previous TIA",
|
|
mrs_0="Pre-stroke mRS [-1]",
|
|
nihss_c="Acute NIHSS score",
|
|
thrombolysis="Acute thrombolysis",
|
|
thrombechtomy="Acute thrombechtomy",
|
|
any_rep="Any reperfusion therapy",
|
|
rtreat="Active trial treatment",
|
|
pase_drop_fac="PASE first quartile drop F",
|
|
pase_hop_fac="PASE first quartile hop F",
|
|
pase_0_cut="PASE 0 quartiles",
|
|
pase_6_cut="PASE 6 quartiles")
|
|
|
|
|
|
|
|
## ====================================================================
|
|
# Step 7: final data export
|
|
## ====================================================================
|
|
|
|
data_summary<-summary(dta)
|
|
|
|
# Saving "old" factorised variables
|
|
sel<-sapply(dta,is.factor)
|
|
# Reformatting factors as 1/2 for analysis
|
|
dta<-dta |>
|
|
mutate(across(where(is.factor), as.numeric))|> # Turning factors into 1(no) or 2(yes) for model. Numbered alphabetically.
|
|
mutate(across(matches(colnames(dta)[sel]), as.factor),
|
|
across(starts_with("pase_"), as.numeric))
|
|
|
|
# Filtering out non-PASE
|
|
X_tbl<-dta |>
|
|
filter(!is.na(pase_0),!is.na(pase_6))
|
|
|
|
nrow(X_tbl)
|
|
|
|
# Defining possible outcome meassures. Keeping in df for characterisation
|
|
X_tbl <- X_tbl|>
|
|
mutate(## Relative decline
|
|
pase_diff=(pase_0-pase_6),
|
|
pase_decl_rel = pase_diff/pase_0*100,
|
|
# pase_decl_rel_fac=factor(ifelse(pase_decl_rel>=rel_dif,"yes","no")),
|
|
## Absolute decline
|
|
# pase_decl_abs_fac=factor(ifelse(pase_diff>=abs_dif,"yes","no")),
|
|
## Drop
|
|
pase_0_cut=quantile_cut(as.numeric(pase_0),
|
|
groups=4,
|
|
group.names = c(as.character(1:4)),
|
|
y=as.numeric(pase_0),
|
|
ordered.f = TRUE,
|
|
inc.outs = TRUE,
|
|
detail.lst=FALSE),
|
|
pase_6_cut=quantile_cut(as.numeric(pase_6),
|
|
groups=4,
|
|
group.names = c(as.character(1:4)),
|
|
y=as.numeric(pase_0),
|
|
ordered.f = TRUE,
|
|
inc.outs = TRUE,
|
|
detail.lst=FALSE),
|
|
pase_drop_fac=factor(ifelse(pase_6_cut==1&pase_0_cut!=1,"yes","no")),
|
|
pase_hop_fac=factor(ifelse(pase_6_cut!=1&pase_0_cut==1,"yes","no")))
|
|
|
|
Hmisc::label(X_tbl) = as.list(var.labels[match(names(X_tbl), names(var.labels))])
|
|
|