## Article 1 data set definition ## To be enriched from Statistics Denmark ## ## Based on the ItMLiHSmar2022 course require(Hmisc) require(dplyr) # library(daDoctoR) require(tidyverse) require(patchwork) require(caret) require(glmnet) require(leaps) require(pROC) require(gt) require(gtsummary) require(glue) # library(ggdendro) require(corrplot) require(stRoke) ## ==================================================================== # Step 1: Import ## ==================================================================== if ("try-error" %in% class(t <- try(read.csv("/Volumes/Data/exercise/source/background.csv")))) { export <- read.csv( "/Volumes/Data 1/exercise/source/background.csv", colClasses = "character", na.strings = c("NA", "", "unknown") ) } else if (!"try-error" %in% class(t)) { export <- read.csv( "/Volumes/Data/exercise/source/background.csv", colClasses = "character", na.strings = c("NA", "", "unknown") ) } ## ==================================================================== # 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))])