gravatar

Amajid12

Abdimajid Mohamed

Recently Published

Document
Textbook Outcomes Revisions
Textbook Outcomes with LOS
--- title: "Textbook Outcomes Code" author: "Abdimajid Mohamed" date: "11/15/2022" output: html_document --- ```{r} library(dplyr) library(gtsummary) library(survival) library(labelled) library(tidyverse) library(broom) library(ggplot2) library(survminer) library(VIM) library(tibble) library(ggplot2) library(OddsPlotty) library(e1071) library(ggthemes) library(mlbench) library(caret) ``` ```{r} load("TextbookOutcomes.RData") TextbookOutcomes <- TextbookOutcomes %>% mutate(TextbookOutcomes, Age = ifelse(Age >= 85, "85+", ifelse(Age >= 75, "75-84", ifelse(Age >= 65, "65-74", ifelse(Age >=0, "0-65", NA))))) ``` ```{r} ### Recoding mortality TextbookOutcomes$DOpertoD[TextbookOutcomes$DOpertoD == -99] <- "No" TextbookOutcomes$DOpertoD[TextbookOutcomes$DOpertoD == 0] <- "Yes" TextbookOutcomes$DOpertoD[TextbookOutcomes$DOpertoD == 1] <- "Yes" TextbookOutcomes$DOpertoD[TextbookOutcomes$DOpertoD == 2] <- "Yes" TextbookOutcomes$DOpertoD[TextbookOutcomes$DOpertoD == 3] <- "Yes" TextbookOutcomes$DOpertoD[TextbookOutcomes$DOpertoD == 4] <- "Yes" TextbookOutcomes$DOpertoD[TextbookOutcomes$DOpertoD == 5] <- "Yes" TextbookOutcomes$DOpertoD[TextbookOutcomes$DOpertoD == 6] <- "Yes" TextbookOutcomes$DOpertoD[TextbookOutcomes$DOpertoD == 7] <- "Yes" TextbookOutcomes$DOpertoD[TextbookOutcomes$DOpertoD == 8] <- "Yes" TextbookOutcomes$DOpertoD[TextbookOutcomes$DOpertoD == 9] <- "Yes" TextbookOutcomes$DOpertoD[TextbookOutcomes$DOpertoD == 10] <- "Yes" TextbookOutcomes$DOpertoD[TextbookOutcomes$DOpertoD == 11] <- "Yes" TextbookOutcomes$DOpertoD[TextbookOutcomes$DOpertoD == 12] <- "Yes" TextbookOutcomes$DOpertoD[TextbookOutcomes$DOpertoD == 13] <- "Yes" TextbookOutcomes$DOpertoD[TextbookOutcomes$DOpertoD == 14] <- "Yes" TextbookOutcomes$DOpertoD[TextbookOutcomes$DOpertoD == 15] <- "Yes" TextbookOutcomes$DOpertoD[TextbookOutcomes$DOpertoD == 16] <- "Yes" TextbookOutcomes$DOpertoD[TextbookOutcomes$DOpertoD == 17] <- "Yes" TextbookOutcomes$DOpertoD[TextbookOutcomes$DOpertoD == 18] <- "Yes" TextbookOutcomes$DOpertoD[TextbookOutcomes$DOpertoD == 19] <- "Yes" TextbookOutcomes$DOpertoD[TextbookOutcomes$DOpertoD == 20] <- "Yes" TextbookOutcomes$DOpertoD[TextbookOutcomes$DOpertoD == 21] <- "Yes" TextbookOutcomes$DOpertoD[TextbookOutcomes$DOpertoD == 22] <- "Yes" TextbookOutcomes$DOpertoD[TextbookOutcomes$DOpertoD == 23] <- "Yes" TextbookOutcomes$DOpertoD[TextbookOutcomes$DOpertoD == 24] <- "Yes" TextbookOutcomes$DOpertoD[TextbookOutcomes$DOpertoD == 25] <- "Yes" TextbookOutcomes$DOpertoD[TextbookOutcomes$DOpertoD == 26] <- "Yes" TextbookOutcomes$DOpertoD[TextbookOutcomes$DOpertoD == 27] <- "Yes" TextbookOutcomes$DOpertoD[TextbookOutcomes$DOpertoD == 28] <- "Yes" TextbookOutcomes$DOpertoD[TextbookOutcomes$DOpertoD == 29] <- "Yes" TextbookOutcomes$DOpertoD[TextbookOutcomes$DOpertoD == 30] <- "Yes" TextbookOutcomes$PRNCPTX[TextbookOutcomes$PRNCPTX == "EXCISION AMPULLA VATER"] <- NA TextbookOutcomes$PRNCPTX[TextbookOutcomes$PRNCPTX == "EXCISION LESION PANCREAS"] <- NA TextbookOutcomes$PRNCPTX[TextbookOutcomes$PRNCPTX == "UNLISTED PROCEDURE PANCREAS"] <- NA TextbookOutcomes$PRNCPTX[TextbookOutcomes$PRNCPTX == "PNCRTECT WHIPPLE W/O PANCREATOJEJUNOSTOMY"] <- "Whipple" TextbookOutcomes$PRNCPTX[TextbookOutcomes$PRNCPTX == "PNCRTECT W/PANCREATOJEJUNOSTOMY"] <- "Whipple" TextbookOutcomes$PRNCPTX[TextbookOutcomes$PRNCPTX == "PNCRTECT DSTL STOT W/PNCRTCOJEJUNOSTOMY"] <- "Distal Pancreatectomy" TextbookOutcomes$PRNCPTX[TextbookOutcomes$PRNCPTX == "PNCRTECT DSTL STOT W/O PNCRTCOJEJUNOSTOMY"] <- "Distal Pancreatectomy" TextbookOutcomes$PRNCPTX[TextbookOutcomes$PRNCPTX == "PNCRTECT PROX STOT W/PANCREATOJEJUNOSTOMY"] <- "Whipple" TextbookOutcomes$PRNCPTX[TextbookOutcomes$PRNCPTX == "PNCRTECT PROX STOT W/O PANCREATOJEJUNOSTOMY"] <- "Whipple" TextbookOutcomes$PRNCPTX[TextbookOutcomes$PRNCPTX == "PANCREATECTOMY TOTAL"] <- "Total Pancreatectomy" TextbookOutcomes$PRNCPTX[TextbookOutcomes$PRNCPTX == "PNCRTECT DSTL NR-TOT W/PRSRV DUO CHLD-TYP PX"] <- "Total Pancreatectomy" TextbookOutcomes$PRNCPTX[TextbookOutcomes$PRNCPTX == "HEPATECTOMY RESCJ PARTIAL LOBECTOMY"] <- "Partial Lobectomy" TextbookOutcomes$PRNCPTX[TextbookOutcomes$PRNCPTX == "HEPATECTOMY RESCJ TOTAL LEFT LOBECTOMY"] <- "Lobectomy" TextbookOutcomes$PRNCPTX[TextbookOutcomes$PRNCPTX == "HEPATECTOMY RESCJ TOTAL RIGHT LOBECTOMY"] <- "Lobectomy" TextbookOutcomes$PRNCPTX[TextbookOutcomes$PRNCPTX == "HEPATECTOMY RESCJ TRISEGMENTECTOMY"] <- "Trisegmentectomy" ``` ```{r} table(TextbookOutcomes$PRNCPTX) ``` ```{r} TextbookOutcomes <- TextbookOutcomes %>% mutate(TextbookOutcomes, PatientGroup = ifelse(PRNCPTX == "Partial Lobectomy", "Liver", ifelse(PRNCPTX == "Lobectomy", "Liver", ifelse(PRNCPTX == "Trisegmentectomy", "Liver", ifelse(PRNCPTX == "Whipple", "Pancreas", ifelse(PRNCPTX == "Distal Pancreatectomy", "Pancreas", ifelse(PRNCPTX == "Total Pancreatectomy", "Pancreas", NA))))))) ``` ```{r} ### Recoding readmission TextbookOutcomes$READMISSION1[TextbookOutcomes$READMISSION1 == "NULL"] <- NA TextbookOutcomes$READMISSION1[TextbookOutcomes$READMISSION1 == "NULL"] <- NA ``` ```{r} table(TextbookOutcomes$READMISSION1) ``` ```{r} TextbookOutcomes$DOptoDis[TextbookOutcomes$DOptoDis == -99] <- NA ``` ```{r} table(TextbookOutcomes$PRNCPTX) ``` ```{r} TextbookOutcomes$RACE_NEW[TextbookOutcomes$RACE_NEW == "American Indian or Alaska Native"] <- "Other" TextbookOutcomes$RACE_NEW[TextbookOutcomes$RACE_NEW == "Asian"] <- "Other" TextbookOutcomes$RACE_NEW[TextbookOutcomes$RACE_NEW == "Native Hawaiian or Pacific Islander"] <- "Other" TextbookOutcomes$RACE_NEW[TextbookOutcomes$RACE_NEW == "Black or African American"] <- "Black" TextbookOutcomes$RACE_NEW[TextbookOutcomes$RACE_NEW == "Unknown/Not Reported"] <- NA TextbookOutcomes$WEIGHT[TextbookOutcomes$WEIGHT ==-99] <- NA TextbookOutcomes$HEIGHT[TextbookOutcomes$HEIGHT ==-99] <- NA TextbookOutcomes$BMI <- (TextbookOutcomes$WEIGHT / TextbookOutcomes$HEIGHT / TextbookOutcomes$HEIGHT) *703 TextbookOutcomes <- TextbookOutcomes %>% mutate(TextbookOutcomes, BMILabled = ifelse(BMI >= 40, "Morbidly Obese", ifelse(BMI >= 30, "Obese", ifelse(BMI >= 25, "Overweight", ifelse(BMI >=18.5, "Normal Weight", ifelse(BMI <= 18.49, "Underweight", NA)))))) ``` ```{r} TextbookOutcomes$ASACLAS[TextbookOutcomes$ASACLAS == "5-Moribund"] <- NA TextbookOutcomes$ASACLAS[TextbookOutcomes$ASACLAS == "None assigned"] <- NA ``` ```{r} ### Create MFI column TextbookOutcomes$DIABETES[TextbookOutcomes$DIABETES == "INSULIN"] <- "Yes" TextbookOutcomes$DIABETES[TextbookOutcomes$DIABETES == "NON-INSULIN"] <- "Yes" ``` ```{r} ###Create new numeric column that will be used to create the MFI5 column 0, >1, and greater than >2 ##Diabeties recoded for MFI TextbookOutcomes <- TextbookOutcomes %>% mutate(TextbookOutcomes, Diabetes1 = ifelse(DIABETES == "INSULIN", "Yes", ifelse(DIABETES == "NON-INSULIN", "Yes", ifelse(DIABETES == "NO", "No", "NA")))) ``` ###Create new numeric column that will be used to create the MFI5 column 0, >1, and greater than >2 ###CHF recoded for MFI TextbookOutcomes <- TextbookOutcomes %>% mutate(TextbookOutcomes, CHFMFI = ifelse(HXCHF == “Yes”, “1”, ifelse(HXCHF == “No”, “0”, “NA”))) ###Create new numeric column that will be used to create the MFI5 column 0, >1, and greater than >2 ### COPD recoded for MFI TextbookOutcomes <- TextbookOutcomes %>% mutate(TextbookOutcomes, COPDMFI = ifelse(HXCOPD == “Yes”, “1”, ifelse(HXCOPD == “No”, “0”, “NA”))) ###Create new numeric column that will be used to create the MFI5 column 0, >1, and greater than >2 ### Hypertension with medications recoded for MFI TextbookOutcomes <- TextbookOutcomes %>% mutate(TextbookOutcomes, HYPERMEDMFI = ifelse(HYPERMED == “Yes”, “1”, ifelse(HYPERMED == “No”, “0”, “NA”))) ```{r} ##recode fnstatus2 TextbookOutcomes$FNSTATUS2[TextbookOutcomes$FNSTATUS2 == "Unknown"] <- NA ``` TextbookOutcomes <- TextbookOutcomes %>% mutate(TextbookOutcomes, FuncStatus = ifelse(FNSTATUS2 == “Yes”, “1”, ifelse(FNSTATUS2 == “No”, “0”, NA))) ##making the columns numeric to add them properly TextbookOutcomesHYPERMEDMFI<−as.numeric(TextbookOutcomesHYPERMEDMFI) TextbookOutcomesCOPDMFI<−as.numeric(TextbookOutcomesCOPDMFI) TextbookOutcomesCHFMFI<−as.numeric(TextbookOutcomesCHFMFI) TextbookOutcomesDiabetesMFI<−as.numeric(TextbookOutcomesDiabetesMFI) TextbookOutcomesFuncStatus<−as.numeric(TextbookOutcomesFuncStatus) ###Creating MFI column TextbookOutcomesMFI5<−(TextbookOutcomesHYPERMEDMFI + TextbookOutcomesCOPDMFI+TextbookOutcomesCHFMFI + TextbookOutcomesDiabetesMFI+TextbookOutcomesFuncStatus ) ```{r} ##recoding Hep and Pan targeted Complications to yes or no (will need to add in targeted complications Pan: Fistula, Delayed Gastric Emptying and what about percdrain? | Hep: Bile leakage, hepliverfail) TextbookOutcomes$PAN_FISTULA[TextbookOutcomes$PAN_FISTULA =="Biochemical Leak only"] <- "No" TextbookOutcomes$PAN_FISTULA[TextbookOutcomes$PAN_FISTULA =="No evidence of Biochemical Leak or POPF"] <- "No" TextbookOutcomes$PAN_FISTULA[TextbookOutcomes$PAN_FISTULA =="Yes-persistent drainage, drain continued >7 days"] <- "Yes" TextbookOutcomes$PAN_FISTULA[TextbookOutcomes$PAN_FISTULA =="Yes-clinical diagnosis, percutaneous drainage performed"] <- "Yes" TextbookOutcomes$PAN_FISTULA[TextbookOutcomes$PAN_FISTULA =="Yes-persistent drainage, percutaneous drainage performed"] <- "Yes" TextbookOutcomes$PAN_FISTULA[TextbookOutcomes$PAN_FISTULA =="Yes-persistent drainage, NPO-TPN"] <- "Yes" TextbookOutcomes$PAN_FISTULA[TextbookOutcomes$PAN_FISTULA =="Yes-clinical diagnosis, drain continued >7 days"] <- "Yes" TextbookOutcomes$PAN_FISTULA[TextbookOutcomes$PAN_FISTULA =="Yes, Grade B POPF present"] <- "Yes" TextbookOutcomes$PAN_FISTULA[TextbookOutcomes$PAN_FISTULA =="Yes-clinical diagnosis, spontaneous wound drainage"] <- "Yes" TextbookOutcomes$PAN_FISTULA[TextbookOutcomes$PAN_FISTULA =="Yes-clinical diagnosis, NPO-TPN"] <- "Yes" TextbookOutcomes$PAN_FISTULA[TextbookOutcomes$PAN_FISTULA =="Yes-clinical diagnosis, reoperation performed"] <- "Yes" TextbookOutcomes$PAN_FISTULA[TextbookOutcomes$PAN_FISTULA =="Yes, Grade C POPF present"] <- "Yes" TextbookOutcomes$PAN_FISTULA[TextbookOutcomes$PAN_FISTULA =="Yes-persistent drainage, reoperation performed"] <- "Yes" TextbookOutcomes$PAN_FISTULA[TextbookOutcomes$PAN_FISTULA =="Unknown"] <- NA ####Delayed Gastric Emptying Recode to yes or no TextbookOutcomes$PAN_DELGASTRIC_20140315[TextbookOutcomes$PAN_DELGASTRIC_20140315 =="Yes-no oral intake by POD 14"] <- "Yes" TextbookOutcomes$PAN_DELGASTRIC_20140315[TextbookOutcomes$PAN_DELGASTRIC_20140315 =="Yes-tube to external drainage/NG tube present/reinserted"] <- "Yes" TextbookOutcomes$PAN_DELGASTRIC_20140315[TextbookOutcomes$PAN_DELGASTRIC_20140315 =="Unknown"] <- NA ###recoding Hep targeted complications bileleakage TextbookOutcomes$HEP_BILELEAKAGE[TextbookOutcomes$HEP_BILELEAKAGE =="Unknown"] <- NA TextbookOutcomes$HEP_BILELEAKAGE[TextbookOutcomes$HEP_BILELEAKAGE =="Yes-clinical diagnosis, drain continued on or after POD3"] <- "Yes" TextbookOutcomes$HEP_BILELEAKAGE[TextbookOutcomes$HEP_BILELEAKAGE =="Yes-clinical diagnosis, percutaneous drainage performed"] <- "Yes" TextbookOutcomes$HEP_BILELEAKAGE[TextbookOutcomes$HEP_BILELEAKAGE =="Yes-clinical diagnosis, reoperation performed"] <- "Yes" TextbookOutcomes$HEP_BILELEAKAGE[TextbookOutcomes$HEP_BILELEAKAGE =="Yes-clinical diagnosis, spontaneous wound drainage"] <- "Yes" TextbookOutcomes$HEP_BILELEAKAGE[TextbookOutcomes$HEP_BILELEAKAGE =="Yes-persistent drainage, drain continued on or after POD3"] <- "Yes" TextbookOutcomes$HEP_BILELEAKAGE[TextbookOutcomes$HEP_BILELEAKAGE =="Yes-persistent drainage, percutaneous drainage performed"] <- "Yes" TextbookOutcomes$HEP_BILELEAKAGE[TextbookOutcomes$HEP_BILELEAKAGE =="Yes-persistent drainage, reoperation performed"] <- "Yes" ##recoding hep targeted complications Liver failure (Post Hepatectomy Liver Failure) TextbookOutcomes$HEP_LIVERFAIL[TextbookOutcomes$HEP_LIVERFAIL =="Yes-PHLF (receiving clotting factors to maintain INR)"] <- "Yes" TextbookOutcomes$HEP_LIVERFAIL[TextbookOutcomes$HEP_LIVERFAIL =="Yes-meets criteria for PHLF"] <- "Yes" TextbookOutcomes$HEP_LIVERFAIL[TextbookOutcomes$HEP_LIVERFAIL =="No-does not meet criteria for PHLF"] <- "No" table(TextbookOutcomes$HEP_LIVERFAIL) ``` ```{r} table(TextbookOutcomes$PRNCPTX) ``` ```{r} ###Creating Targeted Column for Hep Complications TextbookOutcomes1 <- TextbookOutcomes %>% mutate(TextbookOutcomes, HepComplications = ifelse(HEP_LIVERFAIL == "Yes", "Yes", ifelse(HEP_BILELEAKAGE == "Yes", "Yes", "No"))) ``` ```{r} table(TextbookOutcomes1$HepComplications) ``` ```{r} TextbookOutcomes2 <- TextbookOutcomes1 %>% mutate(TextbookOutcomes, PanComplications = ifelse(PAN_FISTULA == "Yes", "Yes", ifelse(PAN_DELGASTRIC_20140315 == "Yes", "Yes", "No"))) ``` ```{r} str(TextbookOutcomes2$PanComplications) ``` ```{r} sum(is.na(TextbookOutcomes2$PanComplications)) ``` ```{r} ###creating a true textbookoutcomes column for pan and liver TextbookOutcomes2$PanComplications[TextbookOutcomes2$PanComplications ==NA] <- "NA" TextbookOutcomes2$PanComplications[TextbookOutcomes2$HepComplications ==NA] <- "NA" table(TextbookOutcomes2$PanComplications) ``` ```{r} TextbookOutcomes2$PanComplications[TextbookOutcomes2$PanComplications ==NA] <- "NA" sum(is.na(TextbookOutcomes2$PanComplications)) ``` ```{r} table(is.na(TextbookOutcomes2$PanComplications)) ``` ```{r} ### Ifelse function to create new column for any complication (will need to add in targeted complications Pan: Fistula, Delayed Gastric Emptying | Hep: Bile leakage, hepliverfail) TextbookOutcomes3 <- TextbookOutcomes2 %>% mutate(TextbookOutcomes, AnyComplication = ifelse(CDARREST == "Cardiac Arrest Requiring CPR", "Yes", ifelse(CDMI == "Myocardial Infarction", "Yes", ifelse(OUPNEUMO == "Pneumonia", "Yes", ifelse(RENAINSF == "Progressive Renal Insufficiency", "Yes", ifelse(OPRENAFL == "Acute Renal Failure", "Yes", ifelse(PULEMBOL == "Pulmonary Embolism", "Yes", ifelse(OTHDVT == "DVT Requiring Therapy", "Yes", ifelse(RETURNOR == "Yes", "Yes", ifelse(ORGSPCSSI == "Organ/Space SSI", "Yes", ifelse(PRSEPIS == "Yes", "Yes", ifelse(REINTUB == "Unplanned Intubation", "Yes", ifelse(URNINFEC == "Urinary Tract Infection", "Yes", ifelse(SUPINFEC == "Superficial Incisional SSI", "Yes", ifelse(FAILWEAN == "On Ventilator greater than 48 Hours", "Yes", ifelse(CNSCVA == "Stroke/CVA", "Yes", ifelse(DEHIS == "Wound Disruption", "Yes", "No"))))))))))))))))) ``` ```{r} ##subsetting Procedure with DoptoDIS information to obtain the mean TextbookOutcomesDistalPan <- subset(TextbookOutcomes, PRNCPTX == "Distal Pancreatectomy") TextbookOutcomesLobectomy <- subset(TextbookOutcomes, PRNCPTX == "Lobectomy") TextbookOutcomesOtherPan <- subset(TextbookOutcomes, PRNCPTX == "Other Pancreas") TextbookOutcomesPartialLobectomy <- subset(TextbookOutcomes, PRNCPTX == "Partial Lobectomy") TextbookOutcomesTotalPan <- subset(TextbookOutcomes, PRNCPTX == "Total Pancreatectomy") TextbookOutcomesTrisegmentectomy <- subset(TextbookOutcomes, PRNCPTX == "Trisegmentectomy") TextbookOutcomesWhipple <- subset(TextbookOutcomes, PRNCPTX == "Whipple") ``` ```{r} ###obtaining the 75th percential for LOS defined as day of surgery to date of discharge SeventyFifthPercentileDistalPan = TextbookOutcomesDistalPan$DOptoDis SeventyFifthPercentileLobectomy = TextbookOutcomesLobectomy$DOptoDis SeventyFifthPercentileOtherPan = TextbookOutcomesOtherPan$DOptoDis SeventyFifthPercentilePartialLobectomy = TextbookOutcomesPartialLobectomy$DOptoDis SeventyFifthPercentileTotalPan = TextbookOutcomesTotalPan$DOptoDis SeventyFifthPercentileTrisegmentectomy = TextbookOutcomesTrisegmentectomy$DOptoDis SeventyFifthPercentileWhipple = TextbookOutcomesWhipple$DOptoDis ``` ```{r} quantile(SeventyFifthPercentileDistalPan, na.rm = T) ``` ```{r} quantile(SeventyFifthPercentileLobectomy, na.rm = T) ``` ```{r} quantile(SeventyFifthPercentileOtherPan, na.rm = T) ``` ```{r} quantile(SeventyFifthPercentilePartialLobectomy, na.rm = T) ``` ```{r} quantile(SeventyFifthPercentileTotalPan, na.rm = T) ``` ```{r} quantile(SeventyFifthPercentileTrisegmentectomy, na.rm = T) ``` ```{r} quantile(SeventyFifthPercentileWhipple, na.rm = T) ``` ```{r} TextbookOutcomes3$ELOSDistalPan <- ifelse(TextbookOutcomes3$PRNCPTX == "Distal Pancreatectomy" & TextbookOutcomes3$DOptoDis >= 7, "Yes", "No") TextbookOutcomes3$ELOSLobectomy <- ifelse(TextbookOutcomes3$PRNCPTX == "Lobectomy" & TextbookOutcomes3$DOptoDis >= 8, "Yes", "No") TextbookOutcomes3$ELOSOtherPan <- ifelse(TextbookOutcomes3$PRNCPTX == "Other Pancreas" & TextbookOutcomes3$DOptoDis >= 7, "Yes", "No") TextbookOutcomes3$ELOSPartial <- ifelse(TextbookOutcomes3$PRNCPTX == "Partial Lobectomy" & TextbookOutcomes3$DOptoDis >= 6, "Yes", "No") TextbookOutcomes3$ELOSTotal <- ifelse(TextbookOutcomes3$PRNCPTX == "Total Pancreatectomy" & TextbookOutcomes3$DOptoDis >= 12, "Yes", "No") TextbookOutcomes3$ELOSTrisegmentectomy <- ifelse(TextbookOutcomes3$PRNCPTX == "Trisegmentectomy" & TextbookOutcomes3$DOptoDis >= 10, "Yes", "No") TextbookOutcomes3$ELOSWhipple <- ifelse(TextbookOutcomes3$PRNCPTX == "Whipple" & TextbookOutcomes3$DOptoDis >= 12, "Yes", "No") table(TextbookOutcomes3$ELOSPartial) ``` ```{r} ###recode 9 and up to be considered increased LOS PanTextbookOutcomes <- TextbookOutcomes3 %>% mutate(TextbookOutcomes3, ELOS = ifelse(ELOSDistalPan == "Yes", "Yes", ifelse(ELOSLobectomy == "Yes", "Yes", ifelse(ELOSOtherPan == "Yes", "Yes", ifelse(ELOSPartial == "Yes", "Yes", ifelse(ELOSTotal == "Yes", "Yes", ifelse(ELOSTrisegmentectomy == "Yes", "Yes", ifelse(ELOSWhipple == "Yes", "Yes", "No")))))))) table(PanTextbookOutcomes$ELOS) ``` ###subset pancreatic cancer patients prior to creating a Textbook Outcomes Table double the 75th percentile number afterwards PanTextbookOutcomes <- subset(TextbookOutcomes4, PanComplications == “Yes” | PanComplications == “No”) table(PanTextbookOutcomes$HepComplications) ```{r} PanTextbookOutcomes$TextbookOutcomeHep <- ifelse(PanTextbookOutcomes$ELOS == "No" & PanTextbookOutcomes$DOpertoD == "No" & PanTextbookOutcomes$HepComplications == "No" & PanTextbookOutcomes$AnyComplication == "No" & PanTextbookOutcomes$READMISSION1 == "No", "Yes", "No") PanTextbookOutcomes$TextbookOutcomePan <- ifelse(PanTextbookOutcomes$ELOS == "No" & PanTextbookOutcomes$DOpertoD == "No" & PanTextbookOutcomes$PanComplications == "No" & PanTextbookOutcomes$AnyComplication == "No" & PanTextbookOutcomes$READMISSION1 == "No", "Yes", "No") PanTextbookOutcomes$TextbookOutcomeAll <- ifelse(PanTextbookOutcomes$TextbookOutcomePan == "No" & PanTextbookOutcomes$TextbookOutcomeHep == "No", "No", "Yes") table(PanTextbookOutcomes$TextbookOutcomeHep) ``` ```{r} table(PanTextbookOutcomes$TextbookOutcomePan) ``` ```{r} table(PanTextbookOutcomes$TextbookOutcomeAll) ``` PanTextbookOutcomes3 <- PanTextbookOutcomes %>% mutate(PanTextbookOutcomes, TextbookOutcomeAll = ifelse(TextbookOutcomePan == NA, “Yes”, ifelse(TextbookOutcomeHep == “Yes”, “Yes”,“NA”))) table(PanTextbookOutcomes3$TextbookOutcomeAll) PanTextbookOutcomes1 <- PanTextbookOutcomes %>% mutate(PanTextbookOutcomes, ModifiedFrailtyIndex5 = ifelse(MFI5 == 0, “0”, ifelse(MFI5 == 1, “1”, ifelse(MFI5 > 2, “>2”, NA)))) ```{r} PantextBookOutcomesDT <- PanTextbookOutcomes %>% select(PRNCPTX, PatientGroup, Age, SEX, RACE_NEW, BMILabled, ASACLAS, DOpertoD, OPTIME, ELOS, READMISSION1, STEROID, DIABETES, HYPERMED, ASACLAS, ASCITES, HXCHF, DYSPNEA, SMOKE, HXCOPD, DIALYSIS, OPRENAFL, FNSTATUS2, AnyComplication, TextbookOutcomeHep, TextbookOutcomePan, TextbookOutcomeAll, PanComplications, HepComplications) table(PantextBookOutcomesDT$PatientGroup) ``` ```{r} LOSTable <- PanTextbookOutcomes %>% select(PRNCPTX, DOptoDis) ``` ```{r} LOSTable %>% tbl_summary( by = PRNCPTX, digits = all_continuous() ~ 2,) %>% add_p(pvalue_fun = ~style_pvalue(.x, digits = 2))%>% bold_p() %>% add_overall() %>% modify_header(label ~ "**Variable**") %>% modify_spanning_header(c("stat_1", "stat_2") ~ "**Textbook Outcomes*") %>% bold_labels() ``` ```{r} PantextBookOutcomesDT %>% tbl_summary( by = PatientGroup, digits = all_continuous() ~ 2,) %>% add_p(pvalue_fun = ~style_pvalue(.x, digits = 2))%>% bold_p() %>% add_overall() %>% modify_header(label ~ "**Variable**") %>% modify_spanning_header(c("stat_1", "stat_2") ~ "**Textbook Outcomes*") %>% bold_labels() ``` ```{r} TextbookOutcomeOR <- PantextBookOutcomesDT %>% select(PRNCPTX, PatientGroup, Age, SEX, RACE_NEW, BMILabled, ASACLAS, DOpertoD, OPTIME, ELOS, READMISSION1, STEROID, DIABETES, HYPERMED, ASACLAS, ASCITES, HXCHF, DYSPNEA, SMOKE, HXCOPD, DIALYSIS, OPRENAFL, FNSTATUS2, AnyComplication, TextbookOutcomeHep, TextbookOutcomePan, TextbookOutcomeAll, PanComplications, HepComplications) ``` ```{r} TextbookOutcomeOR <- TextbookOutcomeOR %>% mutate(TextbookOutcomeOR, TextbookOutcomePanOR = ifelse(TextbookOutcomePan =="Yes", "1", ifelse(TextbookOutcomePan =="No", "0", NA))) TextbookOutcomeOR$TextbookOutcomePanOR <- as.numeric(TextbookOutcomeOR$TextbookOutcomePanOR) TextbookOutcomeOR <- TextbookOutcomeOR %>% mutate(TextbookOutcomeOR, TextbookOutcomeHepOR = ifelse(TextbookOutcomeHep =="Yes", "1", ifelse(TextbookOutcomeHep =="No", "0", NA))) TextbookOutcomeOR <- TextbookOutcomeOR %>% mutate(TextbookOutcomeOR, TextbookOutcomeAllOR = ifelse(TextbookOutcomeAll =="Yes", "1", ifelse(TextbookOutcomeAll =="No", "0", NA))) TextbookOutcomeOR$TextbookOutcomeHepOR <- as.numeric(TextbookOutcomeOR$TextbookOutcomeHepOR) TextbookOutcomeOR$TextbookOutcomeAllOR <- as.numeric(TextbookOutcomeOR$TextbookOutcomeAllOR) TextbookOutcomeOR$TextbookOutcomePanOR <- as.numeric(TextbookOutcomeOR$TextbookOutcomePanOR) ``` ```{r} PanTextbookOutcomesSubset <- subset(TextbookOutcomeOR, PatientGroup == "Pancreas") ``` ```{r} HepTextbookOutcomesSubset <- subset(TextbookOutcomeOR, PatientGroup == "Liver") table(PanTextbookOutcomesSubset$TextbookOutcomePanOR) ``` ```{r} PanTextbookOutcomesSubset$PRNCPTX <- as.factor(PanTextbookOutcomesSubset$PRNCPTX) PanTextbookOutcomesSubset$SEX <- as.factor(PanTextbookOutcomesSubset$SEX) PanTextbookOutcomesSubset$ASACLAS <- as.factor(PanTextbookOutcomesSubset$ASACLAS) PanTextbookOutcomesSubset$BMILabled <- as.factor(PanTextbookOutcomesSubset$BMILabled) PanTextbookOutcomesSubset$STEROID <- as.factor(PanTextbookOutcomesSubset$STEROID) PanTextbookOutcomesSubset$DIABETES <- as.factor(PanTextbookOutcomesSubset$DIABETES) PanTextbookOutcomesSubset$HYPERMED <- as.factor(PanTextbookOutcomesSubset$HYPERMED) PanTextbookOutcomesSubset$ASCITES <- as.factor(PanTextbookOutcomesSubset$ASCITES) PanTextbookOutcomesSubset$HXCOPD <- as.factor(PanTextbookOutcomesSubset$HXCOPD) PanTextbookOutcomesSubset$DIALYSIS <- as.factor(PanTextbookOutcomesSubset$DIALYSIS) PanTextbookOutcomesSubset$HXCHF <- as.factor(PanTextbookOutcomesSubset$HXCHF) PanTextbookOutcomesSubset$Age <- as.factor(PanTextbookOutcomesSubset$Age) PanTextbookOutcomesSubset$FNSTATUS2 <- as.factor(PanTextbookOutcomesSubset$FNSTATUS2) PanTextbookOutcomesSubset$SMOKE <- as.factor(PanTextbookOutcomesSubset$SMOKE) PanTextbookOutcomesSubset$PatientGroup <- as.factor(PanTextbookOutcomesSubset$PatientGroup) PanTextbookOutcomesSubset$PRNCPTX = relevel(PanTextbookOutcomesSubset$PRNCPTX, ref="Distal Pancreatectomy") PanTextbookOutcomesSubset$SEX = relevel(PanTextbookOutcomesSubset$SEX, ref="male") PanTextbookOutcomesSubset$BMILabled = relevel(PanTextbookOutcomesSubset$BMILabled, ref="Overweight") PanTextbookOutcomesSubset$ASACLAS = relevel(PanTextbookOutcomesSubset$ASACLAS, ref="4-Life Threat") PanTextbookOutcomesSubset$DIABETES = relevel(PanTextbookOutcomesSubset$DIABETES, ref="NO") PanTextbookOutcomesSubset$HYPERMED = relevel(PanTextbookOutcomesSubset$HYPERMED, ref="Yes") PanTextbookOutcomesSubset$STEROID = relevel(PanTextbookOutcomesSubset$STEROID, ref="Yes") PanTextbookOutcomesSubset$ASCITES = relevel(PanTextbookOutcomesSubset$ASCITES, ref="Yes") PanTextbookOutcomesSubset$HXCOPD = relevel(PanTextbookOutcomesSubset$HXCOPD, ref="Yes") PanTextbookOutcomesSubset$DIALYSIS = relevel(PanTextbookOutcomesSubset$DIALYSIS, ref="Yes") PanTextbookOutcomesSubset$SMOKE = relevel(PanTextbookOutcomesSubset$SMOKE, ref="No") PanTextbookOutcomesSubset$HXCHF = relevel(PanTextbookOutcomesSubset$HXCHF, ref="Yes") PanTextbookOutcomesSubset$Age = relevel(PanTextbookOutcomesSubset$Age, ref="85+") PanTextbookOutcomesSubset$FNSTATUS2 = relevel(PanTextbookOutcomesSubset$FNSTATUS2, ref="Totally Dependent") ``` ```{r} UVPan <- PanTextbookOutcomesSubset %>% select(PRNCPTX, Age, SEX, RACE_NEW, BMILabled, ASACLAS, STEROID, ASCITES, DYSPNEA, SMOKE, DIALYSIS, DIABETES, HYPERMED, HXCOPD, HXCHF, TextbookOutcomePanOR) %>% tbl_uvregression( method = glm, y = TextbookOutcomePanOR, method.args = list(family = binomial), exponentiate = TRUE, pvalue_fun = ~style_pvalue(.x, digits = 2) ) %>% bold_p(t = 0.10) %>% bold_labels() %>% italicize_levels() ``` ```{r} ###changling the referent level PanTextbookOutcomesSubset$PRNCPTX <- as.factor(PanTextbookOutcomesSubset$PRNCPTX) PanTextbookOutcomesSubset$SEX <- as.factor(PanTextbookOutcomesSubset$SEX) PanTextbookOutcomesSubset$ASACLAS <- as.factor(PanTextbookOutcomesSubset$ASACLAS) PanTextbookOutcomesSubset$BMILabled <- as.factor(PanTextbookOutcomesSubset$BMILabled) PanTextbookOutcomesSubset$STEROID <- as.factor(PanTextbookOutcomesSubset$STEROID) PanTextbookOutcomesSubset$DIABETES <- as.factor(PanTextbookOutcomesSubset$DIABETES) PanTextbookOutcomesSubset$HYPERMED <- as.factor(PanTextbookOutcomesSubset$HYPERMED) PanTextbookOutcomesSubset$ASCITES <- as.factor(PanTextbookOutcomesSubset$ASCITES) PanTextbookOutcomesSubset$HXCOPD <- as.factor(PanTextbookOutcomesSubset$HXCOPD) PanTextbookOutcomesSubset$DIALYSIS <- as.factor(PanTextbookOutcomesSubset$DIALYSIS) PanTextbookOutcomesSubset$HXCHF <- as.factor(PanTextbookOutcomesSubset$HXCHF) PanTextbookOutcomesSubset$Age <- as.factor(PanTextbookOutcomesSubset$Age) PanTextbookOutcomesSubset$FNSTATUS2 <- as.factor(PanTextbookOutcomesSubset$FNSTATUS2) PanTextbookOutcomesSubset$PatientGroup <- as.factor(PanTextbookOutcomesSubset$PatientGroup) PanTextbookOutcomesSubset$PRNCPTX = relevel(PanTextbookOutcomesSubset$PRNCPTX, ref="Distal Pancreatectomy") PanTextbookOutcomesSubset$SEX = relevel(PanTextbookOutcomesSubset$SEX, ref="male") PanTextbookOutcomesSubset$ASACLAS = relevel(PanTextbookOutcomesSubset$ASACLAS, ref="4-Life Threat") PanTextbookOutcomesSubset$BMILabled = relevel(PanTextbookOutcomesSubset$BMILabled, ref="Normal Weight") PanTextbookOutcomesSubset$DIABETES = relevel(PanTextbookOutcomesSubset$DIABETES, ref="NO") PanTextbookOutcomesSubset$HYPERMED = relevel(PanTextbookOutcomesSubset$HYPERMED, ref="Yes") PanTextbookOutcomesSubset$STEROID = relevel(PanTextbookOutcomesSubset$STEROID, ref="Yes") PanTextbookOutcomesSubset$ASCITES = relevel(PanTextbookOutcomesSubset$ASCITES, ref="Yes") PanTextbookOutcomesSubset$HXCOPD = relevel(PanTextbookOutcomesSubset$HXCOPD, ref="Yes") PanTextbookOutcomesSubset$DIALYSIS = relevel(PanTextbookOutcomesSubset$DIALYSIS, ref="Yes") PanTextbookOutcomesSubset$HXCHF = relevel(PanTextbookOutcomesSubset$HXCHF, ref="Yes") PanTextbookOutcomesSubset$Age = relevel(PanTextbookOutcomesSubset$Age, ref="85+") PanTextbookOutcomesSubset$FNSTATUS2 = relevel(PanTextbookOutcomesSubset$FNSTATUS2, ref="Totally Dependent") ``` ```{r} ####Multivariant analysis serious complications MVORPan <- glm(TextbookOutcomePanOR ~ PRNCPTX + Age + SEX + RACE_NEW + BMILabled + ASACLAS + STEROID + ASCITES + DYSPNEA + SMOKE + DIALYSIS + DIABETES + HYPERMED + HXCOPD + HXCHF, data = PanTextbookOutcomesSubset, family = binomial("logit"), na.action =na.omit) ``` ```{r} ###continue on to merge the table sets MVORTablePan <- tbl_regression(MVORPan, exponentiate = T, pvalue_fun = ~style_pvalue(.x, digits = 2), ) %>% bold_p(t = 0.10) %>% bold_labels() %>% italicize_levels() ``` ```{r} tbl_merge( list(UVPan, MVORTablePan), tab_spanner = c("**Univariable**", "**Multivariable**") ) %>% bold_labels() %>% italicize_levels() ``` ```{r} ###changling the referent level HepTextbookOutcomesSubset$PRNCPTX <- as.factor(HepTextbookOutcomesSubset$PRNCPTX) HepTextbookOutcomesSubset$SEX <- as.factor(HepTextbookOutcomesSubset$SEX) HepTextbookOutcomesSubset$BMILabled <- as.factor(HepTextbookOutcomesSubset$BMILabled) HepTextbookOutcomesSubset$ASACLAS <- as.factor(HepTextbookOutcomesSubset$ASACLAS) HepTextbookOutcomesSubset$STEROID <- as.factor(HepTextbookOutcomesSubset$STEROID) HepTextbookOutcomesSubset$DIABETES <- as.factor(HepTextbookOutcomesSubset$DIABETES) HepTextbookOutcomesSubset$HYPERMED <- as.factor(HepTextbookOutcomesSubset$HYPERMED) HepTextbookOutcomesSubset$ASCITES <- as.factor(HepTextbookOutcomesSubset$ASCITES) HepTextbookOutcomesSubset$HXCOPD <- as.factor(HepTextbookOutcomesSubset$HXCOPD) HepTextbookOutcomesSubset$DIALYSIS <- as.factor(HepTextbookOutcomesSubset$DIALYSIS) HepTextbookOutcomesSubset$HXCHF <- as.factor(HepTextbookOutcomesSubset$HXCHF) HepTextbookOutcomesSubset$SMOKE <- as.factor(HepTextbookOutcomesSubset$SMOKE) HepTextbookOutcomesSubset$Age <- as.factor(HepTextbookOutcomesSubset$Age) HepTextbookOutcomesSubset$PRNCPTX = relevel(HepTextbookOutcomesSubset$PRNCPTX, ref="Trisegmentectomy") HepTextbookOutcomesSubset$SEX = relevel(HepTextbookOutcomesSubset$SEX, ref="male") HepTextbookOutcomesSubset$BMILabled = relevel(HepTextbookOutcomesSubset$BMILabled, ref="Normal Weight") HepTextbookOutcomesSubset$ASACLAS = relevel(HepTextbookOutcomesSubset$ASACLAS, ref="4-Life Threat") HepTextbookOutcomesSubset$DIABETES = relevel(HepTextbookOutcomesSubset$DIABETES, ref="Yes") HepTextbookOutcomesSubset$HYPERMED = relevel(HepTextbookOutcomesSubset$HYPERMED, ref="Yes") HepTextbookOutcomesSubset$STEROID = relevel(HepTextbookOutcomesSubset$STEROID, ref="Yes") HepTextbookOutcomesSubset$ASCITES = relevel(HepTextbookOutcomesSubset$ASCITES, ref="Yes") HepTextbookOutcomesSubset$HXCOPD = relevel(HepTextbookOutcomesSubset$HXCOPD, ref="Yes") HepTextbookOutcomesSubset$DIALYSIS = relevel(HepTextbookOutcomesSubset$DIALYSIS, ref="Yes") HepTextbookOutcomesSubset$HXCHF = relevel(HepTextbookOutcomesSubset$HXCHF, ref="Yes") HepTextbookOutcomesSubset$SMOKE = relevel(HepTextbookOutcomesSubset$SMOKE, ref="Yes") HepTextbookOutcomesSubset$Age = relevel(HepTextbookOutcomesSubset$Age, ref="85+") ``` ```{r} UVHep <- HepTextbookOutcomesSubset %>% select(PRNCPTX, Age, SEX, RACE_NEW, BMILabled, ASACLAS, STEROID, ASCITES, DYSPNEA, SMOKE, DIALYSIS, DIABETES, HYPERMED, HXCOPD, HXCHF, TextbookOutcomeHepOR) %>% tbl_uvregression( method = glm, y = TextbookOutcomeHepOR, method.args = list(family = binomial), exponentiate = TRUE, pvalue_fun = ~style_pvalue(.x, digits = 2) ) %>% bold_p(t = 0.10) %>% bold_labels() %>% italicize_levels() ``` ```{r} HepTextbookOutcomesSubset$PRNCPTX <- as.factor(HepTextbookOutcomesSubset$PRNCPTX) HepTextbookOutcomesSubset$BMILabled <- as.factor(HepTextbookOutcomesSubset$BMILabled) HepTextbookOutcomesSubset$ASACLAS <- as.factor(HepTextbookOutcomesSubset$ASACLAS) HepTextbookOutcomesSubset$STEROID <- as.factor(HepTextbookOutcomesSubset$STEROID) HepTextbookOutcomesSubset$DIABETES <- as.factor(HepTextbookOutcomesSubset$DIABETES) HepTextbookOutcomesSubset$HYPERMED <- as.factor(HepTextbookOutcomesSubset$HYPERMED) HepTextbookOutcomesSubset$ASCITES <- as.factor(HepTextbookOutcomesSubset$ASCITES) HepTextbookOutcomesSubset$HXCOPD <- as.factor(HepTextbookOutcomesSubset$HXCOPD) HepTextbookOutcomesSubset$DIALYSIS <- as.factor(HepTextbookOutcomesSubset$DIALYSIS) HepTextbookOutcomesSubset$HXCHF <- as.factor(HepTextbookOutcomesSubset$HXCHF) HepTextbookOutcomesSubset$SMOKE <- as.factor(HepTextbookOutcomesSubset$SMOKE) HepTextbookOutcomesSubset$Age <- as.factor(HepTextbookOutcomesSubset$Age) HepTextbookOutcomesSubset$PRNCPTX = relevel(HepTextbookOutcomesSubset$PRNCPTX, ref="Trisegmentectomy") HepTextbookOutcomesSubset$BMILabled = relevel(HepTextbookOutcomesSubset$BMILabled, ref="Normal Weight") HepTextbookOutcomesSubset$ASACLAS = relevel(HepTextbookOutcomesSubset$ASACLAS, ref="4-Life Threat") HepTextbookOutcomesSubset$DIABETES = relevel(HepTextbookOutcomesSubset$DIABETES, ref="Yes") HepTextbookOutcomesSubset$HYPERMED = relevel(HepTextbookOutcomesSubset$HYPERMED, ref="Yes") HepTextbookOutcomesSubset$STEROID = relevel(HepTextbookOutcomesSubset$STEROID, ref="Yes") HepTextbookOutcomesSubset$ASCITES = relevel(HepTextbookOutcomesSubset$ASCITES, ref="Yes") HepTextbookOutcomesSubset$HXCOPD = relevel(HepTextbookOutcomesSubset$HXCOPD, ref="Yes") HepTextbookOutcomesSubset$DIALYSIS = relevel(HepTextbookOutcomesSubset$DIALYSIS, ref="Yes") HepTextbookOutcomesSubset$HXCHF = relevel(HepTextbookOutcomesSubset$HXCHF, ref="Yes") HepTextbookOutcomesSubset$SMOKE = relevel(HepTextbookOutcomesSubset$SMOKE, ref="Yes") HepTextbookOutcomesSubset$Age = relevel(HepTextbookOutcomesSubset$Age, ref="85+") ``` ```{r} ####Multivariant analysis serious complications MVORHep <- glm(TextbookOutcomeHepOR ~ PRNCPTX + Age + SEX + RACE_NEW + BMILabled + ASACLAS + STEROID + ASCITES + DYSPNEA + SMOKE + DIALYSIS + DIABETES + HYPERMED + HXCOPD + HXCHF, data = HepTextbookOutcomesSubset, family = binomial("logit"), na.action =na.omit) ``` ```{r} ###continue on to merge the table sets MVORTableHep <- tbl_regression(MVORHep, exponentiate = T, pvalue_fun = ~style_pvalue(.x, digits = 2), ) %>% bold_p(t = 0.10) %>% bold_labels() %>% italicize_levels() ``` ```{r} tbl_merge( list(UVHep, MVORTableHep), tab_spanner = c("**Univariable**", "**Multivariable**") ) %>% bold_labels() %>% italicize_levels() ``` ```{r} ###changing the referent level TextbookOutcomeOR$PatientGroup <- as.factor(TextbookOutcomeOR$PatientGroup) TextbookOutcomeOR$BMILabled <- as.factor(TextbookOutcomeOR$BMILabled) TextbookOutcomeOR$ASACLAS <- as.factor(TextbookOutcomeOR$ASACLAS) TextbookOutcomeOR$STEROID <- as.factor(TextbookOutcomeOR$STEROID) TextbookOutcomeOR$DIABETES <- as.factor(TextbookOutcomeOR$DIABETES) TextbookOutcomeOR$HYPERMED <- as.factor(TextbookOutcomeOR$HYPERMED) TextbookOutcomeOR$ASCITES <- as.factor(TextbookOutcomeOR$ASCITES) TextbookOutcomeOR$HXCOPD <- as.factor(TextbookOutcomeOR$HXCOPD) TextbookOutcomeOR$DIALYSIS <- as.factor(TextbookOutcomeOR$DIALYSIS) TextbookOutcomeOR$HXCHF <- as.factor(TextbookOutcomeOR$HXCHF) TextbookOutcomeOR$SMOKE <- as.factor(TextbookOutcomeOR$SMOKE) TextbookOutcomeOR$Age <- as.factor(TextbookOutcomeOR$Age) TextbookOutcomeOR$SEX <- as.factor(TextbookOutcomeOR$SEX) TextbookOutcomeOR$BMILabled = relevel(TextbookOutcomeOR$BMILabled, ref="Normal Weight") TextbookOutcomeOR$ASACLAS = relevel(TextbookOutcomeOR$ASACLAS, ref="4-Life Threat") TextbookOutcomeOR$DIABETES = relevel(TextbookOutcomeOR$DIABETES, ref="Yes") TextbookOutcomeOR$SEX = relevel(TextbookOutcomeOR$SEX, ref="male") TextbookOutcomeOR$SMOKE = relevel(TextbookOutcomeOR$SMOKE, ref="Yes") TextbookOutcomeOR$STEROID = relevel(TextbookOutcomeOR$STEROID, ref="Yes") TextbookOutcomeOR$ASCITES = relevel(TextbookOutcomeOR$ASCITES, ref="Yes") TextbookOutcomeOR$HXCOPD = relevel(TextbookOutcomeOR$HXCOPD, ref="Yes") TextbookOutcomeOR$DIALYSIS = relevel(TextbookOutcomeOR$DIALYSIS, ref="Yes") TextbookOutcomeOR$HXCHF = relevel(TextbookOutcomeOR$HXCHF, ref="Yes") TextbookOutcomeOR$Age = relevel(TextbookOutcomeOR$Age, ref="85+") ``` ```{r} ###Univariant, multivariant for everyone UVAll <- TextbookOutcomeOR %>% select(PatientGroup, Age, SEX, RACE_NEW, BMILabled, ASACLAS, STEROID, ASCITES, DYSPNEA, SMOKE, DIALYSIS, DIABETES, HYPERMED, HXCOPD, HXCHF, TextbookOutcomeAllOR) %>% tbl_uvregression( method = glm, y = TextbookOutcomeAllOR, method.args = list(family = binomial), exponentiate = TRUE, pvalue_fun = ~style_pvalue(.x, digits = 2) ) %>% bold_p(t = 0.10) %>% bold_labels() %>% italicize_levels() ``` ```{r} ###changling the referent level TextbookOutcomeOR$PatientGroup <- as.factor(TextbookOutcomeOR$PatientGroup) TextbookOutcomeOR$SEX <- as.factor(TextbookOutcomeOR$SEX) TextbookOutcomeOR$ASACLAS <- as.factor(TextbookOutcomeOR$ASACLAS) TextbookOutcomeOR$STEROID <- as.factor(TextbookOutcomeOR$STEROID) TextbookOutcomeOR$DIABETES <- as.factor(TextbookOutcomeOR$DIABETES) TextbookOutcomeOR$SMOKE <- as.factor(TextbookOutcomeOR$SMOKE) TextbookOutcomeOR$ASCITES <- as.factor(TextbookOutcomeOR$ASCITES) TextbookOutcomeOR$HXCOPD <- as.factor(TextbookOutcomeOR$HXCOPD) TextbookOutcomeOR$DIALYSIS <- as.factor(TextbookOutcomeOR$DIALYSIS) TextbookOutcomeOR$HXCHF <- as.factor(TextbookOutcomeOR$HXCHF) TextbookOutcomeOR$Age <- as.factor(TextbookOutcomeOR$Age) TextbookOutcomeOR$SEX = relevel(TextbookOutcomeOR$SEX, ref="male") TextbookOutcomeOR$BMILabled = relevel(TextbookOutcomeOR$BMILabled, ref="Normal Weight") TextbookOutcomeOR$ASACLAS = relevel(TextbookOutcomeOR$ASACLAS, ref="4-Life Threat") TextbookOutcomeOR$DIABETES = relevel(TextbookOutcomeOR$DIABETES, ref="Yes") TextbookOutcomeOR$SMOKE = relevel(TextbookOutcomeOR$SMOKE, ref="Yes") TextbookOutcomeOR$STEROID = relevel(TextbookOutcomeOR$STEROID, ref="Yes") TextbookOutcomeOR$ASCITES = relevel(TextbookOutcomeOR$ASCITES, ref="Yes") TextbookOutcomeOR$HXCOPD = relevel(TextbookOutcomeOR$HXCOPD, ref="Yes") TextbookOutcomeOR$DIALYSIS = relevel(TextbookOutcomeOR$DIALYSIS, ref="Yes") TextbookOutcomeOR$HXCHF = relevel(TextbookOutcomeOR$HXCHF, ref="Yes") TextbookOutcomeOR$Age = relevel(TextbookOutcomeOR$Age, ref="85+") ``` ```{r} ####Multivariant analysis serious complications MVORAll <- glm(TextbookOutcomeAllOR ~ PatientGroup + Age + SEX + RACE_NEW + BMILabled + ASACLAS + STEROID + ASCITES + DYSPNEA + SMOKE + DIALYSIS + DIABETES + HYPERMED + HXCOPD + HXCHF, data = TextbookOutcomeOR, family = binomial("logit"), na.action =na.omit) ``` ```{r} ###continue on to merge the table sets MVORTableAll <- tbl_regression(MVORAll, exponentiate = T, pvalue_fun = ~style_pvalue(.x, digits = 2), ) %>% bold_p(t = 0.10) %>% bold_labels() %>% italicize_levels() ``` ```{r} tbl_merge( list(UVAll, MVORTableAll), tab_spanner = c("**Univariable**", "**Multivariable**") ) %>% bold_labels() %>% italicize_levels() ``` ```{r} PanOddsPlotty <- PanTextbookOutcomesSubset %>% select(PRNCPTX, SEX, RACE_NEW, BMILabled, STEROID, DIALYSIS, HXCOPD, HXCHF, TextbookOutcomePanOR) ``` ```{r} PanOddsPlotty2 <- PanOddsPlotty[complete.cases(PanOddsPlotty), ] #Create a copy ``` ```{r} head(PanOddsPlotty2, 10) ``` ```{r} PanOddsPlotty2$TextbookOutcomePanOR <- factor(PanOddsPlotty2$TextbookOutcomePanOR) PanOddsPlotty2$RACE_NEW <- factor(PanOddsPlotty2$RACE_NEW) str(PanOddsPlotty2) ``` ```{r} for(i in 1:8) { PanOddsPlotty2[, i] <- as.numeric(as.factor(PanOddsPlotty2[, i])) } ``` ```{r} ###renaming variables PanOddsPlotty2 <- rename(PanOddsPlotty2, 'No Dialysis' = DIALYSIS) PanOddsPlotty2 <- rename(PanOddsPlotty2, 'Female' = SEX) PanOddsPlotty2 <- rename(PanOddsPlotty2, 'White' = RACE_NEW) PanOddsPlotty2 <- rename(PanOddsPlotty2, 'No Steroid' = STEROID) PanOddsPlotty2 <- rename(PanOddsPlotty2, 'No COPD' = HXCOPD) PanOddsPlotty2 <- rename(PanOddsPlotty2, 'No CHF' = HXCHF) PanOddsPlotty2 <- rename(PanOddsPlotty2, 'Total Pancreatectomy' = PRNCPTX) PanOddsPlotty2 <- rename(PanOddsPlotty2, 'Underweight' = BMILabled) ``` ```{r} glm_model <- train(TextbookOutcomePanOR ~ ., data = PanOddsPlotty2, method = "glm", family = "binomial") summary(glm_model) ``` ```{r} ## Number of Fisher Scoring iterations: 4 plotty <- OddsPlotty::odds_plot(glm_model$finalModel, title = "Pancreas Group", subtitle = "Independent Associations for TO") ``` ```{r} ## Waiting for profiling to be done... plot <- plotty$odds_plot plot <- plot + ggthemes::theme_economist() + theme(legend.position = "NULL") plot + geom_text(label=round(plotty$odds_plot$data$OR, digits = 2), hjust=0, vjust=1.8) ``` ```{r} HepOddsPlotty <- HepTextbookOutcomesSubset %>% select(PRNCPTX, SEX, RACE_NEW, BMILabled, STEROID, DIALYSIS, DIABETES, HXCOPD, HXCHF, TextbookOutcomeHepOR) ``` ```{r} HepOddsPlotty2 <- HepOddsPlotty[complete.cases(HepOddsPlotty), ] #Create a copy ``` ```{r} head(HepOddsPlotty2, 10) ``` ```{r} HepOddsPlotty2$TextbookOutcomeHepOR <- factor(HepOddsPlotty2$TextbookOutcomeHepOR) HepOddsPlotty2$RACE_NEW <- factor(HepOddsPlotty2$RACE_NEW) str(HepOddsPlotty2) ``` ```{r} for(i in 1:9) { HepOddsPlotty2[, i] <- as.numeric(as.factor(HepOddsPlotty2[, i])) } ``` ```{r} ###renaming variables HepOddsPlotty2 <- rename(HepOddsPlotty2, 'No Dialysis' = DIALYSIS) HepOddsPlotty2 <- rename(HepOddsPlotty2, 'Female' = SEX) HepOddsPlotty2 <- rename(HepOddsPlotty2, 'White' = RACE_NEW) HepOddsPlotty2 <- rename(HepOddsPlotty2, 'No Steroid' = STEROID) HepOddsPlotty2 <- rename(HepOddsPlotty2, 'No COPD' = HXCOPD) HepOddsPlotty2 <- rename(HepOddsPlotty2, 'No CHF' = HXCHF) HepOddsPlotty2 <- rename(HepOddsPlotty2, 'No Diabetes' = DIABETES) HepOddsPlotty2 <- rename(HepOddsPlotty2, 'Lobectomy' = PRNCPTX) HepOddsPlotty2 <- rename(HepOddsPlotty2, 'Obese' = BMILabled) ``` ```{r} glm_modelhep <- train(TextbookOutcomeHepOR ~ ., data = HepOddsPlotty2, method = "glm", family = "binomial") summary(glm_modelhep) ``` ```{r} plottyhep <- OddsPlotty::odds_plot(glm_modelhep$finalModel, title = "Liver Group", subtitle = "Independent Associations for TO") ``` ```{r} ## Waiting for profiling to be done... plothep <- plottyhep$odds_plot plothep <- plothep + ggthemes::theme_economist() + theme(legend.position = "NULL") plothep + geom_text(label=round(plottyhep$odds_plot$data$OR, digits = 2), hjust=0, vjust=1.8) ``` ```{r} BothOddsPlotty <- TextbookOutcomeOR %>% select(PatientGroup, SEX, STEROID, DIALYSIS, DIABETES, HXCOPD, HXCHF, TextbookOutcomeAllOR) ``` ```{r} BothOddsPlotty2 <- BothOddsPlotty[complete.cases(BothOddsPlotty), ] #Create a copy ``` ```{r} head(BothOddsPlotty2, 10) ``` ```{r} BothOddsPlotty2$TextbookOutcomeAllOR <- factor(BothOddsPlotty2$TextbookOutcomeAllOR) str(BothOddsPlotty2) ``` ```{r} for(i in 1:7) { BothOddsPlotty2[, i] <- as.numeric(as.factor(BothOddsPlotty2[, i])) } ``` ```{r} ###renaming variables BothOddsPlotty2 <- rename(BothOddsPlotty2, 'No Dialysis' = DIALYSIS) BothOddsPlotty2 <- rename(BothOddsPlotty2, 'Female' = SEX) BothOddsPlotty2 <- rename(BothOddsPlotty2, 'No Steroid' = STEROID) BothOddsPlotty2 <- rename(BothOddsPlotty2, 'No COPD' = HXCOPD) BothOddsPlotty2 <- rename(BothOddsPlotty2, 'No CHF' = HXCHF) BothOddsPlotty2 <- rename(BothOddsPlotty2, 'No Diabetes' = DIABETES) BothOddsPlotty2 <- rename(BothOddsPlotty2, 'Pancreatic' = PatientGroup) ``` ```{r} glm_modelboth <- train(TextbookOutcomeAllOR ~ ., data = BothOddsPlotty2, method = "glm", family = "binomial") summary(glm_modelboth) ``` ```{r} plottyboth <- OddsPlotty::odds_plot(glm_modelboth$finalModel, title = "Liver & Pancreatic Group", subtitle = "Independent Associations for TO") ``` ```{r} ## Waiting for profiling to be done... plotboth <- plottyboth$odds_plot plotboth <- plotboth + ggthemes::theme_economist() + theme(legend.position = "NULL") plotboth + geom_text(label=round(plottyboth$odds_plot$data$OR, digits = 2), hjust=0, vjust=1.8) ```
LOI FInal
Preop Neo vs XRT All Data
NESS Textbookoutcome Poster
Local Data Survival
--- title: "Local Data Survival Analysis" author: "Abdimajid Mohamed" date: "3/17/2021" output: html_document --- ```{r} library(gtsummary) library(survival) library(labelled) library(tidyverse) library(broom) library(ggplot2) library(survminer) library(dplyr) library(lubridate) library(zoo) ``` ```{r} PanCancer2000 <- read.csv( ("PancreaticCancer2000.csv")) PanCancer2001 <- read.csv( ("PancreaticCancer2001.csv")) PanCancer2002 <- read.csv( ("PancreaticCancer2002.csv")) PanCancer2003 <- read.csv( ("PancreaticCancer2003.csv")) PanCancer2004 <- read.csv( ("PancreaticCancer2004.csv")) PanCancer2005 <- read.csv( ("PancreaticCancer2005.csv")) PanCancer2006 <- read.csv( ("PancreaticCancer2006.csv")) PanCancer2007 <- read.csv( ("PancreaticCancer2007.csv")) PanCancer2008 <- read.csv( ("PancreaticCancer2008.csv")) PanCancer2009 <- read.csv( ("PancreaticCancer2009.csv")) PanCancer2010 <- read.csv( ("PancreaticCancer2010.csv")) PanCancer2011 <- read.csv( ("PancreaticCancer2011.csv")) PanCancer2012 <- read.csv( ("PancreaticCancer2012.csv")) PanCancer2013 <- read.csv( ("PancreaticCancer2013.csv")) PanCancer2014 <- read.csv( ("PancreaticCancer2014.csv")) PanCancer2015 <- read.csv( ("PancreaticCancer2015.csv")) PanCancer2016 <- read.csv( ("PancreaticCancer2016.csv")) PanCancer2017 <- read.csv( ("PancreaticCancer2017.csv")) PanCancer2018 <- read.csv( ("PancreaticData2018.csv")) PanCancer2019 <- read.csv( ("PancreaticData2019.csv")) PanCancer2020 <- read.csv( ("PancreaticData2020.csv")) MonthSurvival <- read.csv( ("MonthSurvival.csv")) ``` ```{r} PanCancer2000$Medical.Record.Number <- as.character(PanCancer2000$Medical.Record.Number) PanCancer2001$Medical.Record.Number <- as.character(PanCancer2001$Medical.Record.Number) PanCancer2002$Medical.Record.Number <- as.character(PanCancer2002$Medical.Record.Number) PanCancer2003$Medical.Record.Number <- as.character(PanCancer2003$Medical.Record.Number) PanCancer2004$Medical.Record.Number <- as.character(PanCancer2004$Medical.Record.Number) PanCancer2005$Medical.Record.Number <- as.character(PanCancer2005$Medical.Record.Number) PanCancer2006$Medical.Record.Number <- as.character(PanCancer2006$Medical.Record.Number) PanCancer2007$Medical.Record.Number <- as.character(PanCancer2007$Medical.Record.Number) PanCancer2008$Medical.Record.Number <- as.character(PanCancer2008$Medical.Record.Number) PanCancer2009$Medical.Record.Number <- as.character(PanCancer2009$Medical.Record.Number) PanCancer2010$Medical.Record.Number <- as.character(PanCancer2010$Medical.Record.Number) PanCancer2011$Medical.Record.Number <- as.character(PanCancer2011$Medical.Record.Number) PanCancer2012$Medical.Record.Number <- as.character(PanCancer2012$Medical.Record.Number) PanCancer2013$Medical.Record.Number <- as.character(PanCancer2013$Medical.Record.Number) PanCancer2014$Medical.Record.Number <- as.character(PanCancer2014$Medical.Record.Number) PanCancer2015$Medical.Record.Number <- as.character(PanCancer2015$Medical.Record.Number) PanCancer2016$Medical.Record.Number <- as.character(PanCancer2016$Medical.Record.Number) PanCancer2017$Medical.Record.Number <- as.character(PanCancer2017$Medical.Record.Number) PanCancer2018$Medical.Record.Number <- as.character(PanCancer2018$Medical.Record.Number) PanCancer2019$Medical.Record.Number <- as.character(PanCancer2019$Medical.Record.Number) PanCancer2020$Medical.Record.Number <- as.character(PanCancer2020$Medical.Record.Number) MonthSurvival$Medical.Record.Number <- as.character(MonthSurvival$Medical.Record.Number) ``` ```{r} PanCancer2000$Postal.Code.at.Diagnosis <- as.character(PanCancer2000$Postal.Code.at.Diagnosis) PanCancer2001$Postal.Code.at.Diagnosis <- as.character(PanCancer2001$Postal.Code.at.Diagnosis) PanCancer2002$Postal.Code.at.Diagnosis <- as.character(PanCancer2002$Postal.Code.at.Diagnosis) PanCancer2003$Postal.Code.at.Diagnosis <- as.character(PanCancer2003$Postal.Code.at.Diagnosis) PanCancer2004$Postal.Code.at.Diagnosis <- as.character(PanCancer2004$Postal.Code.at.Diagnosis) PanCancer2005$Postal.Code.at.Diagnosis <- as.character(PanCancer2005$Postal.Code.at.Diagnosis) PanCancer2006$Postal.Code.at.Diagnosis <- as.character(PanCancer2006$Postal.Code.at.Diagnosis) PanCancer2007$Postal.Code.at.Diagnosis <- as.character(PanCancer2007$Postal.Code.at.Diagnosis) PanCancer2008$Postal.Code.at.Diagnosis <- as.character(PanCancer2008$Postal.Code.at.Diagnosis) PanCancer2009$Postal.Code.at.Diagnosis <- as.character(PanCancer2009$Postal.Code.at.Diagnosis) PanCancer2010$Postal.Code.at.Diagnosis <- as.character(PanCancer2010$Postal.Code.at.Diagnosis) PanCancer2011$Postal.Code.at.Diagnosis <- as.character(PanCancer2011$Postal.Code.at.Diagnosis) PanCancer2012$Postal.Code.at.Diagnosis <- as.character(PanCancer2012$Postal.Code.at.Diagnosis) PanCancer2013$Postal.Code.at.Diagnosis <- as.character(PanCancer2013$Postal.Code.at.Diagnosis) PanCancer2014$Postal.Code.at.Diagnosis <- as.character(PanCancer2014$Postal.Code.at.Diagnosis) PanCancer2015$Postal.Code.at.Diagnosis <- as.character(PanCancer2015$Postal.Code.at.Diagnosis) PanCancer2016$Postal.Code.at.Diagnosis <- as.character(PanCancer2016$Postal.Code.at.Diagnosis) PanCancer2017$Postal.Code.at.Diagnosis <- as.character(PanCancer2017$Postal.Code.at.Diagnosis) PanCancer2018$Postal.Code.at.Diagnosis <- as.character(PanCancer2018$Postal.Code.at.Diagnosis) PanCancer2019$Postal.Code.at.Diagnosis <- as.character(PanCancer2019$Postal.Code.at.Diagnosis) PanCancer2020$Postal.Code.at.Diagnosis <- as.character(PanCancer2020$Postal.Code.at.Diagnosis) ``` ```{r} PanCancer2000$Tumor.Size.Summary <- as.character(PanCancer2000$Tumor.Size.Summary) PanCancer2001$Tumor.Size.Summary <- as.character(PanCancer2001$Tumor.Size.Summary) PanCancer2002$Tumor.Size.Summary <- as.character(PanCancer2002$Tumor.Size.Summary) PanCancer2003$Tumor.Size.Summary <- as.character(PanCancer2003$Tumor.Size.Summary) PanCancer2004$Tumor.Size.Summary <- as.character(PanCancer2004$Tumor.Size.Summary) PanCancer2005$Tumor.Size.Summary <- as.character(PanCancer2005$Tumor.Size.Summary) PanCancer2006$Tumor.Size.Summary <- as.character(PanCancer2006$Tumor.Size.Summary) PanCancer2007$Tumor.Size.Summary <- as.character(PanCancer2007$Tumor.Size.Summary) PanCancer2008$Tumor.Size.Summary <- as.character(PanCancer2008$Tumor.Size.Summary) PanCancer2009$Tumor.Size.Summary <- as.character(PanCancer2009$Tumor.Size.Summary) PanCancer2010$Tumor.Size.Summary <- as.character(PanCancer2010$Tumor.Size.Summary) PanCancer2011$Tumor.Size.Summary <- as.character(PanCancer2011$Tumor.Size.Summary) PanCancer2012$Tumor.Size.Summary <- as.character(PanCancer2012$Tumor.Size.Summary) PanCancer2013$Tumor.Size.Summary <- as.character(PanCancer2013$Tumor.Size.Summary) PanCancer2014$Tumor.Size.Summary <- as.character(PanCancer2014$Tumor.Size.Summary) PanCancer2015$Tumor.Size.Summary <- as.character(PanCancer2015$Tumor.Size.Summary) PanCancer2016$Tumor.Size.Summary <- as.character(PanCancer2016$Tumor.Size.Summary) PanCancer2017$Tumor.Size.Summary <- as.character(PanCancer2017$Tumor.Size.Summary) PanCancer2018$Tumor.Size.Summary <- as.character(PanCancer2018$Tumor.Size.Summary) PanCancer2019$Tumor.Size.Summary <- as.character(PanCancer2019$Tumor.Size.Summary) PanCancer2020$Tumor.Size.Summary <- as.character(PanCancer2020$Tumor.Size.Summary) ``` ```{r} PanCancer2000$AJCC.Post.Therapy.N <- as.character(PanCancer2000$AJCC.Post.Therapy.N) PanCancer2001$AJCC.Post.Therapy.N <- as.character(PanCancer2001$AJCC.Post.Therapy.N) PanCancer2002$AJCC.Post.Therapy.N <- as.character(PanCancer2002$AJCC.Post.Therapy.N) PanCancer2003$AJCC.Post.Therapy.N <- as.character(PanCancer2003$AJCC.Post.Therapy.N) PanCancer2004$AJCC.Post.Therapy.N <- as.character(PanCancer2004$AJCC.Post.Therapy.N) PanCancer2005$AJCC.Post.Therapy.N <- as.character(PanCancer2005$AJCC.Post.Therapy.N) PanCancer2006$AJCC.Post.Therapy.N <- as.character(PanCancer2006$AJCC.Post.Therapy.N) PanCancer2007$AJCC.Post.Therapy.N <- as.character(PanCancer2007$AJCC.Post.Therapy.N) PanCancer2008$AJCC.Post.Therapy.N <- as.character(PanCancer2008$AJCC.Post.Therapy.N) PanCancer2009$AJCC.Post.Therapy.N <- as.character(PanCancer2009$AJCC.Post.Therapy.N) PanCancer2010$AJCC.Post.Therapy.N <- as.character(PanCancer2010$AJCC.Post.Therapy.N) PanCancer2011$AJCC.Post.Therapy.N <- as.character(PanCancer2011$AJCC.Post.Therapy.N) PanCancer2012$AJCC.Post.Therapy.N <- as.character(PanCancer2012$AJCC.Post.Therapy.N) PanCancer2013$AJCC.Post.Therapy.N <- as.character(PanCancer2013$AJCC.Post.Therapy.N) PanCancer2014$AJCC.Post.Therapy.N <- as.character(PanCancer2014$AJCC.Post.Therapy.N) PanCancer2015$AJCC.Post.Therapy.N <- as.character(PanCancer2015$AJCC.Post.Therapy.N) PanCancer2016$AJCC.Post.Therapy.N <- as.character(PanCancer2016$AJCC.Post.Therapy.N) PanCancer2017$AJCC.Post.Therapy.N <- as.character(PanCancer2017$AJCC.Post.Therapy.N) PanCancer2018$AJCC.Post.Therapy.N <- as.character(PanCancer2018$AJCC.Post.Therapy.N) PanCancer2019$AJCC.Post.Therapy.N <- as.character(PanCancer2019$AJCC.Post.Therapy.N) PanCancer2020$AJCC.Post.Therapy.N <- as.character(PanCancer2020$AJCC.Post.Therapy.N) ``` ```{r} PanCancer2000$AJCC.Post.Therapy.T <- as.character(PanCancer2000$AJCC.Post.Therapy.T) PanCancer2001$AJCC.Post.Therapy.T <- as.character(PanCancer2001$AJCC.Post.Therapy.T) PanCancer2002$AJCC.Post.Therapy.T <- as.character(PanCancer2002$AJCC.Post.Therapy.T) PanCancer2003$AJCC.Post.Therapy.T <- as.character(PanCancer2003$AJCC.Post.Therapy.T) PanCancer2004$AJCC.Post.Therapy.T <- as.character(PanCancer2004$AJCC.Post.Therapy.T) PanCancer2005$AJCC.Post.Therapy.T <- as.character(PanCancer2005$AJCC.Post.Therapy.T) PanCancer2006$AJCC.Post.Therapy.T <- as.character(PanCancer2006$AJCC.Post.Therapy.T) PanCancer2007$AJCC.Post.Therapy.T <- as.character(PanCancer2007$AJCC.Post.Therapy.T) PanCancer2008$AJCC.Post.Therapy.T <- as.character(PanCancer2008$AJCC.Post.Therapy.T) PanCancer2009$AJCC.Post.Therapy.T <- as.character(PanCancer2009$AJCC.Post.Therapy.T) PanCancer2010$AJCC.Post.Therapy.T <- as.character(PanCancer2010$AJCC.Post.Therapy.T) PanCancer2011$AJCC.Post.Therapy.T <- as.character(PanCancer2011$AJCC.Post.Therapy.T) PanCancer2012$AJCC.Post.Therapy.T <- as.character(PanCancer2012$AJCC.Post.Therapy.T) PanCancer2013$AJCC.Post.Therapy.T <- as.character(PanCancer2013$AJCC.Post.Therapy.T) PanCancer2014$AJCC.Post.Therapy.T <- as.character(PanCancer2014$AJCC.Post.Therapy.T) PanCancer2015$AJCC.Post.Therapy.T <- as.character(PanCancer2015$AJCC.Post.Therapy.T) PanCancer2016$AJCC.Post.Therapy.T <- as.character(PanCancer2016$AJCC.Post.Therapy.T) PanCancer2017$AJCC.Post.Therapy.T <- as.character(PanCancer2017$AJCC.Post.Therapy.T) PanCancer2018$AJCC.Post.Therapy.T <- as.character(PanCancer2018$AJCC.Post.Therapy.T) PanCancer2019$AJCC.Post.Therapy.T <- as.character(PanCancer2019$AJCC.Post.Therapy.T) PanCancer2020$AJCC.Post.Therapy.T <- as.character(PanCancer2020$AJCC.Post.Therapy.T) ``` ```{r} PanCancer2000$AJCC.Post.Therapy.M <- as.character(PanCancer2000$AJCC.Post.Therapy.M) PanCancer2001$AJCC.Post.Therapy.M <- as.character(PanCancer2001$AJCC.Post.Therapy.M) PanCancer2002$AJCC.Post.Therapy.M <- as.character(PanCancer2002$AJCC.Post.Therapy.M) PanCancer2003$AJCC.Post.Therapy.M <- as.character(PanCancer2003$AJCC.Post.Therapy.M) PanCancer2004$AJCC.Post.Therapy.M <- as.character(PanCancer2004$AJCC.Post.Therapy.M) PanCancer2005$AJCC.Post.Therapy.M <- as.character(PanCancer2005$AJCC.Post.Therapy.M) PanCancer2006$AJCC.Post.Therapy.M <- as.character(PanCancer2006$AJCC.Post.Therapy.M) PanCancer2007$AJCC.Post.Therapy.M <- as.character(PanCancer2007$AJCC.Post.Therapy.M) PanCancer2008$AJCC.Post.Therapy.M <- as.character(PanCancer2008$AJCC.Post.Therapy.M) PanCancer2009$AJCC.Post.Therapy.M <- as.character(PanCancer2009$AJCC.Post.Therapy.M) PanCancer2010$AJCC.Post.Therapy.M <- as.character(PanCancer2010$AJCC.Post.Therapy.M) PanCancer2011$AJCC.Post.Therapy.M <- as.character(PanCancer2011$AJCC.Post.Therapy.M) PanCancer2012$AJCC.Post.Therapy.M <- as.character(PanCancer2012$AJCC.Post.Therapy.M) PanCancer2013$AJCC.Post.Therapy.M <- as.character(PanCancer2013$AJCC.Post.Therapy.M) PanCancer2014$AJCC.Post.Therapy.M <- as.character(PanCancer2014$AJCC.Post.Therapy.M) PanCancer2015$AJCC.Post.Therapy.M <- as.character(PanCancer2015$AJCC.Post.Therapy.M) PanCancer2016$AJCC.Post.Therapy.M <- as.character(PanCancer2016$AJCC.Post.Therapy.M) PanCancer2017$AJCC.Post.Therapy.M <- as.character(PanCancer2017$AJCC.Post.Therapy.M) PanCancer2018$AJCC.Post.Therapy.M <- as.character(PanCancer2018$AJCC.Post.Therapy.M) PanCancer2019$AJCC.Post.Therapy.M <- as.character(PanCancer2019$AJCC.Post.Therapy.M) PanCancer2020$AJCC.Post.Therapy.M <- as.character(PanCancer2020$AJCC.Post.Therapy.M) ``` ```{r} PanCancer2000$AJCC.Post.Therapy.Stage.Group <- as.character(PanCancer2000$AJCC.Post.Therapy.Stage.Group) PanCancer2001$AJCC.Post.Therapy.Stage.Group <- as.character(PanCancer2001$AJCC.Post.Therapy.Stage.Group) PanCancer2002$AJCC.Post.Therapy.Stage.Group <- as.character(PanCancer2002$AJCC.Post.Therapy.Stage.Group) PanCancer2003$AJCC.Post.Therapy.Stage.Group <- as.character(PanCancer2003$AJCC.Post.Therapy.Stage.Group) PanCancer2004$AJCC.Post.Therapy.Stage.Group <- as.character(PanCancer2004$AJCC.Post.Therapy.Stage.Group) PanCancer2005$AJCC.Post.Therapy.Stage.Group <- as.character(PanCancer2005$AJCC.Post.Therapy.Stage.Group) PanCancer2006$AJCC.Post.Therapy.Stage.Group <- as.character(PanCancer2006$AJCC.Post.Therapy.Stage.Group) PanCancer2007$AJCC.Post.Therapy.Stage.Group <- as.character(PanCancer2007$AJCC.Post.Therapy.Stage.Group) PanCancer2008$AJCC.Post.Therapy.Stage.Group <- as.character(PanCancer2008$AJCC.Post.Therapy.Stage.Group) PanCancer2009$AJCC.Post.Therapy.Stage.Group <- as.character(PanCancer2009$AJCC.Post.Therapy.Stage.Group) PanCancer2010$AJCC.Post.Therapy.Stage.Group <- as.character(PanCancer2010$AJCC.Post.Therapy.Stage.Group) PanCancer2011$AJCC.Post.Therapy.Stage.Group <- as.character(PanCancer2011$AJCC.Post.Therapy.Stage.Group) PanCancer2012$AJCC.Post.Therapy.Stage.Group <- as.character(PanCancer2012$AJCC.Post.Therapy.Stage.Group) PanCancer2013$AJCC.Post.Therapy.Stage.Group <- as.character(PanCancer2013$AJCC.Post.Therapy.Stage.Group) PanCancer2014$AJCC.Post.Therapy.Stage.Group <- as.character(PanCancer2014$AJCC.Post.Therapy.Stage.Group) PanCancer2015$AJCC.Post.Therapy.Stage.Group <- as.character(PanCancer2015$AJCC.Post.Therapy.Stage.Group) PanCancer2016$AJCC.Post.Therapy.Stage.Group <- as.character(PanCancer2016$AJCC.Post.Therapy.Stage.Group) PanCancer2017$AJCC.Post.Therapy.Stage.Group <- as.character(PanCancer2017$AJCC.Post.Therapy.Stage.Group) PanCancer2018$AJCC.Post.Therapy.Stage.Group <- as.character(PanCancer2018$AJCC.Post.Therapy.Stage.Group) PanCancer2019$AJCC.Post.Therapy.Stage.Group <- as.character(PanCancer2019$AJCC.Post.Therapy.Stage.Group) PanCancer2020$AJCC.Post.Therapy.Stage.Group <- as.character(PanCancer2020$AJCC.Post.Therapy.Stage.Group) ``` ```{r} PanCancer2000$Primary.Surgeon.NPI <- as.character(PanCancer2000$Primary.Surgeon.NPI) PanCancer2001$Primary.Surgeon.NPI <- as.character(PanCancer2001$Primary.Surgeon.NPI) PanCancer2002$Primary.Surgeon.NPI <- as.character(PanCancer2002$Primary.Surgeon.NPI) PanCancer2003$Primary.Surgeon.NPI <- as.character(PanCancer2003$Primary.Surgeon.NPI) PanCancer2004$Primary.Surgeon.NPI <- as.character(PanCancer2004$Primary.Surgeon.NPI) PanCancer2005$Primary.Surgeon.NPI <- as.character(PanCancer2005$Primary.Surgeon.NPI) PanCancer2006$Primary.Surgeon.NPI <- as.character(PanCancer2006$Primary.Surgeon.NPI) PanCancer2007$Primary.Surgeon.NPI <- as.character(PanCancer2007$Primary.Surgeon.NPI) PanCancer2008$Primary.Surgeon.NPI <- as.character(PanCancer2008$Primary.Surgeon.NPI) PanCancer2009$Primary.Surgeon.NPI <- as.character(PanCancer2009$Primary.Surgeon.NPI) PanCancer2010$Primary.Surgeon.NPI <- as.character(PanCancer2010$Primary.Surgeon.NPI) PanCancer2011$Primary.Surgeon.NPI <- as.character(PanCancer2011$Primary.Surgeon.NPI) PanCancer2012$Primary.Surgeon.NPI <- as.character(PanCancer2012$Primary.Surgeon.NPI) PanCancer2013$Primary.Surgeon.NPI <- as.character(PanCancer2013$Primary.Surgeon.NPI) PanCancer2014$Primary.Surgeon.NPI <- as.character(PanCancer2014$Primary.Surgeon.NPI) PanCancer2015$Primary.Surgeon.NPI <- as.character(PanCancer2015$Primary.Surgeon.NPI) PanCancer2016$Primary.Surgeon.NPI <- as.character(PanCancer2016$Primary.Surgeon.NPI) PanCancer2017$Primary.Surgeon.NPI <- as.character(PanCancer2017$Primary.Surgeon.NPI) PanCancer2018$Primary.Surgeon.NPI <- as.character(PanCancer2018$Primary.Surgeon.NPI) PanCancer2019$Primary.Surgeon.NPI <- as.character(PanCancer2019$Primary.Surgeon.NPI) PanCancer2020$Primary.Surgeon.NPI <- as.character(PanCancer2020$Primary.Surgeon.NPI) ``` ```{r} PanCancer2000$Radiation.Oncology.Physician.NPI <- as.character(PanCancer2000$Radiation.Oncology.Physician.NPI) PanCancer2001$Radiation.Oncology.Physician.NPI <- as.character(PanCancer2001$Radiation.Oncology.Physician.NPI) PanCancer2002$Radiation.Oncology.Physician.NPI <- as.character(PanCancer2002$Radiation.Oncology.Physician.NPI) PanCancer2003$Radiation.Oncology.Physician.NPI <- as.character(PanCancer2003$Radiation.Oncology.Physician.NPI) PanCancer2004$Radiation.Oncology.Physician.NPI <- as.character(PanCancer2004$Radiation.Oncology.Physician.NPI) PanCancer2005$Radiation.Oncology.Physician.NPI <- as.character(PanCancer2005$Radiation.Oncology.Physician.NPI) PanCancer2006$Radiation.Oncology.Physician.NPI <- as.character(PanCancer2006$Radiation.Oncology.Physician.NPI) PanCancer2007$Radiation.Oncology.Physician.NPI <- as.character(PanCancer2007$Radiation.Oncology.Physician.NPI) PanCancer2008$Radiation.Oncology.Physician.NPI <- as.character(PanCancer2008$Radiation.Oncology.Physician.NPI) PanCancer2009$Radiation.Oncology.Physician.NPI <- as.character(PanCancer2009$Radiation.Oncology.Physician.NPI) PanCancer2010$Radiation.Oncology.Physician.NPI <- as.character(PanCancer2010$Radiation.Oncology.Physician.NPI) PanCancer2011$Radiation.Oncology.Physician.NPI <- as.character(PanCancer2011$Radiation.Oncology.Physician.NPI) PanCancer2012$Radiation.Oncology.Physician.NPI <- as.character(PanCancer2012$Radiation.Oncology.Physician.NPI) PanCancer2013$Radiation.Oncology.Physician.NPI <- as.character(PanCancer2013$Radiation.Oncology.Physician.NPI) PanCancer2014$Radiation.Oncology.Physician.NPI <- as.character(PanCancer2014$Radiation.Oncology.Physician.NPI) PanCancer2015$Radiation.Oncology.Physician.NPI <- as.character(PanCancer2015$Radiation.Oncology.Physician.NPI) PanCancer2016$Radiation.Oncology.Physician.NPI <- as.character(PanCancer2016$Radiation.Oncology.Physician.NPI) PanCancer2017$Radiation.Oncology.Physician.NPI <- as.character(PanCancer2017$Radiation.Oncology.Physician.NPI) PanCancer2018$Radiation.Oncology.Physician.NPI <- as.character(PanCancer2018$Radiation.Oncology.Physician.NPI) PanCancer2019$Radiation.Oncology.Physician.NPI <- as.character(PanCancer2019$Radiation.Oncology.Physician.NPI) PanCancer2020$Radiation.Oncology.Physician.NPI <- as.character(PanCancer2020$Radiation.Oncology.Physician.NPI) ``` ```{r} PanCancerAllYears <- bind_rows(PanCancer2000, PanCancer2001, PanCancer2002, PanCancer2003, PanCancer2004, PanCancer2005, PanCancer2005, PanCancer2006, PanCancer2007, PanCancer2008, PanCancer2009, PanCancer2010, PanCancer2011, PanCancer2012, PanCancer2013, PanCancer2014, PanCancer2015, PanCancer2016, PanCancer2017, PanCancer2018, PanCancer2019, PanCancer2020) ``` ```{r} MonthSurvival <- MonthSurvival %>% select(Medical.Record.Number, Date.of.Last.Contact, Date.of.Initial.Diagnosis) ``` ```{r} AllFinal <- merge(MonthSurvival, PanCancerAllYears, by.x = "Medical.Record.Number", by.y = "Medical.Record.Number", all.x=F, all.y=FALSE) ``` ```{r} AllFinal$Date.of.Initial.Diagnosis.y <- mdy(AllFinal$Date.of.Initial.Diagnosis.y) AllFinal$Date.of.Last.Contact <- mdy(AllFinal$Date.of.Last.Contact) AllFinal$Date.of.First.Surgery <- mdy(AllFinal$Date.of.First.Surgery) ``` ```{r} AllFinal$MonthDate <- (as.yearmon(AllFinal$Date.of.Last.Contact, format = "%m/%Y")- as.yearmon(AllFinal$Date.of.Initial.Diagnosis.y, format = "%m/%Y"))*12 ``` ```{r} ###removing duplicates AllFinalUnique <- AllFinal %>% distinct() ``` ```{r} LocalDataSet <- AllFinalUnique[!duplicated(AllFinalUnique[c("Medical.Record.Number")]),] ``` ```{r} rm(PanCancer2000,PanCancer2001,PanCancer2002,PanCancer2003,PanCancer2004,PanCancer2005,PanCancer2006,PanCancer2007,PanCancer2008,PanCancer2009,PanCancer2010,PanCancer2011,PanCancer2012,PanCancer2013,PanCancer2014,PanCancer2015,PanCancer2016,PanCancer2017,PanCancer2018,PanCancer2019,PanCancer2020,PanCancerAllYears) ``` ```{r} LocalDataSet4 <- LocalDataSet %>% mutate(LocalDataSet, Era = ifelse(Date.of.Initial.Diagnosis.y > "2011-01-01", "Era2", ifelse(Date.of.Initial.Diagnosis.y > "2000-01-01", "Era1", NA))) ``` ```{r} LocalDataSet4$Date.of.First.Surgery <- as.Date(LocalDataSet4$Date.of.First.Surgery) LocalDataSet4 <- LocalDataSet4 %>% mutate(LocalDataSet4, Surgery = ifelse(Date.of.First.Surgery > "2000-01-01", "Yes", ifelse(Date.of.First.Surgery == "No", "No","No"))) LocalDataSet4$Surgery[is.na(LocalDataSet4$Surgery)] <- "No" table(LocalDataSet4$Surgery) ``` ```{r} LocalDataSet4$X1st.Course.Date.Radiation.Started <- mdy(LocalDataSet4$X1st.Course.Date.Radiation.Started) LocalDataSet4 <- LocalDataSet4 %>% mutate(LocalDataSet4, Radiation = ifelse(X1st.Course.Date.Radiation.Started > "2000-01-01", "Yes", ifelse(X1st.Course.Date.Radiation.Started == "No", "No","No"))) LocalDataSet4$Radiation[is.na(LocalDataSet4$Radiation)] <- "No" table(LocalDataSet4$Radiation) ``` LocalDataSet2 <- LocalDataSet1 %>% mutate(LocalDataSet1, StagingBest = ifelse(Best.Summary.Stage == "0", "In situ", NA)) LocalDataSet3 <- LocalDataSet2 %>% mutate(LocalDataSet2, StagingSummary = ifelse(Summary.Stage.2018 == "0 In situ", "In Situ", NA)) LocalDataSet4 <- LocalDataSet3 %>% unite(Staging, c("Best.Summary.Stage", "Summary.Stage.2018")) LocalDataSet4$Staging[LocalDataSet4$Staging == "NA_0 In situ"] <- "In Situ" LocalDataSet4$Staging[LocalDataSet4$Staging == "0_NA"] <- "In Situ" LocalDataSet4$Staging[LocalDataSet4$Staging == "NA_1 Localized"] <- "Localized" LocalDataSet4$Staging[LocalDataSet4$Staging == "1_NA"] <- "Localized" LocalDataSet4$Staging[LocalDataSet4$Staging == "NA_2 Regional by direct extension only"] <- "Regional by direct extension only" LocalDataSet4$Staging[LocalDataSet4$Staging == "2_NA"] <- "Regional by direct extension only" LocalDataSet4$Staging[LocalDataSet4$Staging == "NA_3 Regional lymph nodes only"] <- "Regional lymph nodes only" LocalDataSet4$Staging[LocalDataSet4$Staging == "3_NA"] <- "Regional lymph nodes only" LocalDataSet4$Staging[LocalDataSet4$Staging == "NA_4 Regional by BOTH direct extension AND lymph node involvement"] <- "Regional by BOTH direct extension AND lymph node involvement" LocalDataSet4$Staging[LocalDataSet4$Staging == "4_NA"] <- "Regional by BOTH direct extension AND lymph node involvement" LocalDataSet4$Staging[LocalDataSet4$Staging == "5_NA"] <- NA LocalDataSet4$Staging[LocalDataSet4$Staging == "NA_7 Distant site(s)/node(s) involved"] <- "Distant Site(s)/node(s) involved" LocalDataSet4$Staging[LocalDataSet4$Staging == "7_NA"] <- "Distant Site(s)/node(s) involved" LocalDataSet4$Staging[LocalDataSet4$Staging == "NA_9 Unknown if extension or metastasis (unstaged, unknown, or unspecified); Death Certificate Only Case"] <- NA LocalDataSet4$Staging[LocalDataSet4$Staging == "9_NA"] <- NA LocalDataSet4$Staging[LocalDataSet4$Staging == "NA_NA"] <- NA LocalDataSet4$Staging[LocalDataSet4$Staging == "NA_"] <- NA table(LocalDataSet4$Staging) table(LocalDataSet4$Race.1) ```{r} LocalDataSet4$Race.1[LocalDataSet4$Race.1 == "98 Other"] <- "Non-White" LocalDataSet4$Race.1[LocalDataSet4$Race.1 == "02 Black"] <- "Non-White" LocalDataSet4$Race.1[LocalDataSet4$Race.1 == "03 American Indian, Aleutian, or Eskimo"] <- "Non-White" LocalDataSet4$Race.1[LocalDataSet4$Race.1 == "05 Japanese"] <- "Non-White" LocalDataSet4$Race.1[LocalDataSet4$Race.1 == "04 Chinese"] <- "Non-White" LocalDataSet4$Race.1[LocalDataSet4$Race.1 == "06 Filipino"] <- "Non-White" LocalDataSet4$Race.1[LocalDataSet4$Race.1 == "10 Vietnamese"] <- "Non-White" LocalDataSet4$Race.1[LocalDataSet4$Race.1 == "98 Other"] <- "Non-White" LocalDataSet4$Race.1[LocalDataSet4$Race.1 == "99 Unknown"] <- "Non-White" LocalDataSet4$Race.1[LocalDataSet4$Race.1 == "01 White"] <- "White" table(LocalDataSet4$Race.1) ``` ```{r} LocalDataSet4$AJCC.Clinical.Stage.Group[LocalDataSet4$AJCC.Clinical.Stage.Group == "0"] <- "EminentlyResectable" LocalDataSet4$AJCC.Clinical.Stage.Group[LocalDataSet4$AJCC.Clinical.Stage.Group == "1"] <- "EminentlyResectable" LocalDataSet4$AJCC.Clinical.Stage.Group[LocalDataSet4$AJCC.Clinical.Stage.Group == "1A"] <- "EminentlyResectable" LocalDataSet4$AJCC.Clinical.Stage.Group[LocalDataSet4$AJCC.Clinical.Stage.Group == "1B"] <- "EminentlyResectable" LocalDataSet4$AJCC.Clinical.Stage.Group[LocalDataSet4$AJCC.Clinical.Stage.Group == "2"] <- "EminentlyResectable" LocalDataSet4$AJCC.Clinical.Stage.Group[LocalDataSet4$AJCC.Clinical.Stage.Group == "2A"] <- "EminentlyResectable" LocalDataSet4$AJCC.Clinical.Stage.Group[LocalDataSet4$AJCC.Clinical.Stage.Group == "2B"] <- "LocallyAdvanced" LocalDataSet4$AJCC.Clinical.Stage.Group[LocalDataSet4$AJCC.Clinical.Stage.Group == "3"] <- "LocallyAdvanced" LocalDataSet4$AJCC.Clinical.Stage.Group[LocalDataSet4$AJCC.Clinical.Stage.Group == "4"] <- "Stage4" LocalDataSet4$AJCC.Clinical.Stage.Group[LocalDataSet4$AJCC.Clinical.Stage.Group == "4B"] <- "Stage4" LocalDataSet4$AJCC.Clinical.Stage.Group[LocalDataSet4$AJCC.Clinical.Stage.Group == "88"] <- NA LocalDataSet4$AJCC.Clinical.Stage.Group[LocalDataSet4$AJCC.Clinical.Stage.Group == "99"] <- NA LocalDataSet4$AJCC.Clinical.Stage.Group[LocalDataSet4$AJCC.Clinical.Stage.Group == ""] <- NA table(LocalDataSet4$AJCC.Clinical.Stage.Group ) ``` ```{r} LocalDataSet4$X1st.Course.Chemotherapy.Summ[LocalDataSet4$X1st.Course.Chemotherapy.Summ == "00 None; chemotherapy not part of planned first course; autopsy only"] <- "No" LocalDataSet4$X1st.Course.Chemotherapy.Summ[LocalDataSet4$X1st.Course.Chemotherapy.Summ == "87 Pt/pt`s guardian refused chemotherapy; refusal noted"] <- "No" LocalDataSet4$X1st.Course.Chemotherapy.Summ[LocalDataSet4$X1st.Course.Chemotherapy.Summ == "86 Reason unknown for no chemo; recommended but not admin"] <- "No" LocalDataSet4$X1st.Course.Chemotherapy.Summ[LocalDataSet4$X1st.Course.Chemotherapy.Summ == "82 Chemotherapy contraindicated due to pt risk factors"] <- "No" LocalDataSet4$X1st.Course.Chemotherapy.Summ[LocalDataSet4$X1st.Course.Chemotherapy.Summ == "85 Chemo not admin; Pt died prior to planned/recommended therapy"] <- "No" LocalDataSet4$X1st.Course.Chemotherapy.Summ[LocalDataSet4$X1st.Course.Chemotherapy.Summ == "01 Chemotherapy, NOS"] <- "Yes" LocalDataSet4$X1st.Course.Chemotherapy.Summ[LocalDataSet4$X1st.Course.Chemotherapy.Summ == "02 Chemotherapy, single agent"] <- "Yes" LocalDataSet4$X1st.Course.Chemotherapy.Summ[LocalDataSet4$X1st.Course.Chemotherapy.Summ == "03 Chemotherapy, multiple agents (combination regimen)"] <- "Yes" LocalDataSet4$X1st.Course.Chemotherapy.Summ[LocalDataSet4$X1st.Course.Chemotherapy.Summ == "88 Chemotherapy recommended, unk if administered"] <- NA LocalDataSet4$X1st.Course.Chemotherapy.Summ[LocalDataSet4$X1st.Course.Chemotherapy.Summ == "99 Unk if chemotherapy recommended/administered; death cert only"] <- NA table(LocalDataSet4$X1st.Course.Chemotherapy.Summ) ``` ```{r} table(LocalDataSet4$Marital.Status.at.DX) LocalDataSet4$Marital.Status.at.DX[LocalDataSet4$Marital.Status.at.DX == "1 Single (never married)"] <- "Single" LocalDataSet4$Marital.Status.at.DX[LocalDataSet4$Marital.Status.at.DX == "2 Married (including common law)"] <- "Married" LocalDataSet4$Marital.Status.at.DX[LocalDataSet4$Marital.Status.at.DX == "3 Separated"] <- "Divorced/Separated" LocalDataSet4$Marital.Status.at.DX[LocalDataSet4$Marital.Status.at.DX == "4 Divorced"] <- "Divorced/Separated" LocalDataSet4$Marital.Status.at.DX[LocalDataSet4$Marital.Status.at.DX == "5 Widowed"] <- "Widowed" LocalDataSet4$Marital.Status.at.DX[LocalDataSet4$Marital.Status.at.DX == "6 Unmarried or Domestic Partner (same sex or opposite sex, registered or unregistered, other than common law marriage)"] <- "Single" LocalDataSet4$Marital.Status.at.DX[LocalDataSet4$Marital.Status.at.DX == "9 Unknown"] <- NA ``` ```{r} LocalDataSet4$Primary.Payer.at.DX[LocalDataSet4$Primary.Payer.at.DX == "01 Not Insured"] <- "Uninsured" LocalDataSet4$Primary.Payer.at.DX[LocalDataSet4$Primary.Payer.at.DX == "02 Not Insured, self pay"] <- "Uninsured" LocalDataSet4$Primary.Payer.at.DX[LocalDataSet4$Primary.Payer.at.DX == "20 Private Ins: Managed care, HMO, PPO"] <- "Insured" LocalDataSet4$Primary.Payer.at.DX[LocalDataSet4$Primary.Payer.at.DX == "31 Medicaid"] <- "Medicaid" LocalDataSet4$Primary.Payer.at.DX[LocalDataSet4$Primary.Payer.at.DX == "35 Medicaid - Admin through Managed Care Plan"] <- "Medicaid" LocalDataSet4$Primary.Payer.at.DX[LocalDataSet4$Primary.Payer.at.DX == "60 Medicare w/o supplement, Medicare, NOS"] <- "Insured" LocalDataSet4$Primary.Payer.at.DX[LocalDataSet4$Primary.Payer.at.DX == "61 Medicare with supplement, NOS"] <- "Insured" LocalDataSet4$Primary.Payer.at.DX[LocalDataSet4$Primary.Payer.at.DX == "62 Medicare - Admin through Managed Care Plan"] <- "Insured" LocalDataSet4$Primary.Payer.at.DX[LocalDataSet4$Primary.Payer.at.DX == "63 Medicare with private supplement"] <- "Insured" LocalDataSet4$Primary.Payer.at.DX[LocalDataSet4$Primary.Payer.at.DX == "64 Medicare with Medicaid eligibility"] <- "Insured" LocalDataSet4$Primary.Payer.at.DX[LocalDataSet4$Primary.Payer.at.DX == "64 Medicare with Medicaid eligibility"] <- "Insured" LocalDataSet4$Primary.Payer.at.DX[LocalDataSet4$Primary.Payer.at.DX == "65 TRICARE"] <- "Insured" LocalDataSet4$Primary.Payer.at.DX[LocalDataSet4$Primary.Payer.at.DX == "66 Military"] <- "Insured" LocalDataSet4$Primary.Payer.at.DX[LocalDataSet4$Primary.Payer.at.DX == "67 Veterans Affairs"] <- "Insured" LocalDataSet4$Primary.Payer.at.DX[LocalDataSet4$Primary.Payer.at.DX == "99 Insurance status unknown"] <- NA LocalDataSet4$Primary.Payer.at.DX[LocalDataSet4$Primary.Payer.at.DX == "10 Insurance, NOS"] <- NA table(LocalDataSet4$Primary.Payer.at.DX) ``` ```{r} LocalDataSet4$Histo.Behavior.ICD.O.3[LocalDataSet4$Histo.Behavior.ICD.O.3 == "80133 Large cell neuroendocrine carcinoma"] <- NA LocalDataSet4$Histo.Behavior.ICD.O.3[LocalDataSet4$Histo.Behavior.ICD.O.3 == "81503 Pancreatic endocrine tumor, malignant (C25._)"] <- NA LocalDataSet4$Histo.Behavior.ICD.O.3[LocalDataSet4$Histo.Behavior.ICD.O.3 == "80313 Giant cell carcinoma"] <- NA LocalDataSet4$Histo.Behavior.ICD.O.3[LocalDataSet4$Histo.Behavior.ICD.O.3 == "80703 Squamous cell carcinoma, NOS"] <- NA LocalDataSet4$Histo.Behavior.ICD.O.3[LocalDataSet4$Histo.Behavior.ICD.O.3 == "81513 Insulinoma, malignant"] <- NA LocalDataSet4$Histo.Behavior.ICD.O.3[LocalDataSet4$Histo.Behavior.ICD.O.3 == "81533 Gastrinoma, malignant"] <- NA LocalDataSet4$Histo.Behavior.ICD.O.3[LocalDataSet4$Histo.Behavior.ICD.O.3 == "81503 Islet cell carcinoma (C25._)"] <- NA LocalDataSet4$Histo.Behavior.ICD.O.3[LocalDataSet4$Histo.Behavior.ICD.O.3 == "81581 Endocrine tumor, functioning, NOS"] <- NA LocalDataSet4$Histo.Behavior.ICD.O.3[LocalDataSet4$Histo.Behavior.ICD.O.3 == "82403 Carcinoid tumor, NOS (except of appendix)"] <- NA LocalDataSet4$Histo.Behavior.ICD.O.3[LocalDataSet4$Histo.Behavior.ICD.O.3 == "82403 Carcinoid, NOS (except of appendix)"] <- NA LocalDataSet4$Histo.Behavior.ICD.O.3[LocalDataSet4$Histo.Behavior.ICD.O.3 == "82403 Neuroendocrine carcinoma, low grade"] <- NA LocalDataSet4$Histo.Behavior.ICD.O.3[LocalDataSet4$Histo.Behavior.ICD.O.3 == "82403 Neuroendocrine carcinoma, well-differentiated"] <- NA LocalDataSet4$Histo.Behavior.ICD.O.3[LocalDataSet4$Histo.Behavior.ICD.O.3 == "82403 Neuroendocrine tumor, grade 1"] <- NA LocalDataSet4$Histo.Behavior.ICD.O.3[LocalDataSet4$Histo.Behavior.ICD.O.3 == "82493 Neuroendocrine tumor, grade 2"] <- NA LocalDataSet4$Histo.Behavior.ICD.O.3[LocalDataSet4$Histo.Behavior.ICD.O.3 == "82463 Neuroendocrine tumor, well differentiated (C50._)"] <- NA LocalDataSet4$Histo.Behavior.ICD.O.3[LocalDataSet4$Histo.Behavior.ICD.O.3 == "82463 Neuroendocrine carcinoma, NOS"] <- NA LocalDataSet4$Histo.Behavior.ICD.O.3[LocalDataSet4$Histo.Behavior.ICD.O.3 == "84532 Intraductal papillary mucinous neoplasm with high-grade dysplasia (C25._)"] <- NA LocalDataSet4$Histo.Behavior.ICD.O.3[LocalDataSet4$Histo.Behavior.ICD.O.3 == "84532 Intraductal papillary-mucinous carcinoma, non-invasive"] <- NA LocalDataSet4$Histo.Behavior.ICD.O.3[LocalDataSet4$Histo.Behavior.ICD.O.3 == "84533 Intraductal papillary mucinous neoplasm (IPMN) with an associated invasive carcinoma (C25._)"] <- NA LocalDataSet4$Histo.Behavior.ICD.O.3[LocalDataSet4$Histo.Behavior.ICD.O.3 == "84533 Intraductal papillary-mucinous carcinoma, invasive"] <- NA LocalDataSet4$Histo.Behavior.ICD.O.3[LocalDataSet4$Histo.Behavior.ICD.O.3 == "88903 Leiomyosarcoma, NOS"] <- NA LocalDataSet4$Histo.Behavior.ICD.O.3[LocalDataSet4$Histo.Behavior.ICD.O.3 == "89363 GIST, malignant"] <- NA LocalDataSet4$Histo.Behavior.ICD.O.3[LocalDataSet4$Histo.Behavior.ICD.O.3 == "92603 Ewing sarcoma"] <- NA LocalDataSet4$Histo.Behavior.ICD.O.3[LocalDataSet4$Histo.Behavior.ICD.O.3 == "95913 Non-Hodgkin lymphoma, NOS"] <- NA LocalDataSet4$Histo.Behavior.ICD.O.3[LocalDataSet4$Histo.Behavior.ICD.O.3 == "96803 Lymphoma, diffuse large B-cell, NOS"] <- NA LocalDataSet4$Histo.Behavior.ICD.O.3[LocalDataSet4$Histo.Behavior.ICD.O.3 == "96803 Lymphoma, malig, large B-cell, diffuse, (DLBCL), NOS"] <- NA table(LocalDataSet4$Histo.Behavior.ICD.O.3) ``` ```{r} LocalDataSetDT <- LocalDataSet4 %>% select(Age.at.Diagnosis, Sex, Race.1, Primary.Payer.at.DX, Marital.Status.at.DX, Histo.Behavior.ICD.O.3, Era, AJCC.Clinical.Stage.Group, Vital.Status, MonthDate, Surgery, X1st.Course.Chemotherapy.Summ, Radiation) ``` ```{r} DTLocalDataStage4 <- subset(LocalDataSetDT, AJCC.Clinical.Stage.Group == "Stage4") DTLocalized <- subset(LocalDataSetDT, AJCC.Clinical.Stage.Group == "LocallyAdvanced" | AJCC.Clinical.Stage.Group == "EminentlyResectable") DTLocallyAdvanced <- subset(LocalDataSetDT, AJCC.Clinical.Stage.Group == "LocallyAdvanced") DTEminentlyResectable <- subset(LocalDataSetDT, AJCC.Clinical.Stage.Group == "EminentlyResectable") DTSurgery <- subset(LocalDataSetDT, Surgery == "Yes") DTSurgery$AJCC.Clinical.Stage.Group[DTSurgery$AJCC.Clinical.Stage.Group == "Stage4"] <- NA table(DTLocalized$AJCC.Clinical.Stage.Group) ``` ```{r} DTSurgery <- DTSurgery %>% select(Age.at.Diagnosis, Sex, Race.1, Primary.Payer.at.DX, Marital.Status.at.DX, Histo.Behavior.ICD.O.3, Era, AJCC.Clinical.Stage.Group, Vital.Status, MonthDate, X1st.Course.Chemotherapy.Summ, Radiation) ``` ```{r} LocalDataSetDT %>% tbl_summary( by = Era, digits = all_continuous() ~ 2,) %>% add_p(pvalue_fun = ~style_pvalue(.x, digits = 2))%>% bold_p() %>% add_overall() %>% modify_header(label ~ "**Variable**") %>% modify_spanning_header(c("stat_1", "stat_2") ~ "**Demographic Table Everyone Era1 vs Era2*") %>% bold_labels() ``` ```{r} DTSurgery %>% tbl_summary( by = Era, digits = all_continuous() ~ 2,) %>% add_p(pvalue_fun = ~style_pvalue(.x, digits = 2))%>% bold_p() %>% add_overall() %>% modify_header(label ~ "**Variable**") %>% modify_spanning_header(c("stat_1", "stat_2") ~ "**Demographic Table Surgical Patients Era1 vs Era2*") %>% bold_labels() ``` ```{r} DTEminentlyResectable %>% tbl_summary( by = Era, digits = all_continuous() ~ 2,) %>% add_p(pvalue_fun = ~style_pvalue(.x, digits = 2))%>% bold_p() %>% add_overall() %>% modify_header(label ~ "**Variable**") %>% modify_spanning_header(c("stat_1", "stat_2") ~ "**Demographic Table EminentlyResectable Era1 vs Era2*") %>% bold_labels() ``` ```{r} DTLocalDataStage4 %>% tbl_summary( by = Era, digits = all_continuous() ~ 2,) %>% add_p(pvalue_fun = ~style_pvalue(.x, digits = 2))%>% bold_p() %>% add_overall() %>% modify_header(label ~ "**Variable**") %>% modify_spanning_header(c("stat_1", "stat_2") ~ "**Demographic Table Stage 4 Era1 vs Era2*") %>% bold_labels() ``` ```{r} DTLocalized %>% tbl_summary( by = Era, digits = all_continuous() ~ 2,) %>% add_p(pvalue_fun = ~style_pvalue(.x, digits = 2))%>% bold_p() %>% add_overall() %>% modify_header(label ~ "**Variable**") %>% modify_spanning_header(c("stat_1", "stat_2") ~ "**Demographic Table Localized Era1 vs Era2*") %>% bold_labels() ``` ```{r} DTLocallyAdvanced %>% tbl_summary( by = Era, digits = all_continuous() ~ 2,) %>% add_p(pvalue_fun = ~style_pvalue(.x, digits = 2))%>% bold_p() %>% add_overall() %>% modify_header(label ~ "**Variable**") %>% modify_spanning_header(c("stat_1", "stat_2") ~ "**Demographic Table Locally Advanced Era1 vs Era2*") %>% bold_labels() ``` ```{r} SurvivalLocalData <- LocalDataSetDT %>% select(Age.at.Diagnosis, Sex, Race.1, Era, AJCC.Clinical.Stage.Group, Marital.Status.at.DX, Primary.Payer.at.DX, Vital.Status, MonthDate, Surgery, X1st.Course.Chemotherapy.Summ, Radiation) ``` ```{r} SurvivalLocalData <- SurvivalLocalData %>% mutate(SurvivalLocalData, Age = ifelse(Age.at.Diagnosis >= 85, "85+", ifelse(Age.at.Diagnosis >= 75, "75-84", ifelse(Age.at.Diagnosis >= 65, "65-74", ifelse(Age.at.Diagnosis >=0, "0-65", NA))))) ``` ```{r} ORLocalData <- SurvivalLocalData %>% select(Age, Sex, Race.1, Era, AJCC.Clinical.Stage.Group, Marital.Status.at.DX, Primary.Payer.at.DX, Vital.Status, MonthDate, Surgery, X1st.Course.Chemotherapy.Summ, Radiation) ``` ```{r} #####Logistic Regression Ensure that Era is labeled as 1= Era2 and 0=Era1 ORLocalData$Era[ORLocalData$Era == "Era2"] <- 1 ORLocalData$Era[ORLocalData$Era == "Era1"] <- 0 table(ORLocalData$Era) ``` ```{r} #####Survival Analysis Ensure that vital status is labeled as 1= Alive and 2=Death SurvivalLocalData$Vital.Status[SurvivalLocalData$Vital.Status == "0 Dead"] <- 2 SurvivalLocalData$Vital.Status[SurvivalLocalData$Vital.Status == "1 Alive"] <- 1 ``` ```{r} SurvivalLocalData$Vital.Status <- as.numeric(SurvivalLocalData$Vital.Status) SurvivalLocalData$MonthDate <- as.numeric(SurvivalLocalData$MonthDate) ``` ```{r} ORLocalData$Era <- as.numeric(ORLocalData$Era) ``` ```{r} ORLocalDataStage4 <- subset(ORLocalData, AJCC.Clinical.Stage.Group == "Stage4") ORLocalized <- subset(ORLocalData, AJCC.Clinical.Stage.Group == "LocallyAdvanced" | AJCC.Clinical.Stage.Group == "EminentlyResectable") ORLocallyAdvanced <- subset(ORLocalData, AJCC.Clinical.Stage.Group == "LocallyAdvanced") OREminentlyResectable <- subset(ORLocalData, AJCC.Clinical.Stage.Group == "EminentlyResectable") ORSurgery <- subset(ORLocalData, Surgery == "Yes") ORSurgery$AJCC.Clinical.Stage.Group[ORSurgery$AJCC.Clinical.Stage.Group == "Stage4"] <- NA ``` ```{r} SurvivalLocalDataStage4 <- subset(SurvivalLocalData, AJCC.Clinical.Stage.Group == "Stage4") SurvivalLocalized <- subset(SurvivalLocalData, AJCC.Clinical.Stage.Group == "LocallyAdvanced" | AJCC.Clinical.Stage.Group == "EminentlyResectable") SurvivalLocallyAdvanced <- subset(SurvivalLocalData, AJCC.Clinical.Stage.Group == "LocallyAdvanced") SurvivalEminentlyResectable <- subset(SurvivalLocalData, AJCC.Clinical.Stage.Group == "EminentlyResectable") SurvivalSurgery <- subset(SurvivalLocalData, Surgery == "Yes") SurvivalSurgery$AJCC.Clinical.Stage.Group[SurvivalSurgery$AJCC.Clinical.Stage.Group == "Stage4"] <- NA ``` ```{r Univariant analysis Everyone OR} UVEveryoneOR <- ORLocalData %>% select(Primary.Payer.at.DX, Marital.Status.at.DX, AJCC.Clinical.Stage.Group, Surgery, Radiation, Era) %>% tbl_uvregression( method = glm, y = Era, method.args = list(family = binomial), exponentiate = TRUE, pvalue_fun = ~style_pvalue(.x, digits = 2) ) %>% bold_p(t = 0.10) %>% bold_labels() %>% italicize_levels() ``` ```{r} ####Multivariant analysis Everyone MVOREveryoneOR <- glm(Era ~ Primary.Payer.at.DX + AJCC.Clinical.Stage.Group + Surgery + Radiation, data = ORLocalData, family = binomial("logit"), na.action =na.omit) ``` ```{r} ###continue on to merge the table sets MVORTableEveryoneOR <- tbl_regression(MVOREveryoneOR, exponentiate = T, pvalue_fun = ~style_pvalue(.x, digits = 2), ) %>% bold_p(t = 0.10) %>% bold_labels() %>% italicize_levels() ``` ```{r} tbl_merge( list(UVEveryoneOR, MVORTableEveryoneOR), tab_spanner = c("All Patients, **Univariable**", "**Multivariable**") ) %>% bold_labels() %>% italicize_levels() ``` ```{r Univariant analysis Localized} UVLocalizedOR <- ORLocalized %>% select(Primary.Payer.at.DX, Marital.Status.at.DX, AJCC.Clinical.Stage.Group, Surgery, Radiation, X1st.Course.Chemotherapy.Summ, Era) %>% tbl_uvregression( method = glm, y = Era, method.args = list(family = binomial), exponentiate = TRUE, pvalue_fun = ~style_pvalue(.x, digits = 2) ) %>% bold_p(t = 0.10) %>% bold_labels() %>% italicize_levels() ``` ```{r} ####Multivariant analysis Localized MVORLocalizedOR <- glm(Era ~ Primary.Payer.at.DX + Marital.Status.at.DX + AJCC.Clinical.Stage.Group + X1st.Course.Chemotherapy.Summ + Surgery + Radiation, data = ORLocalized, family = binomial("logit"), na.action =na.omit) ``` ```{r} ###continue on to merge the table sets MVORTableLocalizedOR <- tbl_regression(MVORLocalizedOR, exponentiate = T, pvalue_fun = ~style_pvalue(.x, digits = 2), ) %>% bold_p(t = 0.10) %>% bold_labels() %>% italicize_levels() ``` ```{r} tbl_merge( list(UVLocalizedOR, MVORTableLocalizedOR), tab_spanner = c("Localized, **Univariable**", "**Multivariable**") ) %>% bold_labels() %>% italicize_levels() ``` ```{r Univariant analysis Eminently Resectable} UVEminentlyOR <- OREminentlyResectable %>% select(Age, Marital.Status.at.DX, Surgery, Radiation, Era) %>% tbl_uvregression( method = glm, y = Era, method.args = list(family = binomial), exponentiate = TRUE, pvalue_fun = ~style_pvalue(.x, digits = 2) ) %>% bold_p(t = 0.10) %>% bold_labels() %>% italicize_levels() ``` ```{r} ####Multivariant analysis Eminentlyresectable MVOREminentlyOR <- glm(Era ~ Age + Surgery + Radiation, data = OREminentlyResectable, family = binomial("logit"), na.action =na.omit) ``` ```{r} ###continue on to merge the table sets MVORTableEminentlyOR <- tbl_regression(MVOREminentlyOR, exponentiate = T, pvalue_fun = ~style_pvalue(.x, digits = 2), ) %>% bold_p(t = 0.10) %>% bold_labels() %>% italicize_levels() ``` ```{r} tbl_merge( list(UVEminentlyOR, MVORTableEminentlyOR), tab_spanner = c("Eminently Resectable, **Univariable**", "**Multivariable**") ) %>% bold_labels() %>% italicize_levels() ``` ```{r Univariant analysis Locally Advanced} UVLocallyAdvancedOR <- ORLocallyAdvanced %>% select(Primary.Payer.at.DX, Marital.Status.at.DX, Surgery, X1st.Course.Chemotherapy.Summ, Radiation, Era) %>% tbl_uvregression( method = glm, y = Era, method.args = list(family = binomial), exponentiate = TRUE, pvalue_fun = ~style_pvalue(.x, digits = 2) ) %>% bold_p(t = 0.10) %>% bold_labels() %>% italicize_levels() ``` ```{r} ####Multivariant analysis Locally Advanced MVORLocallyAdvnacedOR <- glm(Era ~ Primary.Payer.at.DX + Surgery + X1st.Course.Chemotherapy.Summ + Radiation, data = ORLocallyAdvanced, family = binomial("logit"), na.action =na.omit) ``` ```{r} ###continue on to merge the table sets MVORTableLocallyAdvancedOR <- tbl_regression(MVORLocallyAdvnacedOR, exponentiate = T, pvalue_fun = ~style_pvalue(.x, digits = 2), ) %>% bold_p(t = 0.10) %>% bold_labels() %>% italicize_levels() ``` ```{r} tbl_merge( list(UVLocallyAdvancedOR, MVORTableLocallyAdvancedOR), tab_spanner = c("Locally Advanced, **Univariable**", "**Multivariable**") ) %>% bold_labels() %>% italicize_levels() ``` ```{r Univariant analysis Surgery} UVSurgeryOR <- ORSurgery %>% select(Primary.Payer.at.DX, Marital.Status.at.DX, AJCC.Clinical.Stage.Group, Radiation, Era) %>% tbl_uvregression( method = glm, y = Era, method.args = list(family = binomial), exponentiate = TRUE, pvalue_fun = ~style_pvalue(.x, digits = 2) ) %>% bold_p(t = 0.10) %>% bold_labels() %>% italicize_levels() ``` ```{r} ####Multivariant analysis Surgery MVORSurgeryOR <- glm(Era ~ Primary.Payer.at.DX + AJCC.Clinical.Stage.Group + Radiation, data = ORSurgery, family = binomial("logit"), na.action =na.omit) ``` ```{r} ###continue on to merge the table sets MVORTableSurgeryOR <- tbl_regression(MVORSurgeryOR, exponentiate = T, pvalue_fun = ~style_pvalue(.x, digits = 2), ) %>% bold_p(t = 0.10) %>% bold_labels() %>% italicize_levels() ``` ```{r} tbl_merge( list(UVSurgeryOR, MVORTableSurgeryOR), tab_spanner = c("Surgery, **Univariable**", "**Multivariable**") ) %>% bold_labels() %>% italicize_levels() ``` ```{r Univariant analysis Stage4} UVStage4OR <- ORLocalDataStage4 %>% select(Primary.Payer.at.DX, Radiation, Era) %>% tbl_uvregression( method = glm, y = Era, method.args = list(family = binomial), exponentiate = TRUE, pvalue_fun = ~style_pvalue(.x, digits = 2) ) %>% bold_p(t = 0.10) %>% bold_labels() %>% italicize_levels() ``` ```{r} ####Multivariant analysis serious complications MVORStage4OR <- glm(Era ~ Primary.Payer.at.DX + Radiation, data = ORLocalDataStage4, family = binomial("logit"), na.action =na.omit) ``` ```{r} ###continue on to merge the table sets MVORTableORStage4 <- tbl_regression(MVORStage4OR, exponentiate = T, pvalue_fun = ~style_pvalue(.x, digits = 2), ) %>% bold_p(t = 0.10) %>% bold_labels() %>% italicize_levels() ``` ```{r} tbl_merge( list(UVStage4OR, MVORTableORStage4), tab_spanner = c("Stage 4, **Univariable**", "**Multivariable**") ) %>% bold_labels() %>% italicize_levels() ``` ```{r} ### Univariant Survival Neoadj UVSurvEveryone <- SurvivalLocalData %>% select(Age, Sex, Race.1, Era, AJCC.Clinical.Stage.Group, Primary.Payer.at.DX, Marital.Status.at.DX, Vital.Status, MonthDate) %>% tbl_uvregression( method = coxph, y = Surv(MonthDate, Vital.Status), exponentiate = TRUE) %>% bold_p(t = 0.10) %>% bold_labels() %>% italicize_levels() ``` ```{r} ###Multivariant survival Neoadj MVSurvEveryone <- coxph(Surv(MonthDate, Vital.Status) ~ Age + Primary.Payer.at.DX + Era + AJCC.Clinical.Stage.Group + Marital.Status.at.DX, data = SurvivalLocalData) %>% tbl_regression(exponentiate = T ) %>% bold_p(t = 0.10) %>% bold_labels() %>% italicize_levels() ``` ```{r} ###Merged Neo Univariant and Multivariant tbl_merge( list(UVSurvEveryone, MVSurvEveryone), tab_spanner = c("Everyone,**Univariable**", "**Multivariable**") ) %>% bold_labels() %>% italicize_levels() ``` ```{r} survfit(Surv(MonthDate, Vital.Status) ~ Era, data = SurvivalLocalData) survfit(Surv(MonthDate, Vital.Status) ~ Age, data = SurvivalLocalData) survfit(Surv(MonthDate, Vital.Status) ~ Sex, data = SurvivalLocalData) survfit(Surv(MonthDate, Vital.Status) ~ Race.1, data = SurvivalLocalData) survfit(Surv(MonthDate, Vital.Status) ~ AJCC.Clinical.Stage.Group, data = SurvivalLocalData) survfit(Surv(MonthDate, Vital.Status) ~ Marital.Status.at.DX, data = SurvivalLocalData) survfit(Surv(MonthDate, Vital.Status) ~ Primary.Payer.at.DX, data = SurvivalLocalData) ``` ```{r} fit <- survfit(Surv(MonthDate, Vital.Status) ~ Era, data = SurvivalLocalData) ggsurvplot(fit, data = SurvivalLocalData, risk.table = TRUE) ggsurvplot( fit, # survfit object with calculated statistics. data = SurvivalLocalData, # data used to fit survival curves. risk.table = TRUE, # show risk table. pval = TRUE, # show p-value of log-rank test. conf.int = TRUE, # show confidence intervals for # point estimaes of survival curves. xlim = c(0,200), # present narrower X axis, but not affect # survival estimates. break.time.by = 25, # break X axis in time intervals by 500. ggtheme = theme_minimal(), # customize plot and risk table with a theme. risk.table.y.text.col = T, # colour risk table text annotations. risk.table.y.text = FALSE # show bars instead of names in text annotations # in legend of risk table ) ``` ```{r} ### Univariant Survival Neoadj UVSurvStage4 <- SurvivalLocalDataStage4 %>% select(Age, Sex, Race.1, Era, Primary.Payer.at.DX, Marital.Status.at.DX, Vital.Status, MonthDate) %>% tbl_uvregression( method = coxph, y = Surv(MonthDate, Vital.Status), exponentiate = TRUE) %>% bold_p(t = 0.10) %>% bold_labels() %>% italicize_levels() ``` ```{r} ###Multivariant survival Neoadj MVSurvStage4 <- coxph(Surv(MonthDate, Vital.Status) ~ Age + Sex + Primary.Payer.at.DX + Era, data = SurvivalLocalDataStage4) %>% tbl_regression(exponentiate = T ) %>% bold_p(t = 0.10) %>% bold_labels() %>% italicize_levels() ``` ```{r} ###Merged Neo Univariant and Multivariant tbl_merge( list(UVSurvStage4, MVSurvStage4), tab_spanner = c("Stage4, **Univariable**", "**Multivariable**") ) %>% bold_labels() %>% italicize_levels() ``` ```{r} survfit(Surv(MonthDate, Vital.Status) ~ Era, data = SurvivalLocalDataStage4) survfit(Surv(MonthDate, Vital.Status) ~ Age, data = SurvivalLocalDataStage4) survfit(Surv(MonthDate, Vital.Status) ~ Sex, data = SurvivalLocalDataStage4) survfit(Surv(MonthDate, Vital.Status) ~ Race.1, data = SurvivalLocalData) survfit(Surv(MonthDate, Vital.Status) ~ Marital.Status.at.DX, data = SurvivalLocalDataStage4) survfit(Surv(MonthDate, Vital.Status) ~ Primary.Payer.at.DX, data = SurvivalLocalDataStage4) ``` ```{r} fit <- survfit(Surv(MonthDate, Vital.Status) ~ Era, data = SurvivalLocalDataStage4) ggsurvplot(fit, data = SurvivalLocalDataStage4, risk.table = TRUE) ggsurvplot( fit, # survfit object with calculated statistics. data = SurvivalLocalDataStage4, # data used to fit survival curves. risk.table = TRUE, # show risk table. pval = TRUE, # show p-value of log-rank test. conf.int = TRUE, # show confidence intervals for # point estimaes of survival curves. xlim = c(0,200), # present narrower X axis, but not affect # survival estimates. break.time.by = 25, # break X axis in time intervals by 500. ggtheme = theme_minimal(), # customize plot and risk table with a theme. risk.table.y.text.col = T, # colour risk table text annotations. risk.table.y.text = FALSE # show bars instead of names in text annotations # in legend of risk table ) ``` ```{r} ### Univariant Survival Neoadj UVSurvLocalized <- SurvivalLocalized %>% select(Age, Sex, Race.1, Era, Primary.Payer.at.DX, Marital.Status.at.DX, Vital.Status, MonthDate) %>% tbl_uvregression( method = coxph, y = Surv(MonthDate, Vital.Status), exponentiate = TRUE) %>% bold_p(t = 0.10) %>% bold_labels() %>% italicize_levels() ``` ```{r} ###Multivariant survival Neoadj MVSurvLocalized <- coxph(Surv(MonthDate, Vital.Status) ~ Age + Marital.Status.at.DX + Era, data = SurvivalLocalized) %>% tbl_regression(exponentiate = T ) %>% bold_p(t = 0.10) %>% bold_labels() %>% italicize_levels() ``` ```{r} ###Merged Neo Univariant and Multivariant tbl_merge( list(UVSurvLocalized, MVSurvLocalized), tab_spanner = c("Localized, **Univariable**", "**Multivariable**") ) %>% bold_labels() %>% italicize_levels() ``` ```{r} survfit(Surv(MonthDate, Vital.Status) ~ Era, data = SurvivalLocalized) survfit(Surv(MonthDate, Vital.Status) ~ Age, data = SurvivalLocalized) survfit(Surv(MonthDate, Vital.Status) ~ Sex, data = SurvivalLocalized) survfit(Surv(MonthDate, Vital.Status) ~ Race.1, data = SurvivalLocalized) survfit(Surv(MonthDate, Vital.Status) ~ Marital.Status.at.DX, data = SurvivalLocalized) survfit(Surv(MonthDate, Vital.Status) ~ Primary.Payer.at.DX, data = SurvivalLocalized) ``` ```{r} fit <- survfit(Surv(MonthDate, Vital.Status) ~ Era, data = SurvivalLocalized) ggsurvplot(fit, data = SurvivalLocalized, risk.table = TRUE) ggsurvplot( fit, # survfit object with calculated statistics. data = SurvivalLocalized, # data used to fit survival curves. risk.table = TRUE, # show risk table. pval = TRUE, # show p-value of log-rank test. conf.int = TRUE, # show confidence intervals for # point estimaes of survival curves. xlim = c(0,150), # present narrower X axis, but not affect # survival estimates. break.time.by = 25, # break X axis in time intervals by 500. ggtheme = theme_minimal(), # customize plot and risk table with a theme. risk.table.y.text.col = T, # colour risk table text annotations. risk.table.y.text = FALSE # show bars instead of names in text annotations # in legend of risk table ) ``` ```{r} ### Univariant Survival Neoadj UVSurvLocallyAdvanced <- SurvivalLocallyAdvanced %>% select(Age, Sex, Race.1, Era, Primary.Payer.at.DX, Marital.Status.at.DX, Vital.Status, MonthDate) %>% tbl_uvregression( method = coxph, y = Surv(MonthDate, Vital.Status), exponentiate = TRUE) %>% bold_p(t = 0.10) %>% bold_labels() %>% italicize_levels() ``` ```{r} ###Multivariant survival Neoadj MVSurvLocallyAdvanced <- coxph(Surv(MonthDate, Vital.Status) ~ Age + Marital.Status.at.DX + Era, data = SurvivalLocallyAdvanced) %>% tbl_regression(exponentiate = T ) %>% bold_p(t = 0.10) %>% bold_labels() %>% italicize_levels() ``` ```{r} ###Merged Neo Univariant and Multivariant tbl_merge( list(UVSurvLocallyAdvanced, MVSurvLocallyAdvanced), tab_spanner = c("Locally Advanced, **Univariable**", "**Multivariable**") ) %>% bold_labels() %>% italicize_levels() ``` ```{r} survfit(Surv(MonthDate, Vital.Status) ~ Era, data = SurvivalLocallyAdvanced) survfit(Surv(MonthDate, Vital.Status) ~ Age, data = SurvivalLocallyAdvanced) survfit(Surv(MonthDate, Vital.Status) ~ Sex, data = SurvivalLocallyAdvanced) survfit(Surv(MonthDate, Vital.Status) ~ Race.1, data = SurvivalLocallyAdvanced) survfit(Surv(MonthDate, Vital.Status) ~ Marital.Status.at.DX, data = SurvivalLocallyAdvanced) survfit(Surv(MonthDate, Vital.Status) ~ Primary.Payer.at.DX, data = SurvivalLocallyAdvanced) ``` ```{r} fit <- survfit(Surv(MonthDate, Vital.Status) ~ Era, data = SurvivalLocallyAdvanced) ggsurvplot(fit, data = SurvivalLocallyAdvanced, risk.table = TRUE) ggsurvplot( fit, # survfit object with calculated statistics. data = SurvivalLocallyAdvanced, # data used to fit survival curves. risk.table = TRUE, # show risk table. pval = TRUE, # show p-value of log-rank test. conf.int = TRUE, # show confidence intervals for # point estimaes of survival curves. xlim = c(0,150), # present narrower X axis, but not affect # survival estimates. break.time.by = 25, # break X axis in time intervals by 500. ggtheme = theme_minimal(), # customize plot and risk table with a theme. risk.table.y.text.col = T, # colour risk table text annotations. risk.table.y.text = FALSE # show bars instead of names in text annotations # in legend of risk table ) ``` ```{r} ### Univariant Survival Neoadj UVSurvEminentlyResectable <- SurvivalEminentlyResectable %>% select(Age, Sex, Race.1, Era, Primary.Payer.at.DX, Marital.Status.at.DX, Vital.Status, MonthDate) %>% tbl_uvregression( method = coxph, y = Surv(MonthDate, Vital.Status), exponentiate = TRUE) %>% bold_p(t = 0.10) %>% bold_labels() %>% italicize_levels() ``` ```{r} ###Multivariant survival Neoadj MVSurvEminentlyResectable <- coxph(Surv(MonthDate, Vital.Status) ~ Age + Marital.Status.at.DX + Era, data = SurvivalEminentlyResectable) %>% tbl_regression(exponentiate = T ) %>% bold_p(t = 0.10) %>% bold_labels() %>% italicize_levels() ``` ```{r} ###Merged Neo Univariant and Multivariant tbl_merge( list(UVSurvEminentlyResectable, MVSurvEminentlyResectable), tab_spanner = c("Eminently Resectable, **Univariable**", "**Multivariable**") ) %>% bold_labels() %>% italicize_levels() ``` ```{r} survfit(Surv(MonthDate, Vital.Status) ~ Era, data = SurvivalEminentlyResectable) survfit(Surv(MonthDate, Vital.Status) ~ Age, data = SurvivalEminentlyResectable) survfit(Surv(MonthDate, Vital.Status) ~ Sex, data = SurvivalEminentlyResectable) survfit(Surv(MonthDate, Vital.Status) ~ Race.1, data = SurvivalEminentlyResectable) survfit(Surv(MonthDate, Vital.Status) ~ Marital.Status.at.DX, data = SurvivalEminentlyResectable) survfit(Surv(MonthDate, Vital.Status) ~ Primary.Payer.at.DX, data = SurvivalEminentlyResectable) ``` ```{r} fit <- survfit(Surv(MonthDate, Vital.Status) ~ Era, data = SurvivalEminentlyResectable) ggsurvplot(fit, data = SurvivalEminentlyResectable, risk.table = TRUE) ggsurvplot( fit, # survfit object with calculated statistics. data = SurvivalEminentlyResectable, # data used to fit survival curves. risk.table = TRUE, # show risk table. pval = TRUE, # show p-value of log-rank test. conf.int = TRUE, # show confidence intervals for # point estimaes of survival curves. xlim = c(0,150), # present narrower X axis, but not affect # survival estimates. break.time.by = 25, # break X axis in time intervals by 500. ggtheme = theme_minimal(), # customize plot and risk table with a theme. risk.table.y.text.col = T, # colour risk table text annotations. risk.table.y.text = FALSE # show bars instead of names in text annotations # in legend of risk table ) ``` ```{r} ### Univariant Survival Neoadj UVSurvSurgery <- SurvivalSurgery %>% select(Age, Sex, Race.1, Era, AJCC.Clinical.Stage.Group, Primary.Payer.at.DX, Marital.Status.at.DX, Vital.Status, MonthDate) %>% tbl_uvregression( method = coxph, y = Surv(MonthDate, Vital.Status), exponentiate = TRUE) %>% bold_p(t = 0.10) %>% bold_labels() %>% italicize_levels() ``` ```{r} ###Multivariant survival Neoadj MVSurvSurgery <- coxph(Surv(MonthDate, Vital.Status) ~ Age + Sex + AJCC.Clinical.Stage.Group + Primary.Payer.at.DX + Era, data = SurvivalSurgery) %>% tbl_regression(exponentiate = T ) %>% bold_p(t = 0.10) %>% bold_labels() %>% italicize_levels() ``` ```{r} ###Merged Neo Univariant and Multivariant tbl_merge( list(UVSurvSurgery, MVSurvSurgery), tab_spanner = c("Surgery, **Univariable**", "**Multivariable**") ) %>% bold_labels() %>% italicize_levels() ``` ```{r} survfit(Surv(MonthDate, Vital.Status) ~ Era, data = SurvivalSurgery) survfit(Surv(MonthDate, Vital.Status) ~ Age, data = SurvivalSurgery) survfit(Surv(MonthDate, Vital.Status) ~ Sex, data = SurvivalSurgery) survfit(Surv(MonthDate, Vital.Status) ~ Race.1, data = SurvivalSurgery) survfit(Surv(MonthDate, Vital.Status) ~ Marital.Status.at.DX, data = SurvivalSurgery) survfit(Surv(MonthDate, Vital.Status) ~ Primary.Payer.at.DX, data = SurvivalSurgery) survfit(Surv(MonthDate, Vital.Status) ~ AJCC.Clinical.Stage.Group , data = SurvivalSurgery) ``` ```{r} fit <- survfit(Surv(MonthDate, Vital.Status) ~ Era, data = SurvivalSurgery) ggsurvplot(fit, data = SurvivalSurgery, risk.table = TRUE) ggsurvplot( fit, # survfit object with calculated statistics. data = SurvivalSurgery, # data used to fit survival curves. risk.table = TRUE, # show risk table. pval = TRUE, # show p-value of log-rank test. conf.int = TRUE, # show confidence intervals for # point estimaes of survival curves. xlim = c(0,200), # present narrower X axis, but not affect # survival estimates. break.time.by = 25, # break X axis in time intervals by 500. ggtheme = theme_minimal(), # customize plot and risk table with a theme. risk.table.y.text.col = T, # colour risk table text annotations. risk.table.y.text = FALSE # show bars instead of names in text annotations # in legend of risk table ) ```
Days 3-5 Amylase cutoff 3,000
FRS Score Demographic Table install.packages("datatable") library(dplyr) library(gtsummary) library(survival) library(labelled) library(tidyverse) library(broom) library(ggplot2) library(survminer) library(rms) library(VIM) library(pROC) library(rmarkdown) library(ROCR) Importin csv getwd() oddsratio <- read.csv ("Panfinal.csv", header = TRUE, sep = "," ) Final Code: library(IfElse) FRSOddsRatio1 <- FRSOddsRatio1 %>% select(Fistula.Grade, day ) str(FRSFUll$RACE_NEW) FRSFinal <- na.omit(FRSFUll) FRSOddsRatio1 %>% tbl_summary( by = Fistula.Grade, statistic = all_continuous() ~ "{mean} ({sd})", digits = all_continuous() ~ 2,) %>% add_p(pvalue_fun = ~style_pvalue(.x, digits = 2)) %>% bold_p() %>% add_overall() %>% add_n() %>% modify_header(label ~ "**Variable**") %>% modify_spanning_header(c("stat_1", "stat_2") ~ "**CR-POPF vs No CR-POPF**") %>% bold_labels() str(Sm_FRSFull) summary(FRSFUll$HXCOPD) print(FRSFUll$HXCOPD) FRSFUll$SMOKE <- as.factor(FRSFUll$SMOKE) as.numeric(FRSFUll$Age) FRSFUll$PAN_AMYLASE_POD1[FRSFUll$PAN_AMYLASE_POD1 == ">5,000"] <- "Yes" UnivariantModel <- FRSORDay %>% select(Fistula.Grade, Day) %>% tbl_uvregression( method = glm, y = Fistula.Grade, method.args = list(family = binomial), exponentiate = TRUE, pvalue_fun = ~style_pvalue(.x, digits = 2) ) %>% bold_p(t = 0.10) %>% bold_labels() %>% italicize_levels() MVOR <- glm(Fistula.Grade ~ day + AgeBetter + BMINew + NeoadjuvantXRT + Duct + Pathology + PAN_GLANDTEXT, data = FRSOddsRatio1, family = binomial("logit"), na.action =na.omit ) MVOR <- tbl_regression(MVOR, exponentiate = T, pvalue_fun = ~style_pvalue(.x, digits = 2), ) %>% bold_p(t = 0.10) %>% bold_labels() %>% italicize_levels() tbl_merge( list(UnivariantModel, MVOR), tab_spanner = c("**Univariable**", "**Multivariable**") ) %>% bold_labels() %>% italicize_levels() print(FRSFUll$PRNCPTX) ?filter str(FRSFUll) FRSOddsRatio1$Fistula.Grade <- as.numeric(FRSOddsRatio1$Fistula.Grade) sum(is.na(Oddsratio3$AmylaseDrainPod1)) FRSORDay$Day[FRSORDay$Day =="Other"] <- NA print(FRSOddsRatio1$Fistula.Grade) FRSFUll$PAN_AMYLASE_POD1[FRSFUll$PAN_AMYLASE_POD1 == ">5,000"] <- "Yes" FRSORDay1 <- mutate(FRSOddsRatio2, AmylaseCutoff300 = ifelse(FRSOddsRatio2$PAN_AMYLASE_POD230 %in% 300:200000, ">300", ifelse(FRSOddsRatio2$PAN_AMYLASE_POD230 %in% 0:300, "<300", ifelse(FRSOddsRatio2$PAN_AMYLASE_POD230 ==NA, "NA")))) FinalFRS <- mutate(FRSORDay1, AmylaseCutoff5000 = ifelse(FRSORDay1$PAN_AMYLASE_POD230 %in% 5000:200000, ">5,000", ifelse(FRSORDay1$PAN_AMYLASE_POD230 %in% 0:5000, "<5,000", ifelse(FRSORDay1$PAN_AMYLASE_POD230 ==NA, "NA")))) FinalFRS1 <- mutate(FinalFRS, FistulaPresent = ifelse(FinalFRS$Fistula.Present == "Yes", 1, ifelse(FinalFRS$Fistula.Present == "No", 0, NA))) ImputedData <- FinalFRS1 %>% select(FistulaPresent, Day, AmylaseCutoff300, AmylaseCutoff5000) ImputedData1 <- kNN(ImputedData) FinalDataImputed <- subset(ImputedData1, select = FistulaPresent:AmylaseCutoff5000) class(FinalDataImputed$Day) Day1 <- subset(FinalDataImputed, Day == "1") Day35 <- subset(FinalDataImputed, Day == "3-5") OneandFiveThousand <- glm(FistulaPresent~AmylaseCutoff5000, family = binomial(link = "logit"), data = Day1) FivePredictModel=predict(OneandFiveThousand) FivePredictModel1=prediction(FivePredictModel, Day1$FistulaPresent) plot(performance(FivePredictModel1,"tpr","fpr")) %>% abline(a=0,b=1) x=performance(FivePredictModel1,"acc") max=which.max(slot(x,"y.values")[[1]]) acc=slot(x,"y.values")[[1]][max] acc OneandThreeThousand <- glm(FistulaPresent~AmylaseCutoff300, family = binomial(link = "logit"), data = Day1) ThreePredictModel=predict(OneandThreeThousand) ThreePredictModel1=prediction(ThreePredictModel, Day1$FistulaPresent) plot(performance(ThreePredictModel1,"tpr","fpr")) %>% abline(a=0,b=1) x=performance(ThreePredictModel1,"acc") max=which.max(slot(x,"y.values")[[1]]) acc=slot(x,"y.values")[[1]][max] acc ThreeFiveAndFiveThousand <- glm(FistulaPresent~AmylaseCutoff5000, family = binomial(link = "logit"), data = Day35) ThreeandFiveandFivePredictModel=predict(ThreeFiveAndFiveThousand) ThreeandFiveandFivePredictModel1=prediction(ThreeandFiveandFivePredictModel, Day35$FistulaPresent) plot(performance(ThreeandFiveandFivePredictModel1,"tpr","fpr")) %>% abline(a=0,b=1) x=performance(ThreeandFiveandFivePredictModel1,"acc") max=which.max(slot(x,"y.values")[[1]]) acc=slot(x,"y.values")[[1]][max] acc ThreefiveandThreeThousand <- glm(FistulaPresent~AmylaseCutoff300, family = binomial(link = "logit"), data = Day35) ThreeFiveandThreePredictModel=predict(ThreefiveandThreeThousand) ThreeFiveandThreePredictModel1=prediction(ThreeFiveandThreePredictModel, Day35$FistulaPresent) plot(performance(ThreeFiveandThreePredictModel1,"tpr","fpr")) %>% abline(a=0,b=1) x=performance(ThreeFiveandThreePredictModel1,"acc") max=which.max(slot(x,"y.values")[[1]]) acc=slot(x,"y.values")[[1]][max] acc
Days 3-5 Amylase cutoff 5,000
FRS Score Demographic Table install.packages("datatable") library(dplyr) library(gtsummary) library(survival) library(labelled) library(tidyverse) library(broom) library(ggplot2) library(survminer) library(rms) library(VIM) library(pROC) library(rmarkdown) library(ROCR) Importin csv getwd() oddsratio <- read.csv ("Panfinal.csv", header = TRUE, sep = "," ) Final Code: library(IfElse) FRSOddsRatio1 <- FRSOddsRatio1 %>% select(Fistula.Grade, day ) str(FRSFUll$RACE_NEW) FRSFinal <- na.omit(FRSFUll) FRSOddsRatio1 %>% tbl_summary( by = Fistula.Grade, statistic = all_continuous() ~ "{mean} ({sd})", digits = all_continuous() ~ 2,) %>% add_p(pvalue_fun = ~style_pvalue(.x, digits = 2)) %>% bold_p() %>% add_overall() %>% add_n() %>% modify_header(label ~ "**Variable**") %>% modify_spanning_header(c("stat_1", "stat_2") ~ "**CR-POPF vs No CR-POPF**") %>% bold_labels() str(Sm_FRSFull) summary(FRSFUll$HXCOPD) print(FRSFUll$HXCOPD) FRSFUll$SMOKE <- as.factor(FRSFUll$SMOKE) as.numeric(FRSFUll$Age) FRSFUll$PAN_AMYLASE_POD1[FRSFUll$PAN_AMYLASE_POD1 == ">5,000"] <- "Yes" UnivariantModel <- FRSORDay %>% select(Fistula.Grade, Day) %>% tbl_uvregression( method = glm, y = Fistula.Grade, method.args = list(family = binomial), exponentiate = TRUE, pvalue_fun = ~style_pvalue(.x, digits = 2) ) %>% bold_p(t = 0.10) %>% bold_labels() %>% italicize_levels() MVOR <- glm(Fistula.Grade ~ day + AgeBetter + BMINew + NeoadjuvantXRT + Duct + Pathology + PAN_GLANDTEXT, data = FRSOddsRatio1, family = binomial("logit"), na.action =na.omit ) MVOR <- tbl_regression(MVOR, exponentiate = T, pvalue_fun = ~style_pvalue(.x, digits = 2), ) %>% bold_p(t = 0.10) %>% bold_labels() %>% italicize_levels() tbl_merge( list(UnivariantModel, MVOR), tab_spanner = c("**Univariable**", "**Multivariable**") ) %>% bold_labels() %>% italicize_levels() print(FRSFUll$PRNCPTX) ?filter str(FRSFUll) FRSOddsRatio1$Fistula.Grade <- as.numeric(FRSOddsRatio1$Fistula.Grade) sum(is.na(Oddsratio3$AmylaseDrainPod1)) FRSORDay$Day[FRSORDay$Day =="Other"] <- NA print(FRSOddsRatio1$Fistula.Grade) FRSFUll$PAN_AMYLASE_POD1[FRSFUll$PAN_AMYLASE_POD1 == ">5,000"] <- "Yes" FRSORDay1 <- mutate(FRSOddsRatio2, AmylaseCutoff300 = ifelse(FRSOddsRatio2$PAN_AMYLASE_POD230 %in% 300:200000, ">300", ifelse(FRSOddsRatio2$PAN_AMYLASE_POD230 %in% 0:300, "<300", ifelse(FRSOddsRatio2$PAN_AMYLASE_POD230 ==NA, "NA")))) FinalFRS <- mutate(FRSORDay1, AmylaseCutoff5000 = ifelse(FRSORDay1$PAN_AMYLASE_POD230 %in% 5000:200000, ">5,000", ifelse(FRSORDay1$PAN_AMYLASE_POD230 %in% 0:5000, "<5,000", ifelse(FRSORDay1$PAN_AMYLASE_POD230 ==NA, "NA")))) FinalFRS1 <- mutate(FinalFRS, FistulaPresent = ifelse(FinalFRS$Fistula.Present == "Yes", 1, ifelse(FinalFRS$Fistula.Present == "No", 0, NA))) ImputedData <- FinalFRS1 %>% select(FistulaPresent, Day, AmylaseCutoff300, AmylaseCutoff5000) ImputedData1 <- kNN(ImputedData) FinalDataImputed <- subset(ImputedData1, select = FistulaPresent:AmylaseCutoff5000) class(FinalDataImputed$Day) Day1 <- subset(FinalDataImputed, Day == "1") Day35 <- subset(FinalDataImputed, Day == "3-5") OneandFiveThousand <- glm(FistulaPresent~AmylaseCutoff5000, family = binomial(link = "logit"), data = Day1) FivePredictModel=predict(OneandFiveThousand) FivePredictModel1=prediction(FivePredictModel, Day1$FistulaPresent) plot(performance(FivePredictModel1,"tpr","fpr")) %>% abline(a=0,b=1) x=performance(FivePredictModel1,"acc") max=which.max(slot(x,"y.values")[[1]]) acc=slot(x,"y.values")[[1]][max] acc OneandThreeThousand <- glm(FistulaPresent~AmylaseCutoff300, family = binomial(link = "logit"), data = Day1) ThreePredictModel=predict(OneandThreeThousand) ThreePredictModel1=prediction(ThreePredictModel, Day1$FistulaPresent) plot(performance(ThreePredictModel1,"tpr","fpr")) %>% abline(a=0,b=1) x=performance(ThreePredictModel1,"acc") max=which.max(slot(x,"y.values")[[1]]) acc=slot(x,"y.values")[[1]][max] acc ThreeFiveAndFiveThousand <- glm(FistulaPresent~AmylaseCutoff5000, family = binomial(link = "logit"), data = Day35) ThreeandFiveandFivePredictModel=predict(ThreeFiveAndFiveThousand) ThreeandFiveandFivePredictModel1=prediction(ThreeandFiveandFivePredictModel, Day35$FistulaPresent) plot(performance(ThreeandFiveandFivePredictModel1,"tpr","fpr")) %>% abline(a=0,b=1) x=performance(ThreeandFiveandFivePredictModel1,"acc") max=which.max(slot(x,"y.values")[[1]]) acc=slot(x,"y.values")[[1]][max] acc ThreefiveandThreeThousand <- glm(FistulaPresent~AmylaseCutoff300, family = binomial(link = "logit"), data = Day35) ThreeFiveandThreePredictModel=predict(ThreefiveandThreeThousand) ThreeFiveandThreePredictModel1=prediction(ThreeFiveandThreePredictModel, Day35$FistulaPresent) plot(performance(ThreeFiveandThreePredictModel1,"tpr","fpr")) %>% abline(a=0,b=1) x=performance(ThreeFiveandThreePredictModel1,"acc") max=which.max(slot(x,"y.values")[[1]]) acc=slot(x,"y.values")[[1]][max] acc
Day 1 Amylase cutoff 3,000
FRS Score Demographic Table install.packages("datatable") library(dplyr) library(gtsummary) library(survival) library(labelled) library(tidyverse) library(broom) library(ggplot2) library(survminer) library(rms) library(VIM) library(pROC) library(rmarkdown) library(ROCR) Importin csv getwd() oddsratio <- read.csv ("Panfinal.csv", header = TRUE, sep = "," ) Final Code: library(IfElse) FRSOddsRatio1 <- FRSOddsRatio1 %>% select(Fistula.Grade, day ) str(FRSFUll$RACE_NEW) FRSFinal <- na.omit(FRSFUll) FRSOddsRatio1 %>% tbl_summary( by = Fistula.Grade, statistic = all_continuous() ~ "{mean} ({sd})", digits = all_continuous() ~ 2,) %>% add_p(pvalue_fun = ~style_pvalue(.x, digits = 2)) %>% bold_p() %>% add_overall() %>% add_n() %>% modify_header(label ~ "**Variable**") %>% modify_spanning_header(c("stat_1", "stat_2") ~ "**CR-POPF vs No CR-POPF**") %>% bold_labels() str(Sm_FRSFull) summary(FRSFUll$HXCOPD) print(FRSFUll$HXCOPD) FRSFUll$SMOKE <- as.factor(FRSFUll$SMOKE) as.numeric(FRSFUll$Age) FRSFUll$PAN_AMYLASE_POD1[FRSFUll$PAN_AMYLASE_POD1 == ">5,000"] <- "Yes" UnivariantModel <- FRSORDay %>% select(Fistula.Grade, Day) %>% tbl_uvregression( method = glm, y = Fistula.Grade, method.args = list(family = binomial), exponentiate = TRUE, pvalue_fun = ~style_pvalue(.x, digits = 2) ) %>% bold_p(t = 0.10) %>% bold_labels() %>% italicize_levels() MVOR <- glm(Fistula.Grade ~ day + AgeBetter + BMINew + NeoadjuvantXRT + Duct + Pathology + PAN_GLANDTEXT, data = FRSOddsRatio1, family = binomial("logit"), na.action =na.omit ) MVOR <- tbl_regression(MVOR, exponentiate = T, pvalue_fun = ~style_pvalue(.x, digits = 2), ) %>% bold_p(t = 0.10) %>% bold_labels() %>% italicize_levels() tbl_merge( list(UnivariantModel, MVOR), tab_spanner = c("**Univariable**", "**Multivariable**") ) %>% bold_labels() %>% italicize_levels() print(FRSFUll$PRNCPTX) ?filter str(FRSFUll) FRSOddsRatio1$Fistula.Grade <- as.numeric(FRSOddsRatio1$Fistula.Grade) sum(is.na(Oddsratio3$AmylaseDrainPod1)) FRSORDay$Day[FRSORDay$Day =="Other"] <- NA print(FRSOddsRatio1$Fistula.Grade) FRSFUll$PAN_AMYLASE_POD1[FRSFUll$PAN_AMYLASE_POD1 == ">5,000"] <- "Yes" FRSORDay1 <- mutate(FRSOddsRatio2, AmylaseCutoff300 = ifelse(FRSOddsRatio2$PAN_AMYLASE_POD230 %in% 300:200000, ">300", ifelse(FRSOddsRatio2$PAN_AMYLASE_POD230 %in% 0:300, "<300", ifelse(FRSOddsRatio2$PAN_AMYLASE_POD230 ==NA, "NA")))) FinalFRS <- mutate(FRSORDay1, AmylaseCutoff5000 = ifelse(FRSORDay1$PAN_AMYLASE_POD230 %in% 5000:200000, ">5,000", ifelse(FRSORDay1$PAN_AMYLASE_POD230 %in% 0:5000, "<5,000", ifelse(FRSORDay1$PAN_AMYLASE_POD230 ==NA, "NA")))) FinalFRS1 <- mutate(FinalFRS, FistulaPresent = ifelse(FinalFRS$Fistula.Present == "Yes", 1, ifelse(FinalFRS$Fistula.Present == "No", 0, NA))) ImputedData <- FinalFRS1 %>% select(FistulaPresent, Day, AmylaseCutoff300, AmylaseCutoff5000) ImputedData1 <- kNN(ImputedData) FinalDataImputed <- subset(ImputedData1, select = FistulaPresent:AmylaseCutoff5000) class(FinalDataImputed$Day) Day1 <- subset(FinalDataImputed, Day == "1") Day35 <- subset(FinalDataImputed, Day == "3-5") OneandFiveThousand <- glm(FistulaPresent~AmylaseCutoff5000, family = binomial(link = "logit"), data = Day1) FivePredictModel=predict(OneandFiveThousand) FivePredictModel1=prediction(FivePredictModel, Day1$FistulaPresent) plot(performance(FivePredictModel1,"tpr","fpr")) %>% abline(a=0,b=1) x=performance(FivePredictModel1,"acc") max=which.max(slot(x,"y.values")[[1]]) acc=slot(x,"y.values")[[1]][max] acc OneandThreeThousand <- glm(FistulaPresent~AmylaseCutoff300, family = binomial(link = "logit"), data = Day1) ThreePredictModel=predict(OneandThreeThousand) ThreePredictModel1=prediction(ThreePredictModel, Day1$FistulaPresent) plot(performance(ThreePredictModel1,"tpr","fpr")) %>% abline(a=0,b=1) x=performance(ThreePredictModel1,"acc") max=which.max(slot(x,"y.values")[[1]]) acc=slot(x,"y.values")[[1]][max] acc ThreeFiveAndFiveThousand <- glm(FistulaPresent~AmylaseCutoff5000, family = binomial(link = "logit"), data = Day35) ThreeandFiveandFivePredictModel=predict(ThreeFiveAndFiveThousand) ThreeandFiveandFivePredictModel1=prediction(ThreeandFiveandFivePredictModel, Day35$FistulaPresent) plot(performance(ThreeandFiveandFivePredictModel1,"tpr","fpr")) %>% abline(a=0,b=1) x=performance(ThreeandFiveandFivePredictModel1,"acc") max=which.max(slot(x,"y.values")[[1]]) acc=slot(x,"y.values")[[1]][max] acc ThreefiveandThreeThousand <- glm(FistulaPresent~AmylaseCutoff300, family = binomial(link = "logit"), data = Day35) ThreeFiveandThreePredictModel=predict(ThreefiveandThreeThousand) ThreeFiveandThreePredictModel1=prediction(ThreeFiveandThreePredictModel, Day35$FistulaPresent) plot(performance(ThreeFiveandThreePredictModel1,"tpr","fpr")) %>% abline(a=0,b=1) x=performance(ThreeFiveandThreePredictModel1,"acc") max=which.max(slot(x,"y.values")[[1]]) acc=slot(x,"y.values")[[1]][max] acc
Day 1 Amylase cutoff 5,000
FRS Score Demographic Table install.packages("datatable") library(dplyr) library(gtsummary) library(survival) library(labelled) library(tidyverse) library(broom) library(ggplot2) library(survminer) library(rms) library(VIM) library(pROC) library(rmarkdown) library(ROCR) Importin csv getwd() oddsratio <- read.csv ("Panfinal.csv", header = TRUE, sep = "," ) Final Code: library(IfElse) FRSOddsRatio1 <- FRSOddsRatio1 %>% select(Fistula.Grade, day ) str(FRSFUll$RACE_NEW) FRSFinal <- na.omit(FRSFUll) FRSOddsRatio1 %>% tbl_summary( by = Fistula.Grade, statistic = all_continuous() ~ "{mean} ({sd})", digits = all_continuous() ~ 2,) %>% add_p(pvalue_fun = ~style_pvalue(.x, digits = 2)) %>% bold_p() %>% add_overall() %>% add_n() %>% modify_header(label ~ "**Variable**") %>% modify_spanning_header(c("stat_1", "stat_2") ~ "**CR-POPF vs No CR-POPF**") %>% bold_labels() str(Sm_FRSFull) summary(FRSFUll$HXCOPD) print(FRSFUll$HXCOPD) FRSFUll$SMOKE <- as.factor(FRSFUll$SMOKE) as.numeric(FRSFUll$Age) FRSFUll$PAN_AMYLASE_POD1[FRSFUll$PAN_AMYLASE_POD1 == ">5,000"] <- "Yes" UnivariantModel <- FRSORDay %>% select(Fistula.Grade, Day) %>% tbl_uvregression( method = glm, y = Fistula.Grade, method.args = list(family = binomial), exponentiate = TRUE, pvalue_fun = ~style_pvalue(.x, digits = 2) ) %>% bold_p(t = 0.10) %>% bold_labels() %>% italicize_levels() MVOR <- glm(Fistula.Grade ~ day + AgeBetter + BMINew + NeoadjuvantXRT + Duct + Pathology + PAN_GLANDTEXT, data = FRSOddsRatio1, family = binomial("logit"), na.action =na.omit ) MVOR <- tbl_regression(MVOR, exponentiate = T, pvalue_fun = ~style_pvalue(.x, digits = 2), ) %>% bold_p(t = 0.10) %>% bold_labels() %>% italicize_levels() tbl_merge( list(UnivariantModel, MVOR), tab_spanner = c("**Univariable**", "**Multivariable**") ) %>% bold_labels() %>% italicize_levels() print(FRSFUll$PRNCPTX) ?filter str(FRSFUll) FRSOddsRatio1$Fistula.Grade <- as.numeric(FRSOddsRatio1$Fistula.Grade) sum(is.na(Oddsratio3$AmylaseDrainPod1)) FRSORDay$Day[FRSORDay$Day =="Other"] <- NA print(FRSOddsRatio1$Fistula.Grade) FRSFUll$PAN_AMYLASE_POD1[FRSFUll$PAN_AMYLASE_POD1 == ">5,000"] <- "Yes" FRSORDay1 <- mutate(FRSOddsRatio2, AmylaseCutoff300 = ifelse(FRSOddsRatio2$PAN_AMYLASE_POD230 %in% 300:200000, ">300", ifelse(FRSOddsRatio2$PAN_AMYLASE_POD230 %in% 0:300, "<300", ifelse(FRSOddsRatio2$PAN_AMYLASE_POD230 ==NA, "NA")))) FinalFRS <- mutate(FRSORDay1, AmylaseCutoff5000 = ifelse(FRSORDay1$PAN_AMYLASE_POD230 %in% 5000:200000, ">5,000", ifelse(FRSORDay1$PAN_AMYLASE_POD230 %in% 0:5000, "<5,000", ifelse(FRSORDay1$PAN_AMYLASE_POD230 ==NA, "NA")))) FinalFRS1 <- mutate(FinalFRS, FistulaPresent = ifelse(FinalFRS$Fistula.Present == "Yes", 1, ifelse(FinalFRS$Fistula.Present == "No", 0, NA))) ImputedData <- FinalFRS1 %>% select(FistulaPresent, Day, AmylaseCutoff300, AmylaseCutoff5000) ImputedData1 <- kNN(ImputedData) FinalDataImputed <- subset(ImputedData1, select = FistulaPresent:AmylaseCutoff5000) class(FinalDataImputed$Day) Day1 <- subset(FinalDataImputed, Day == "1") Day35 <- subset(FinalDataImputed, Day == "3-5") OneandFiveThousand <- glm(FistulaPresent~AmylaseCutoff5000, family = binomial(link = "logit"), data = Day1) FivePredictModel=predict(OneandFiveThousand) FivePredictModel1=prediction(FivePredictModel, Day1$FistulaPresent) plot(performance(FivePredictModel1,"tpr","fpr")) %>% abline(a=0,b=1) x=performance(FivePredictModel1,"acc") max=which.max(slot(x,"y.values")[[1]]) acc=slot(x,"y.values")[[1]][max] acc OneandThreeThousand <- glm(FistulaPresent~AmylaseCutoff300, family = binomial(link = "logit"), data = Day1) ThreePredictModel=predict(OneandThreeThousand) ThreePredictModel1=prediction(ThreePredictModel, Day1$FistulaPresent) plot(performance(ThreePredictModel1,"tpr","fpr")) %>% abline(a=0,b=1) x=performance(ThreePredictModel1,"acc") max=which.max(slot(x,"y.values")[[1]]) acc=slot(x,"y.values")[[1]][max] acc ThreeFiveAndFiveThousand <- glm(FistulaPresent~AmylaseCutoff5000, family = binomial(link = "logit"), data = Day35) ThreeandFiveandFivePredictModel=predict(ThreeFiveAndFiveThousand) ThreeandFiveandFivePredictModel1=prediction(ThreeandFiveandFivePredictModel, Day35$FistulaPresent) plot(performance(ThreeandFiveandFivePredictModel1,"tpr","fpr")) %>% abline(a=0,b=1) x=performance(ThreeandFiveandFivePredictModel1,"acc") max=which.max(slot(x,"y.values")[[1]]) acc=slot(x,"y.values")[[1]][max] acc ThreefiveandThreeThousand <- glm(FistulaPresent~AmylaseCutoff300, family = binomial(link = "logit"), data = Day35) ThreeFiveandThreePredictModel=predict(ThreefiveandThreeThousand) ThreeFiveandThreePredictModel1=prediction(ThreeFiveandThreePredictModel, Day35$FistulaPresent) plot(performance(ThreeFiveandThreePredictModel1,"tpr","fpr")) %>% abline(a=0,b=1) x=performance(ThreeFiveandThreePredictModel1,"acc") max=which.max(slot(x,"y.values")[[1]]) acc=slot(x,"y.values")[[1]][max] acc
Textbook Outcomes in Pancreatic & Hepatic Cancer
--- title: "Textbook Outcomes in Pancreatic Cancer" author: "Abdimajid Mohamed" date: "2/24/2021" output: html_document --- ```{r} # Important packages to load in library(dplyr) library(gtsummary) library(survival) library(labelled) library(tidyverse) library(broom) library(ggplot2) library(survminer) library(VIM) ``` ```{r} load("TextbookOutcomes.RData") ``` ```{r} TextbookOutcomes <- TextbookOutcomes %>% mutate(TextbookOutcomes, Age = ifelse(Age >= 85, "85+", ifelse(Age >= 75, "75-84", ifelse(Age >= 65, "65-74", ifelse(Age >=0, "0-65", NA))))) ``` ```{r} ### Recoding mortality TextbookOutcomes$DOpertoD[TextbookOutcomes$DOpertoD == -99] <- "No" TextbookOutcomes$DOpertoD[TextbookOutcomes$DOpertoD == 0] <- "Yes" TextbookOutcomes$DOpertoD[TextbookOutcomes$DOpertoD == 1] <- "Yes" TextbookOutcomes$DOpertoD[TextbookOutcomes$DOpertoD == 2] <- "Yes" TextbookOutcomes$DOpertoD[TextbookOutcomes$DOpertoD == 3] <- "Yes" TextbookOutcomes$DOpertoD[TextbookOutcomes$DOpertoD == 4] <- "Yes" TextbookOutcomes$DOpertoD[TextbookOutcomes$DOpertoD == 5] <- "Yes" TextbookOutcomes$DOpertoD[TextbookOutcomes$DOpertoD == 6] <- "Yes" TextbookOutcomes$DOpertoD[TextbookOutcomes$DOpertoD == 7] <- "Yes" TextbookOutcomes$DOpertoD[TextbookOutcomes$DOpertoD == 8] <- "Yes" TextbookOutcomes$DOpertoD[TextbookOutcomes$DOpertoD == 9] <- "Yes" TextbookOutcomes$DOpertoD[TextbookOutcomes$DOpertoD == 10] <- "Yes" TextbookOutcomes$DOpertoD[TextbookOutcomes$DOpertoD == 11] <- "Yes" TextbookOutcomes$DOpertoD[TextbookOutcomes$DOpertoD == 12] <- "Yes" TextbookOutcomes$DOpertoD[TextbookOutcomes$DOpertoD == 13] <- "Yes" TextbookOutcomes$DOpertoD[TextbookOutcomes$DOpertoD == 14] <- "Yes" TextbookOutcomes$DOpertoD[TextbookOutcomes$DOpertoD == 15] <- "Yes" TextbookOutcomes$DOpertoD[TextbookOutcomes$DOpertoD == 16] <- "Yes" TextbookOutcomes$DOpertoD[TextbookOutcomes$DOpertoD == 17] <- "Yes" TextbookOutcomes$DOpertoD[TextbookOutcomes$DOpertoD == 18] <- "Yes" TextbookOutcomes$DOpertoD[TextbookOutcomes$DOpertoD == 19] <- "Yes" TextbookOutcomes$DOpertoD[TextbookOutcomes$DOpertoD == 20] <- "Yes" TextbookOutcomes$DOpertoD[TextbookOutcomes$DOpertoD == 21] <- "Yes" TextbookOutcomes$DOpertoD[TextbookOutcomes$DOpertoD == 22] <- "Yes" TextbookOutcomes$DOpertoD[TextbookOutcomes$DOpertoD == 23] <- "Yes" TextbookOutcomes$DOpertoD[TextbookOutcomes$DOpertoD == 24] <- "Yes" TextbookOutcomes$DOpertoD[TextbookOutcomes$DOpertoD == 25] <- "Yes" TextbookOutcomes$DOpertoD[TextbookOutcomes$DOpertoD == 26] <- "Yes" TextbookOutcomes$DOpertoD[TextbookOutcomes$DOpertoD == 27] <- "Yes" TextbookOutcomes$DOpertoD[TextbookOutcomes$DOpertoD == 28] <- "Yes" TextbookOutcomes$DOpertoD[TextbookOutcomes$DOpertoD == 29] <- "Yes" TextbookOutcomes$DOpertoD[TextbookOutcomes$DOpertoD == 30] <- "Yes" ``` ```{r} TextbookOutcomes$PRNCPTX[TextbookOutcomes$PRNCPTX == "EXCISION AMPULLA VATER"] <- NA TextbookOutcomes$PRNCPTX[TextbookOutcomes$PRNCPTX == "EXCISION LESION PANCREAS"] <- NA TextbookOutcomes$PRNCPTX[TextbookOutcomes$PRNCPTX == "UNLISTED PROCEDURE PANCREAS"] <- NA TextbookOutcomes$PRNCPTX[TextbookOutcomes$PRNCPTX == "PNCRTECT WHIPPLE W/O PANCREATOJEJUNOSTOMY"] <- "Whipple" TextbookOutcomes$PRNCPTX[TextbookOutcomes$PRNCPTX == "PNCRTECT W/PANCREATOJEJUNOSTOMY"] <- "Whipple" TextbookOutcomes$PRNCPTX[TextbookOutcomes$PRNCPTX == "PNCRTECT DSTL STOT W/PNCRTCOJEJUNOSTOMY"] <- "Distal Pancreatectomy" TextbookOutcomes$PRNCPTX[TextbookOutcomes$PRNCPTX == "PNCRTECT DSTL STOT W/O PNCRTCOJEJUNOSTOMY"] <- "Distal Pancreatectomy" TextbookOutcomes$PRNCPTX[TextbookOutcomes$PRNCPTX == "PNCRTECT PROX STOT W/PANCREATOJEJUNOSTOMY"] <- "Whipple" TextbookOutcomes$PRNCPTX[TextbookOutcomes$PRNCPTX == "PNCRTECT PROX STOT W/O PANCREATOJEJUNOSTOMY"] <- "Whipple" TextbookOutcomes$PRNCPTX[TextbookOutcomes$PRNCPTX == "PANCREATECTOMY TOTAL"] <- "Total Pancreatectomy" TextbookOutcomes$PRNCPTX[TextbookOutcomes$PRNCPTX == "PNCRTECT DSTL NR-TOT W/PRSRV DUO CHLD-TYP PX"] <- "Total Pancreatectomy" TextbookOutcomes$PRNCPTX[TextbookOutcomes$PRNCPTX == "HEPATECTOMY RESCJ PARTIAL LOBECTOMY"] <- "Partial Lobectomy" TextbookOutcomes$PRNCPTX[TextbookOutcomes$PRNCPTX == "HEPATECTOMY RESCJ TOTAL LEFT LOBECTOMY"] <- "Lobectomy" TextbookOutcomes$PRNCPTX[TextbookOutcomes$PRNCPTX == "HEPATECTOMY RESCJ TOTAL RIGHT LOBECTOMY"] <- "Lobectomy" TextbookOutcomes$PRNCPTX[TextbookOutcomes$PRNCPTX == "HEPATECTOMY RESCJ TRISEGMENTECTOMY"] <- "Trisegmentectomy" table(TextbookOutcomes$PRNCPTX) ``` ```{r} TextbookOutcomes <- TextbookOutcomes %>% mutate(TextbookOutcomes, PatientGroup = ifelse(PRNCPTX == "Partial Lobectomy", "Liver", ifelse(PRNCPTX == "Lobectomy", "Liver", ifelse(PRNCPTX == "Trisegmentectomy", "Liver", ifelse(PRNCPTX == "Whipple", "Pancreas", ifelse(PRNCPTX == "Distal Pancreatectomy", "Pancreas", ifelse(PRNCPTX == "Total Pancreatectomy", "Pancreas", NA))))))) ``` ```{r} ### Recoding readmission TextbookOutcomes$READMISSION1[TextbookOutcomes$READMISSION1 == "NULL"] <- NA TextbookOutcomes$READMISSION1[TextbookOutcomes$READMISSION1 == "NULL"] <- NA table(TextbookOutcomes$READMISSION1) ``` ```{r} ## recoding -99 to NA's for length of stay. LOS considered >75th% other papers state median LOS for pancreatic cancer 7 days TextbookOutcomes$DOptoDis[TextbookOutcomes$DOptoDis == -99] <- NA table(TextbookOutcomes$PRNCPTX) ``` ```{r} TextbookOutcomes$RACE_NEW[TextbookOutcomes$RACE_NEW == "American Indian or Alaska Native"] <- "Other" TextbookOutcomes$RACE_NEW[TextbookOutcomes$RACE_NEW == "Asian"] <- "Other" TextbookOutcomes$RACE_NEW[TextbookOutcomes$RACE_NEW == "Native Hawaiian or Pacific Islander"] <- "Other" TextbookOutcomes$RACE_NEW[TextbookOutcomes$RACE_NEW == "Black or African American"] <- "Black" TextbookOutcomes$RACE_NEW[TextbookOutcomes$RACE_NEW == "Unknown/Not Reported"] <- NA ``` ```{r} TextbookOutcomes$WEIGHT[TextbookOutcomes$WEIGHT ==-99] <- NA TextbookOutcomes$HEIGHT[TextbookOutcomes$HEIGHT ==-99] <- NA ``` ```{r} TextbookOutcomes$BMI <- (TextbookOutcomes$WEIGHT / TextbookOutcomes$HEIGHT / TextbookOutcomes$HEIGHT) *703 ``` ```{r} TextbookOutcomes <- TextbookOutcomes %>% mutate(TextbookOutcomes, BMILabled = ifelse(BMI >= 40, "Morbidly Obese", ifelse(BMI >= 30, "Obese", ifelse(BMI >= 25, "Overweight", ifelse(BMI >=18.5, "Normal Weight", ifelse(BMI <= 18.49, "Underweight", NA)))))) ``` ```{r} TextbookOutcomes$ASACLAS[TextbookOutcomes$ASACLAS == "5-Moribund"] <- NA TextbookOutcomes$ASACLAS[TextbookOutcomes$ASACLAS == "None assigned"] <- NA ``` ```{r} ### Create MFI column TextbookOutcomes$DIABETES[TextbookOutcomes$DIABETES == "INSULIN"] <- "Yes" TextbookOutcomes$DIABETES[TextbookOutcomes$DIABETES == "NON-INSULIN"] <- "Yes" ``` ```{r} ###Create new numeric column that will be used to create the MFI5 column 0, >1, and greater than >2 ##Diabeties recoded for MFI TextbookOutcomes <- TextbookOutcomes %>% mutate(TextbookOutcomes, Diabetes1 = ifelse(DIABETES == "INSULIN", "Yes", ifelse(DIABETES == "NON-INSULIN", "Yes", ifelse(DIABETES == "NO", "No", "NA")))) ``` ###Create new numeric column that will be used to create the MFI5 column 0, >1, and greater than >2 ###CHF recoded for MFI TextbookOutcomes <- TextbookOutcomes %>% mutate(TextbookOutcomes, CHFMFI = ifelse(HXCHF == "Yes", "1", ifelse(HXCHF == "No", "0", "NA"))) ###Create new numeric column that will be used to create the MFI5 column 0, >1, and greater than >2 ### COPD recoded for MFI TextbookOutcomes <- TextbookOutcomes %>% mutate(TextbookOutcomes, COPDMFI = ifelse(HXCOPD == "Yes", "1", ifelse(HXCOPD == "No", "0", "NA"))) ###Create new numeric column that will be used to create the MFI5 column 0, >1, and greater than >2 ### Hypertension with medications recoded for MFI TextbookOutcomes <- TextbookOutcomes %>% mutate(TextbookOutcomes, HYPERMEDMFI = ifelse(HYPERMED == "Yes", "1", ifelse(HYPERMED == "No", "0", "NA"))) ```{r} ##recode fnstatus2 TextbookOutcomes$FNSTATUS2[TextbookOutcomes$FNSTATUS2 == "Unknown"] <- NA ``` TextbookOutcomes <- TextbookOutcomes %>% mutate(TextbookOutcomes, FuncStatus = ifelse(FNSTATUS2 == "Yes", "1", ifelse(FNSTATUS2 == "No", "0", NA))) ##making the columns numeric to add them properly TextbookOutcomes$HYPERMEDMFI <- as.numeric(TextbookOutcomes$HYPERMEDMFI) TextbookOutcomes$COPDMFI <- as.numeric(TextbookOutcomes$COPDMFI) TextbookOutcomes$CHFMFI <- as.numeric(TextbookOutcomes$CHFMFI) TextbookOutcomes$DiabetesMFI <- as.numeric(TextbookOutcomes$DiabetesMFI) TextbookOutcomes$FuncStatus <- as.numeric(TextbookOutcomes$FuncStatus) ###Creating MFI column TextbookOutcomes$MFI5 <- (TextbookOutcomes$HYPERMEDMFI + TextbookOutcomes$COPDMFI + TextbookOutcomes$CHFMFI + TextbookOutcomes$DiabetesMFI + TextbookOutcomes$FuncStatus ) ```{r} ##recoding Hep and Pan targeted Complications to yes or no (will need to add in targeted complications Pan: Fistula, Delayed Gastric Emptying and what about percdrain? | Hep: Bile leakage, hepliverfail) TextbookOutcomes$PAN_FISTULA[TextbookOutcomes$PAN_FISTULA =="Biochemical Leak only"] <- "No" TextbookOutcomes$PAN_FISTULA[TextbookOutcomes$PAN_FISTULA =="No evidence of Biochemical Leak or POPF"] <- "No" TextbookOutcomes$PAN_FISTULA[TextbookOutcomes$PAN_FISTULA =="Yes-persistent drainage, drain continued >7 days"] <- "Yes" TextbookOutcomes$PAN_FISTULA[TextbookOutcomes$PAN_FISTULA =="Yes-clinical diagnosis, percutaneous drainage performed"] <- "Yes" TextbookOutcomes$PAN_FISTULA[TextbookOutcomes$PAN_FISTULA =="Yes-persistent drainage, percutaneous drainage performed"] <- "Yes" TextbookOutcomes$PAN_FISTULA[TextbookOutcomes$PAN_FISTULA =="Yes-persistent drainage, NPO-TPN"] <- "Yes" TextbookOutcomes$PAN_FISTULA[TextbookOutcomes$PAN_FISTULA =="Yes-clinical diagnosis, drain continued >7 days"] <- "Yes" TextbookOutcomes$PAN_FISTULA[TextbookOutcomes$PAN_FISTULA =="Yes, Grade B POPF present"] <- "Yes" TextbookOutcomes$PAN_FISTULA[TextbookOutcomes$PAN_FISTULA =="Yes-clinical diagnosis, spontaneous wound drainage"] <- "Yes" TextbookOutcomes$PAN_FISTULA[TextbookOutcomes$PAN_FISTULA =="Yes-clinical diagnosis, NPO-TPN"] <- "Yes" TextbookOutcomes$PAN_FISTULA[TextbookOutcomes$PAN_FISTULA =="Yes-clinical diagnosis, reoperation performed"] <- "Yes" TextbookOutcomes$PAN_FISTULA[TextbookOutcomes$PAN_FISTULA =="Yes, Grade C POPF present"] <- "Yes" TextbookOutcomes$PAN_FISTULA[TextbookOutcomes$PAN_FISTULA =="Yes-persistent drainage, reoperation performed"] <- "Yes" TextbookOutcomes$PAN_FISTULA[TextbookOutcomes$PAN_FISTULA =="Unknown"] <- NA ####Delayed Gastric Emptying Recode to yes or no TextbookOutcomes$PAN_DELGASTRIC_20140315[TextbookOutcomes$PAN_DELGASTRIC_20140315 =="Yes-no oral intake by POD 14"] <- "Yes" TextbookOutcomes$PAN_DELGASTRIC_20140315[TextbookOutcomes$PAN_DELGASTRIC_20140315 =="Yes-tube to external drainage/NG tube present/reinserted"] <- "Yes" TextbookOutcomes$PAN_DELGASTRIC_20140315[TextbookOutcomes$PAN_DELGASTRIC_20140315 =="Unknown"] <- NA ###recoding Hep targeted complications bileleakage TextbookOutcomes$HEP_BILELEAKAGE[TextbookOutcomes$HEP_BILELEAKAGE =="Unknown"] <- NA TextbookOutcomes$HEP_BILELEAKAGE[TextbookOutcomes$HEP_BILELEAKAGE =="Yes-clinical diagnosis, drain continued on or after POD3"] <- "Yes" TextbookOutcomes$HEP_BILELEAKAGE[TextbookOutcomes$HEP_BILELEAKAGE =="Yes-clinical diagnosis, percutaneous drainage performed"] <- "Yes" TextbookOutcomes$HEP_BILELEAKAGE[TextbookOutcomes$HEP_BILELEAKAGE =="Yes-clinical diagnosis, reoperation performed"] <- "Yes" TextbookOutcomes$HEP_BILELEAKAGE[TextbookOutcomes$HEP_BILELEAKAGE =="Yes-clinical diagnosis, spontaneous wound drainage"] <- "Yes" TextbookOutcomes$HEP_BILELEAKAGE[TextbookOutcomes$HEP_BILELEAKAGE =="Yes-persistent drainage, drain continued on or after POD3"] <- "Yes" TextbookOutcomes$HEP_BILELEAKAGE[TextbookOutcomes$HEP_BILELEAKAGE =="Yes-persistent drainage, percutaneous drainage performed"] <- "Yes" TextbookOutcomes$HEP_BILELEAKAGE[TextbookOutcomes$HEP_BILELEAKAGE =="Yes-persistent drainage, reoperation performed"] <- "Yes" ##recoding hep targeted complications Liver failure (Post Hepatectomy Liver Failure) TextbookOutcomes$HEP_LIVERFAIL[TextbookOutcomes$HEP_LIVERFAIL =="Yes-PHLF (receiving clotting factors to maintain INR)"] <- "Yes" TextbookOutcomes$HEP_LIVERFAIL[TextbookOutcomes$HEP_LIVERFAIL =="Yes-meets criteria for PHLF"] <- "Yes" TextbookOutcomes$HEP_LIVERFAIL[TextbookOutcomes$HEP_LIVERFAIL =="No-does not meet criteria for PHLF"] <- "No" table(TextbookOutcomes$HEP_LIVERFAIL) ``` ```{r} table(TextbookOutcomes$PRNCPTX) ``` ```{r} ###Creating Targeted Column for Hep Complications TextbookOutcomes1 <- TextbookOutcomes %>% mutate(TextbookOutcomes, HepComplications = ifelse(HEP_LIVERFAIL == "Yes", "Yes", ifelse(HEP_BILELEAKAGE == "Yes", "Yes", "No"))) table(TextbookOutcomes1$HepComplications) ``` ```{r} ###Creating Targeted Column for Hep Complications TextbookOutcomes2 <- TextbookOutcomes1 %>% mutate(TextbookOutcomes, PanComplications = ifelse(PAN_FISTULA == "Yes", "Yes", ifelse(PAN_DELGASTRIC_20140315 == "Yes", "Yes", "No"))) str(TextbookOutcomes2$PanComplications) sum(is.na(TextbookOutcomes2$PanComplications)) ``` ```{r} ###creating a true textbookoutcomes column for pan and liver TextbookOutcomes2$PanComplications[TextbookOutcomes2$PanComplications ==NA] <- "NA" TextbookOutcomes2$PanComplications[TextbookOutcomes2$HepComplications ==NA] <- "NA" table(TextbookOutcomes2$PanComplications) TextbookOutcomes2$PanComplications[TextbookOutcomes2$PanComplications ==NA] <- "NA" sum(is.na(TextbookOutcomes2$PanComplications)) table(is.na(TextbookOutcomes2$PanComplications)) ``` ```{r} ### Ifelse function to create new column for any complication (will need to add in targeted complications Pan: Fistula, Delayed Gastric Emptying | Hep: Bile leakage, hepliverfail) TextbookOutcomes3 <- TextbookOutcomes2 %>% mutate(TextbookOutcomes, AnyComplication = ifelse(CDARREST == "Cardiac Arrest Requiring CPR", "Yes", ifelse(CDMI == "Myocardial Infarction", "Yes", ifelse(OUPNEUMO == "Pneumonia", "Yes", ifelse(RENAINSF == "Progressive Renal Insufficiency", "Yes", ifelse(OPRENAFL == "Acute Renal Failure", "Yes", ifelse(PULEMBOL == "Pulmonary Embolism", "Yes", ifelse(OTHDVT == "DVT Requiring Therapy", "Yes", ifelse(RETURNOR == "Yes", "Yes", ifelse(ORGSPCSSI == "Organ/Space SSI", "Yes", ifelse(PRSEPIS == "Yes", "Yes", ifelse(REINTUB == "Unplanned Intubation", "Yes", ifelse(URNINFEC == "Urinary Tract Infection", "Yes", ifelse(SUPINFEC == "Superficial Incisional SSI", "Yes", ifelse(FAILWEAN == "On Ventilator greater than 48 Hours", "Yes", ifelse(CNSCVA == "Stroke/CVA", "Yes", ifelse(DEHIS == "Wound Disruption", "Yes", "No"))))))))))))))))) ``` ```{r} ##subsetting Procedure with DoptoDIS information to obtain the mean TextbookOutcomesDistalPan <- subset(TextbookOutcomes, PRNCPTX == "Distal Pancreatectomy") TextbookOutcomesLobectomy <- subset(TextbookOutcomes, PRNCPTX == "Lobectomy") TextbookOutcomesOtherPan <- subset(TextbookOutcomes, PRNCPTX == "Other Pancreas") TextbookOutcomesPartialLobectomy <- subset(TextbookOutcomes, PRNCPTX == "Partial Lobectomy") TextbookOutcomesTotalPan <- subset(TextbookOutcomes, PRNCPTX == "Total Pancreatectomy") TextbookOutcomesTrisegmentectomy <- subset(TextbookOutcomes, PRNCPTX == "Trisegmentectomy") TextbookOutcomesWhipple <- subset(TextbookOutcomes, PRNCPTX == "Whipple") ``` ```{r} ###obtaining the 75th percential for LOS defined as day of surgery to date of discharge SeventyFifthPercentileDistalPan = TextbookOutcomesDistalPan$DOptoDis SeventyFifthPercentileLobectomy = TextbookOutcomesLobectomy$DOptoDis SeventyFifthPercentileOtherPan = TextbookOutcomesOtherPan$DOptoDis SeventyFifthPercentilePartialLobectomy = TextbookOutcomesPartialLobectomy$DOptoDis SeventyFifthPercentileTotalPan = TextbookOutcomesTotalPan$DOptoDis SeventyFifthPercentileTrisegmentectomy = TextbookOutcomesTrisegmentectomy$DOptoDis SeventyFifthPercentileWhipple = TextbookOutcomesWhipple$DOptoDis quantile(SeventyFifthPercentileDistalPan, na.rm = T) quantile(SeventyFifthPercentileLobectomy, na.rm = T) quantile(SeventyFifthPercentileOtherPan, na.rm = T) quantile(SeventyFifthPercentilePartialLobectomy, na.rm = T) quantile(SeventyFifthPercentileTotalPan, na.rm = T) quantile(SeventyFifthPercentileTrisegmentectomy, na.rm = T) quantile(SeventyFifthPercentileWhipple, na.rm = T) ``` ```{r} TextbookOutcomes3$ELOSDistalPan <- ifelse(TextbookOutcomes3$PRNCPTX == "Distal Pancreatectomy" & TextbookOutcomes3$DOptoDis >= 7, "Yes", "No") TextbookOutcomes3$ELOSLobectomy <- ifelse(TextbookOutcomes3$PRNCPTX == "Lobectomy" & TextbookOutcomes3$DOptoDis >= 8, "Yes", "No") TextbookOutcomes3$ELOSOtherPan <- ifelse(TextbookOutcomes3$PRNCPTX == "Other Pancreas" & TextbookOutcomes3$DOptoDis >= 7, "Yes", "No") TextbookOutcomes3$ELOSPartial <- ifelse(TextbookOutcomes3$PRNCPTX == "Partial Lobectomy" & TextbookOutcomes3$DOptoDis >= 6, "Yes", "No") TextbookOutcomes3$ELOSTotal <- ifelse(TextbookOutcomes3$PRNCPTX == "Total Pancreatectomy" & TextbookOutcomes3$DOptoDis >= 12, "Yes", "No") TextbookOutcomes3$ELOSTrisegmentectomy <- ifelse(TextbookOutcomes3$PRNCPTX == "Trisegmentectomy" & TextbookOutcomes3$DOptoDis >= 10, "Yes", "No") TextbookOutcomes3$ELOSWhipple <- ifelse(TextbookOutcomes3$PRNCPTX == "Whipple" & TextbookOutcomes3$DOptoDis >= 12, "Yes", "No") table(TextbookOutcomes3$ELOSPartial) ``` ```{r} ###recode 9 and up to be considered increased LOS PanTextbookOutcomes <- TextbookOutcomes3 %>% mutate(TextbookOutcomes3, ELOS = ifelse(ELOSDistalPan == "Yes", "Yes", ifelse(ELOSLobectomy == "Yes", "Yes", ifelse(ELOSOtherPan == "Yes", "Yes", ifelse(ELOSPartial == "Yes", "Yes", ifelse(ELOSTotal == "Yes", "Yes", ifelse(ELOSTrisegmentectomy == "Yes", "Yes", ifelse(ELOSWhipple == "Yes", "Yes", "No")))))))) table(PanTextbookOutcomes$ELOS) ``` ###subset pancreatic cancer patients prior to creating a Textbook Outcomes Table double the 75th percentile number afterwards PanTextbookOutcomes <- subset(TextbookOutcomes4, PanComplications == "Yes" | PanComplications == "No") table(PanTextbookOutcomes$HepComplications) ```{r} PanTextbookOutcomes$TextbookOutcomeHep <- ifelse(PanTextbookOutcomes$ELOS == "No" & PanTextbookOutcomes$DOpertoD == "No" & PanTextbookOutcomes$HepComplications == "No" & PanTextbookOutcomes$AnyComplication == "No" & PanTextbookOutcomes$READMISSION1 == "No", "Yes", "No") PanTextbookOutcomes$TextbookOutcomePan <- ifelse(PanTextbookOutcomes$ELOS == "No" & PanTextbookOutcomes$DOpertoD == "No" & PanTextbookOutcomes$PanComplications == "No" & PanTextbookOutcomes$AnyComplication == "No" & PanTextbookOutcomes$READMISSION1 == "No", "Yes", "No") PanTextbookOutcomes$TextbookOutcomeAll <- ifelse(PanTextbookOutcomes$TextbookOutcomePan == "No" & PanTextbookOutcomes$TextbookOutcomeHep == "No", "No", "Yes") table(PanTextbookOutcomes$TextbookOutcomeHep) table(PanTextbookOutcomes$TextbookOutcomePan) table(PanTextbookOutcomes$TextbookOutcomeAll) ``` PanTextbookOutcomes3 <- PanTextbookOutcomes %>% mutate(PanTextbookOutcomes, TextbookOutcomeAll = ifelse(TextbookOutcomePan == NA, "Yes", ifelse(TextbookOutcomeHep == "Yes", "Yes","NA"))) table(PanTextbookOutcomes3$TextbookOutcomeAll) PanTextbookOutcomes1 <- PanTextbookOutcomes %>% mutate(PanTextbookOutcomes, ModifiedFrailtyIndex5 = ifelse(MFI5 == 0, "0", ifelse(MFI5 == 1, "1", ifelse(MFI5 > 2, ">2", NA)))) ```{r} PantextBookOutcomesDT <- PanTextbookOutcomes %>% select(PRNCPTX, PatientGroup, Age, SEX, RACE_NEW, BMILabled, ASACLAS, DOpertoD, OPTIME, ELOS, READMISSION1, STEROID, DIABETES, HYPERMED, ASACLAS, ASCITES, HXCHF, DYSPNEA, SMOKE, HXCOPD, DIALYSIS, OPRENAFL, DISCANCR, FNSTATUS2, AnyComplication, TextbookOutcomeHep, TextbookOutcomePan, TextbookOutcomeAll, PanComplications, HepComplications) table(PantextBookOutcomesDT$PatientGroup) ``` ```{r} PantextBookOutcomesDT %>% tbl_summary( by = PatientGroup, digits = all_continuous() ~ 2,) %>% add_p(pvalue_fun = ~style_pvalue(.x, digits = 2))%>% bold_p() %>% add_overall() %>% modify_header(label ~ "**Variable**") %>% modify_spanning_header(c("stat_1", "stat_2") ~ "**Textbook Outcomes*") %>% bold_labels() ``` ```{r} TextbookOutcomeOR <- PantextBookOutcomesDT %>% select(PRNCPTX, PatientGroup, Age, SEX, RACE_NEW, BMILabled, ASACLAS, DOpertoD, OPTIME, ELOS, READMISSION1, STEROID, DIABETES, HYPERMED, ASACLAS, ASCITES, HXCHF, DYSPNEA, SMOKE, HXCOPD, DIALYSIS, OPRENAFL, DISCANCR, FNSTATUS2, AnyComplication, TextbookOutcomeHep, TextbookOutcomePan, TextbookOutcomeAll, PanComplications, HepComplications) ``` ```{r Create the binary outcome} TextbookOutcomeOR <- TextbookOutcomeOR %>% mutate(TextbookOutcomeOR, TextbookOutcomePanOR = ifelse(TextbookOutcomePan =="Yes", "1", ifelse(TextbookOutcomePan =="No", "0", NA))) TextbookOutcomeOR$TextbookOutcomePanOR <- as.numeric(TextbookOutcomeOR$TextbookOutcomePanOR) TextbookOutcomeOR <- TextbookOutcomeOR %>% mutate(TextbookOutcomeOR, TextbookOutcomeHepOR = ifelse(TextbookOutcomeHep =="Yes", "1", ifelse(TextbookOutcomeHep =="No", "0", NA))) TextbookOutcomeOR <- TextbookOutcomeOR %>% mutate(TextbookOutcomeOR, TextbookOutcomeAllOR = ifelse(TextbookOutcomeAll =="Yes", "1", ifelse(TextbookOutcomeAll =="No", "0", NA))) TextbookOutcomeOR$TextbookOutcomeHepOR <- as.numeric(TextbookOutcomeOR$TextbookOutcomeHepOR) TextbookOutcomeOR$TextbookOutcomeAllOR <- as.numeric(TextbookOutcomeOR$TextbookOutcomeAllOR) TextbookOutcomeOR$TextbookOutcomePanOR <- as.numeric(TextbookOutcomeOR$TextbookOutcomePanOR) ``` ```{r} PanTextbookOutcomesSubset <- subset(TextbookOutcomeOR, PatientGroup == "Pancreas") ``` ```{r} HepTextbookOutcomesSubset <- subset(TextbookOutcomeOR, PatientGroup == "Liver") table(PanTextbookOutcomesSubset$TextbookOutcomePanOR) ``` ```{r} ###changling the referent level PanTextbookOutcomesSubset$PRNCPTX <- as.factor(PanTextbookOutcomesSubset$PRNCPTX) PanTextbookOutcomesSubset$SEX <- as.factor(PanTextbookOutcomesSubset$SEX) PanTextbookOutcomesSubset$ASACLAS <- as.factor(PanTextbookOutcomesSubset$ASACLAS) PanTextbookOutcomesSubset$BMILabled <- as.factor(PanTextbookOutcomesSubset$BMILabled) PanTextbookOutcomesSubset$STEROID <- as.factor(PanTextbookOutcomesSubset$STEROID) PanTextbookOutcomesSubset$DIABETES <- as.factor(PanTextbookOutcomesSubset$DIABETES) PanTextbookOutcomesSubset$HYPERMED <- as.factor(PanTextbookOutcomesSubset$HYPERMED) PanTextbookOutcomesSubset$ASCITES <- as.factor(PanTextbookOutcomesSubset$ASCITES) PanTextbookOutcomesSubset$HXCOPD <- as.factor(PanTextbookOutcomesSubset$HXCOPD) PanTextbookOutcomesSubset$DIALYSIS <- as.factor(PanTextbookOutcomesSubset$DIALYSIS) PanTextbookOutcomesSubset$DISCANCR <- as.factor(PanTextbookOutcomesSubset$DISCANCR) PanTextbookOutcomesSubset$HXCHF <- as.factor(PanTextbookOutcomesSubset$HXCHF) PanTextbookOutcomesSubset$Age <- as.factor(PanTextbookOutcomesSubset$Age) PanTextbookOutcomesSubset$FNSTATUS2 <- as.factor(PanTextbookOutcomesSubset$FNSTATUS2) PanTextbookOutcomesSubset$SMOKE <- as.factor(PanTextbookOutcomesSubset$SMOKE) PanTextbookOutcomesSubset$PatientGroup <- as.factor(PanTextbookOutcomesSubset$PatientGroup) PanTextbookOutcomesSubset$PRNCPTX = relevel(PanTextbookOutcomesSubset$PRNCPTX, ref="Distal Pancreatectomy") PanTextbookOutcomesSubset$SEX = relevel(PanTextbookOutcomesSubset$SEX, ref="male") PanTextbookOutcomesSubset$BMILabled = relevel(PanTextbookOutcomesSubset$BMILabled, ref="Normal Weight") PanTextbookOutcomesSubset$ASACLAS = relevel(PanTextbookOutcomesSubset$ASACLAS, ref="4-Life Threat") PanTextbookOutcomesSubset$DIABETES = relevel(PanTextbookOutcomesSubset$DIABETES, ref="NO") PanTextbookOutcomesSubset$HYPERMED = relevel(PanTextbookOutcomesSubset$HYPERMED, ref="Yes") PanTextbookOutcomesSubset$STEROID = relevel(PanTextbookOutcomesSubset$STEROID, ref="Yes") PanTextbookOutcomesSubset$ASCITES = relevel(PanTextbookOutcomesSubset$ASCITES, ref="Yes") PanTextbookOutcomesSubset$HXCOPD = relevel(PanTextbookOutcomesSubset$HXCOPD, ref="Yes") PanTextbookOutcomesSubset$DIALYSIS = relevel(PanTextbookOutcomesSubset$DIALYSIS, ref="Yes") PanTextbookOutcomesSubset$SMOKE = relevel(PanTextbookOutcomesSubset$SMOKE, ref="No") PanTextbookOutcomesSubset$DISCANCR = relevel(PanTextbookOutcomesSubset$DISCANCR, ref="Yes") PanTextbookOutcomesSubset$HXCHF = relevel(PanTextbookOutcomesSubset$HXCHF, ref="Yes") PanTextbookOutcomesSubset$Age = relevel(PanTextbookOutcomesSubset$Age, ref="85+") PanTextbookOutcomesSubset$FNSTATUS2 = relevel(PanTextbookOutcomesSubset$FNSTATUS2, ref="Totally Dependent") ``` ```{r Univariant analysis Pan} UVPan <- PanTextbookOutcomesSubset %>% select(PRNCPTX, Age, SEX, RACE_NEW, BMILabled, ASACLAS, STEROID, ASCITES, DYSPNEA, SMOKE, DIALYSIS, DISCANCR, DIABETES, HYPERMED, HXCOPD, HXCHF, TextbookOutcomePanOR) %>% tbl_uvregression( method = glm, y = TextbookOutcomePanOR, method.args = list(family = binomial), exponentiate = TRUE, pvalue_fun = ~style_pvalue(.x, digits = 2) ) %>% bold_p(t = 0.10) %>% bold_labels() %>% italicize_levels() ``` ```{r} ###changling the referent level PanTextbookOutcomesSubset$PRNCPTX <- as.factor(PanTextbookOutcomesSubset$PRNCPTX) PanTextbookOutcomesSubset$SEX <- as.factor(PanTextbookOutcomesSubset$SEX) PanTextbookOutcomesSubset$ASACLAS <- as.factor(PanTextbookOutcomesSubset$ASACLAS) PanTextbookOutcomesSubset$BMILabled <- as.factor(PanTextbookOutcomesSubset$BMILabled) PanTextbookOutcomesSubset$STEROID <- as.factor(PanTextbookOutcomesSubset$STEROID) PanTextbookOutcomesSubset$DIABETES <- as.factor(PanTextbookOutcomesSubset$DIABETES) PanTextbookOutcomesSubset$HYPERMED <- as.factor(PanTextbookOutcomesSubset$HYPERMED) PanTextbookOutcomesSubset$ASCITES <- as.factor(PanTextbookOutcomesSubset$ASCITES) PanTextbookOutcomesSubset$HXCOPD <- as.factor(PanTextbookOutcomesSubset$HXCOPD) PanTextbookOutcomesSubset$DIALYSIS <- as.factor(PanTextbookOutcomesSubset$DIALYSIS) PanTextbookOutcomesSubset$DISCANCR <- as.factor(PanTextbookOutcomesSubset$DISCANCR) PanTextbookOutcomesSubset$HXCHF <- as.factor(PanTextbookOutcomesSubset$HXCHF) PanTextbookOutcomesSubset$Age <- as.factor(PanTextbookOutcomesSubset$Age) PanTextbookOutcomesSubset$FNSTATUS2 <- as.factor(PanTextbookOutcomesSubset$FNSTATUS2) PanTextbookOutcomesSubset$PatientGroup <- as.factor(PanTextbookOutcomesSubset$PatientGroup) PanTextbookOutcomesSubset$PRNCPTX = relevel(PanTextbookOutcomesSubset$PRNCPTX, ref="Distal Pancreatectomy") PanTextbookOutcomesSubset$SEX = relevel(PanTextbookOutcomesSubset$SEX, ref="male") PanTextbookOutcomesSubset$ASACLAS = relevel(PanTextbookOutcomesSubset$ASACLAS, ref="4-Life Threat") PanTextbookOutcomesSubset$BMILabled = relevel(PanTextbookOutcomesSubset$BMILabled, ref="Normal Weight") PanTextbookOutcomesSubset$DIABETES = relevel(PanTextbookOutcomesSubset$DIABETES, ref="NO") PanTextbookOutcomesSubset$HYPERMED = relevel(PanTextbookOutcomesSubset$HYPERMED, ref="Yes") PanTextbookOutcomesSubset$STEROID = relevel(PanTextbookOutcomesSubset$STEROID, ref="Yes") PanTextbookOutcomesSubset$ASCITES = relevel(PanTextbookOutcomesSubset$ASCITES, ref="Yes") PanTextbookOutcomesSubset$HXCOPD = relevel(PanTextbookOutcomesSubset$HXCOPD, ref="Yes") PanTextbookOutcomesSubset$DIALYSIS = relevel(PanTextbookOutcomesSubset$DIALYSIS, ref="Yes") PanTextbookOutcomesSubset$DISCANCR = relevel(PanTextbookOutcomesSubset$DISCANCR, ref="Yes") PanTextbookOutcomesSubset$HXCHF = relevel(PanTextbookOutcomesSubset$HXCHF, ref="Yes") PanTextbookOutcomesSubset$Age = relevel(PanTextbookOutcomesSubset$Age, ref="85+") PanTextbookOutcomesSubset$FNSTATUS2 = relevel(PanTextbookOutcomesSubset$FNSTATUS2, ref="Totally Dependent") ``` ```{r} ####Multivariant analysis serious complications MVORPan <- glm(TextbookOutcomePanOR ~ PRNCPTX + Age + SEX + RACE_NEW + BMILabled + ASACLAS + STEROID + ASCITES + DYSPNEA + SMOKE + DIALYSIS + DISCANCR + DIABETES + HYPERMED + HXCOPD + HXCHF, data = PanTextbookOutcomesSubset, family = binomial("logit"), na.action =na.omit) ``` ```{r} ###continue on to merge the table sets MVORTablePan <- tbl_regression(MVORPan, exponentiate = T, pvalue_fun = ~style_pvalue(.x, digits = 2), ) %>% bold_p(t = 0.10) %>% bold_labels() %>% italicize_levels() ``` ```{r} tbl_merge( list(UVPan, MVORTablePan), tab_spanner = c("**Univariable**", "**Multivariable**") ) %>% bold_labels() %>% italicize_levels() ``` ```{r} ###changling the referent level HepTextbookOutcomesSubset$PRNCPTX <- as.factor(HepTextbookOutcomesSubset$PRNCPTX) HepTextbookOutcomesSubset$SEX <- as.factor(HepTextbookOutcomesSubset$SEX) HepTextbookOutcomesSubset$BMILabled <- as.factor(HepTextbookOutcomesSubset$BMILabled) HepTextbookOutcomesSubset$ASACLAS <- as.factor(HepTextbookOutcomesSubset$ASACLAS) HepTextbookOutcomesSubset$STEROID <- as.factor(HepTextbookOutcomesSubset$STEROID) HepTextbookOutcomesSubset$DIABETES <- as.factor(HepTextbookOutcomesSubset$DIABETES) HepTextbookOutcomesSubset$HYPERMED <- as.factor(HepTextbookOutcomesSubset$HYPERMED) HepTextbookOutcomesSubset$ASCITES <- as.factor(HepTextbookOutcomesSubset$ASCITES) HepTextbookOutcomesSubset$HXCOPD <- as.factor(HepTextbookOutcomesSubset$HXCOPD) HepTextbookOutcomesSubset$DIALYSIS <- as.factor(HepTextbookOutcomesSubset$DIALYSIS) HepTextbookOutcomesSubset$DISCANCR <- as.factor(HepTextbookOutcomesSubset$DISCANCR) HepTextbookOutcomesSubset$HXCHF <- as.factor(HepTextbookOutcomesSubset$HXCHF) HepTextbookOutcomesSubset$SMOKE <- as.factor(HepTextbookOutcomesSubset$SMOKE) HepTextbookOutcomesSubset$Age <- as.factor(HepTextbookOutcomesSubset$Age) HepTextbookOutcomesSubset$PRNCPTX = relevel(HepTextbookOutcomesSubset$PRNCPTX, ref="Trisegmentectomy") HepTextbookOutcomesSubset$SEX = relevel(HepTextbookOutcomesSubset$SEX, ref="male") HepTextbookOutcomesSubset$BMILabled = relevel(HepTextbookOutcomesSubset$BMILabled, ref="Normal Weight") HepTextbookOutcomesSubset$ASACLAS = relevel(HepTextbookOutcomesSubset$ASACLAS, ref="4-Life Threat") HepTextbookOutcomesSubset$DIABETES = relevel(HepTextbookOutcomesSubset$DIABETES, ref="Yes") HepTextbookOutcomesSubset$HYPERMED = relevel(HepTextbookOutcomesSubset$HYPERMED, ref="Yes") HepTextbookOutcomesSubset$STEROID = relevel(HepTextbookOutcomesSubset$STEROID, ref="Yes") HepTextbookOutcomesSubset$ASCITES = relevel(HepTextbookOutcomesSubset$ASCITES, ref="Yes") HepTextbookOutcomesSubset$HXCOPD = relevel(HepTextbookOutcomesSubset$HXCOPD, ref="Yes") HepTextbookOutcomesSubset$DIALYSIS = relevel(HepTextbookOutcomesSubset$DIALYSIS, ref="Yes") HepTextbookOutcomesSubset$DISCANCR = relevel(HepTextbookOutcomesSubset$DISCANCR, ref="Yes") HepTextbookOutcomesSubset$HXCHF = relevel(HepTextbookOutcomesSubset$HXCHF, ref="Yes") HepTextbookOutcomesSubset$SMOKE = relevel(HepTextbookOutcomesSubset$SMOKE, ref="Yes") HepTextbookOutcomesSubset$Age = relevel(HepTextbookOutcomesSubset$Age, ref="85+") ``` ```{r Univariant analysis Hep} UVHep <- HepTextbookOutcomesSubset %>% select(PRNCPTX, Age, SEX, RACE_NEW, BMILabled, ASACLAS, STEROID, ASCITES, DYSPNEA, SMOKE, DIALYSIS, DISCANCR, DIABETES, HYPERMED, HXCOPD, HXCHF, TextbookOutcomeHepOR) %>% tbl_uvregression( method = glm, y = TextbookOutcomeHepOR, method.args = list(family = binomial), exponentiate = TRUE, pvalue_fun = ~style_pvalue(.x, digits = 2) ) %>% bold_p(t = 0.10) %>% bold_labels() %>% italicize_levels() ``` ```{r} HepTextbookOutcomesSubset$PRNCPTX <- as.factor(HepTextbookOutcomesSubset$PRNCPTX) HepTextbookOutcomesSubset$BMILabled <- as.factor(HepTextbookOutcomesSubset$BMILabled) HepTextbookOutcomesSubset$ASACLAS <- as.factor(HepTextbookOutcomesSubset$ASACLAS) HepTextbookOutcomesSubset$STEROID <- as.factor(HepTextbookOutcomesSubset$STEROID) HepTextbookOutcomesSubset$DIABETES <- as.factor(HepTextbookOutcomesSubset$DIABETES) HepTextbookOutcomesSubset$HYPERMED <- as.factor(HepTextbookOutcomesSubset$HYPERMED) HepTextbookOutcomesSubset$ASCITES <- as.factor(HepTextbookOutcomesSubset$ASCITES) HepTextbookOutcomesSubset$HXCOPD <- as.factor(HepTextbookOutcomesSubset$HXCOPD) HepTextbookOutcomesSubset$DIALYSIS <- as.factor(HepTextbookOutcomesSubset$DIALYSIS) HepTextbookOutcomesSubset$DISCANCR <- as.factor(HepTextbookOutcomesSubset$DISCANCR) HepTextbookOutcomesSubset$HXCHF <- as.factor(HepTextbookOutcomesSubset$HXCHF) HepTextbookOutcomesSubset$SMOKE <- as.factor(HepTextbookOutcomesSubset$SMOKE) HepTextbookOutcomesSubset$Age <- as.factor(HepTextbookOutcomesSubset$Age) HepTextbookOutcomesSubset$PRNCPTX = relevel(HepTextbookOutcomesSubset$PRNCPTX, ref="Trisegmentectomy") HepTextbookOutcomesSubset$BMILabled = relevel(HepTextbookOutcomesSubset$BMILabled, ref="Normal Weight") HepTextbookOutcomesSubset$ASACLAS = relevel(HepTextbookOutcomesSubset$ASACLAS, ref="4-Life Threat") HepTextbookOutcomesSubset$DIABETES = relevel(HepTextbookOutcomesSubset$DIABETES, ref="Yes") HepTextbookOutcomesSubset$HYPERMED = relevel(HepTextbookOutcomesSubset$HYPERMED, ref="Yes") HepTextbookOutcomesSubset$STEROID = relevel(HepTextbookOutcomesSubset$STEROID, ref="Yes") HepTextbookOutcomesSubset$ASCITES = relevel(HepTextbookOutcomesSubset$ASCITES, ref="Yes") HepTextbookOutcomesSubset$HXCOPD = relevel(HepTextbookOutcomesSubset$HXCOPD, ref="Yes") HepTextbookOutcomesSubset$DIALYSIS = relevel(HepTextbookOutcomesSubset$DIALYSIS, ref="Yes") HepTextbookOutcomesSubset$DISCANCR = relevel(HepTextbookOutcomesSubset$DISCANCR, ref="Yes") HepTextbookOutcomesSubset$HXCHF = relevel(HepTextbookOutcomesSubset$HXCHF, ref="Yes") HepTextbookOutcomesSubset$SMOKE = relevel(HepTextbookOutcomesSubset$SMOKE, ref="Yes") HepTextbookOutcomesSubset$Age = relevel(HepTextbookOutcomesSubset$Age, ref="85+") ``` ```{r} ####Multivariant analysis serious complications MVORHep <- glm(TextbookOutcomeHepOR ~ PRNCPTX + Age + SEX + RACE_NEW + BMILabled + ASACLAS + STEROID + ASCITES + DYSPNEA + SMOKE + DIALYSIS + DISCANCR + DIABETES + HYPERMED + HXCOPD + HXCHF, data = HepTextbookOutcomesSubset, family = binomial("logit"), na.action =na.omit) ``` ```{r} ###continue on to merge the table sets MVORTableHep <- tbl_regression(MVORHep, exponentiate = T, pvalue_fun = ~style_pvalue(.x, digits = 2), ) %>% bold_p(t = 0.10) %>% bold_labels() %>% italicize_levels() ``` ```{r} tbl_merge( list(UVHep, MVORTableHep), tab_spanner = c("**Univariable**", "**Multivariable**") ) %>% bold_labels() %>% italicize_levels() ``` ```{r} ###changling the referent level TextbookOutcomeOR$PatientGroup <- as.factor(TextbookOutcomeOR$PatientGroup) TextbookOutcomeOR$BMILabled <- as.factor(TextbookOutcomeOR$BMILabled) TextbookOutcomeOR$ASACLAS <- as.factor(TextbookOutcomeOR$ASACLAS) TextbookOutcomeOR$STEROID <- as.factor(TextbookOutcomeOR$STEROID) TextbookOutcomeOR$DIABETES <- as.factor(TextbookOutcomeOR$DIABETES) TextbookOutcomeOR$HYPERMED <- as.factor(TextbookOutcomeOR$HYPERMED) TextbookOutcomeOR$ASCITES <- as.factor(TextbookOutcomeOR$ASCITES) TextbookOutcomeOR$HXCOPD <- as.factor(TextbookOutcomeOR$HXCOPD) TextbookOutcomeOR$DIALYSIS <- as.factor(TextbookOutcomeOR$DIALYSIS) TextbookOutcomeOR$DISCANCR <- as.factor(TextbookOutcomeOR$DISCANCR) TextbookOutcomeOR$HXCHF <- as.factor(TextbookOutcomeOR$HXCHF) TextbookOutcomeOR$SMOKE <- as.factor(TextbookOutcomeOR$SMOKE) TextbookOutcomeOR$Age <- as.factor(TextbookOutcomeOR$Age) TextbookOutcomeOR$SEX <- as.factor(TextbookOutcomeOR$SEX) TextbookOutcomeOR$BMILabled = relevel(TextbookOutcomeOR$BMILabled, ref="Normal Weight") TextbookOutcomeOR$ASACLAS = relevel(TextbookOutcomeOR$ASACLAS, ref="4-Life Threat") TextbookOutcomeOR$DIABETES = relevel(TextbookOutcomeOR$DIABETES, ref="NO") TextbookOutcomeOR$SEX = relevel(TextbookOutcomeOR$SEX, ref="male") TextbookOutcomeOR$SMOKE = relevel(TextbookOutcomeOR$SMOKE, ref="Yes") TextbookOutcomeOR$STEROID = relevel(TextbookOutcomeOR$STEROID, ref="Yes") TextbookOutcomeOR$ASCITES = relevel(TextbookOutcomeOR$ASCITES, ref="Yes") TextbookOutcomeOR$HXCOPD = relevel(TextbookOutcomeOR$HXCOPD, ref="Yes") TextbookOutcomeOR$DIALYSIS = relevel(TextbookOutcomeOR$DIALYSIS, ref="Yes") TextbookOutcomeOR$DISCANCR = relevel(TextbookOutcomeOR$DISCANCR, ref="Yes") TextbookOutcomeOR$HXCHF = relevel(TextbookOutcomeOR$HXCHF, ref="Yes") TextbookOutcomeOR$Age = relevel(TextbookOutcomeOR$Age, ref="85+") ``` ```{r Univariant analysis All} ###Univariant, multivariant for everyone UVAll <- TextbookOutcomeOR %>% select(PatientGroup, Age, SEX, RACE_NEW, BMILabled, ASACLAS, STEROID, ASCITES, DYSPNEA, SMOKE, DIALYSIS, DISCANCR, DIABETES, HYPERMED, HXCOPD, HXCHF, TextbookOutcomeAllOR) %>% tbl_uvregression( method = glm, y = TextbookOutcomeAllOR, method.args = list(family = binomial), exponentiate = TRUE, pvalue_fun = ~style_pvalue(.x, digits = 2) ) %>% bold_p(t = 0.10) %>% bold_labels() %>% italicize_levels() ``` ```{r} ###changling the referent level TextbookOutcomeOR$PatientGroup <- as.factor(TextbookOutcomeOR$PatientGroup) TextbookOutcomeOR$SEX <- as.factor(TextbookOutcomeOR$SEX) TextbookOutcomeOR$ASACLAS <- as.factor(TextbookOutcomeOR$ASACLAS) TextbookOutcomeOR$STEROID <- as.factor(TextbookOutcomeOR$STEROID) TextbookOutcomeOR$DIABETES <- as.factor(TextbookOutcomeOR$DIABETES) TextbookOutcomeOR$SMOKE <- as.factor(TextbookOutcomeOR$SMOKE) TextbookOutcomeOR$ASCITES <- as.factor(TextbookOutcomeOR$ASCITES) TextbookOutcomeOR$HXCOPD <- as.factor(TextbookOutcomeOR$HXCOPD) TextbookOutcomeOR$DIALYSIS <- as.factor(TextbookOutcomeOR$DIALYSIS) TextbookOutcomeOR$DISCANCR <- as.factor(TextbookOutcomeOR$DISCANCR) TextbookOutcomeOR$HXCHF <- as.factor(TextbookOutcomeOR$HXCHF) TextbookOutcomeOR$Age <- as.factor(TextbookOutcomeOR$Age) TextbookOutcomeOR$SEX = relevel(TextbookOutcomeOR$SEX, ref="male") TextbookOutcomeOR$BMILabled = relevel(TextbookOutcomeOR$BMILabled, ref="Normal Weight") TextbookOutcomeOR$ASACLAS = relevel(TextbookOutcomeOR$ASACLAS, ref="4-Life Threat") TextbookOutcomeOR$DIABETES = relevel(TextbookOutcomeOR$DIABETES, ref="NO") TextbookOutcomeOR$SMOKE = relevel(TextbookOutcomeOR$SMOKE, ref="Yes") TextbookOutcomeOR$STEROID = relevel(TextbookOutcomeOR$STEROID, ref="Yes") TextbookOutcomeOR$ASCITES = relevel(TextbookOutcomeOR$ASCITES, ref="Yes") TextbookOutcomeOR$HXCOPD = relevel(TextbookOutcomeOR$HXCOPD, ref="Yes") TextbookOutcomeOR$DIALYSIS = relevel(TextbookOutcomeOR$DIALYSIS, ref="Yes") TextbookOutcomeOR$DISCANCR = relevel(TextbookOutcomeOR$DISCANCR, ref="Yes") TextbookOutcomeOR$HXCHF = relevel(TextbookOutcomeOR$HXCHF, ref="Yes") TextbookOutcomeOR$Age = relevel(TextbookOutcomeOR$Age, ref="85+") ``` ```{r} ####Multivariant analysis serious complications MVORAll <- glm(TextbookOutcomeAllOR ~ PatientGroup + Age + SEX + RACE_NEW + BMILabled + ASACLAS + STEROID + ASCITES + DYSPNEA + SMOKE + DIALYSIS + DISCANCR + DIABETES + HYPERMED + HXCOPD + HXCHF, data = TextbookOutcomeOR, family = binomial("logit"), na.action =na.omit) ``` ```{r} ###continue on to merge the table sets MVORTableAll <- tbl_regression(MVORAll, exponentiate = T, pvalue_fun = ~style_pvalue(.x, digits = 2), ) %>% bold_p(t = 0.10) %>% bold_labels() %>% italicize_levels() ``` ```{r} tbl_merge( list(UVAll, MVORTableAll), tab_spanner = c("**Univariable**", "**Multivariable**") ) %>% bold_labels() %>% italicize_levels() ```
LOI Everything
--- title: "Loss of Independence" author: "Abdimajid Mohamed" date: "2/24/2021" output: html_document --- ```{r} # Important packages to load in library(dplyr) library(gtsummary) library(survival) library(labelled) library(tidyverse) library(broom) library(ggplot2) library(survminer) library(VIM) ``` ```{r} load("NSQIPFinal.RData") ``` ##subset surgspec patients only general surgery patients NSQIPGENSURG <- subset(NSQIPALLYEARS, SURGSPEC == "General Surgery") ###Subset patients as inpatient, elective, independent status, NSQIPInpatient <- subset(NSQIPGENSURG, INOUT == "Inpatient") NSQIPElective <- subset(NSQIPInpatient, ELECTSURG == "Yes") NSQIPFinal <- subset(NSQIPElective, FNSTATUS2 == "Independent") ```{r} ##Recoding Procedures into Hep NSQIPFinal$PRNCPTX[NSQIPFinal$PRNCPTX =="ANAST INTRAHEPATC DUCTS & GI TRACT"] <- "Hep" NSQIPFinal$PRNCPTX[NSQIPFinal$PRNCPTX =="ANAST ROUX-EN-Y INTRAHEPATC BILIARY DUCTS & GI"] <- "Hep" NSQIPFinal$PRNCPTX[NSQIPFinal$PRNCPTX =="ANAST ROUX-EN-Y XTRHEPATC BILIARY DUCTS & GI"] <- "Hep" NSQIPFinal$PRNCPTX[NSQIPFinal$PRNCPTX =="ANAST XTRHEPATC BILIARY DUCTS & GI TRACT"] <- "Hep" NSQIPFinal$PRNCPTX[NSQIPFinal$PRNCPTX =="CHOLECYSTOENTEROSTOMY DIRECT"] <- "Hep" NSQIPFinal$PRNCPTX[NSQIPFinal$PRNCPTX =="CHOLECYSTOENTEROSTOMY ROUX-EN-Y"] <- "Hep" NSQIPFinal$PRNCPTX[NSQIPFinal$PRNCPTX =="CHOLEDOCHOT/OST W/O SPHNCTROTOMY/SPHNCTROP"] <- "Hep" NSQIPFinal$PRNCPTX[NSQIPFinal$PRNCPTX =="CHOLEDOCHOT/OST W/SPHNCTROTOMY/SPHNCTROP"] <- "Hep" NSQIPFinal$PRNCPTX[NSQIPFinal$PRNCPTX =="EXC BILE DUX TUM W/WO PRIM RPR XTRHEPATC"] <- "Hep" NSQIPFinal$PRNCPTX[NSQIPFinal$PRNCPTX =="EXC BILE DUX TUM W/WO PRIM RPR INTRAHEPATC"] <- "Hep" NSQIPFinal$PRNCPTX[NSQIPFinal$PRNCPTX =="EXCISION CHOLEDOCHAL CYST"] <- "Hep" NSQIPFinal$PRNCPTX[NSQIPFinal$PRNCPTX =="HEPATECTOMY RESCJ PARTIAL LOBECTOMY"] <- "Hep" NSQIPFinal$PRNCPTX[NSQIPFinal$PRNCPTX =="HEPATECTOMY RESCJ TOTAL LEFT LOBECTOMY"] <- "Hep" NSQIPFinal$PRNCPTX[NSQIPFinal$PRNCPTX =="HEPATECTOMY RESCJ TOTAL RIGHT LOBECTOMY"] <- "Hep" NSQIPFinal$PRNCPTX[NSQIPFinal$PRNCPTX =="HEPATECTOMY RESCJ TRISEGMENTECTOMY"] <- "Hep" NSQIPFinal$PRNCPTX[NSQIPFinal$PRNCPTX =="HEPATOTOMY OPEN DRAINAGE ABSCESS/CYST 1/2 STAGES"] <- "Hep" NSQIPFinal$PRNCPTX[NSQIPFinal$PRNCPTX =="SUTURE EXTRAHEPATIC BILE DUCT PRE-EXIST INJURY"] <- "Hep" NSQIPFinal$PRNCPTX[NSQIPFinal$PRNCPTX =="TRANSDUOL SPHINCTEROT/PLASTY W/WO RMVL CALCULUS"] <- "Hep" NSQIPFinal$PRNCPTX[NSQIPFinal$PRNCPTX =="UNLIS LAPAROSCOPIC PROCEDURE LIVER"] <- "Hep" NSQIPFinal$PRNCPTX[NSQIPFinal$PRNCPTX =="UNLISTED LAPAROSCOPY PROCEDURE BILIARY TRACT"] <- "Hep" NSQIPFinal$PRNCPTX[NSQIPFinal$PRNCPTX =="EXPL CONGENITAL ATRESIA BILE DUCTS"] <- "Hep" ##Recoding Procedures into PanNSQIPFinal$PRNCPTX[NSQIPFinal$PRNCPTX ==""] <- "Pan" NSQIPFinal$PRNCPTX[NSQIPFinal$PRNCPTX =="EXCISION LESION PANCREAS"] <- "Pan" NSQIPFinal$PRNCPTX[NSQIPFinal$PRNCPTX =="PANCREATECTOMY TOTAL"] <- "Pan" NSQIPFinal$PRNCPTX[NSQIPFinal$PRNCPTX =="PANCREATECTOMY W/TRNSPLJ PANCREAS/ISLET CELLS"] <- "Pan" NSQIPFinal$PRNCPTX[NSQIPFinal$PRNCPTX =="PANCREATICOJEJUNOSTOMY SIDE-TO-SIDE ANAST"] <- "Pan" NSQIPFinal$PRNCPTX[NSQIPFinal$PRNCPTX =="PELVIC EXENTERATION COLORECTAL MALIGNANCY"] <- "Pan" NSQIPFinal$PRNCPTX[NSQIPFinal$PRNCPTX =="PELVIC EXENTERATION COMPLETE MALIGNANCY"] <- "Pan" NSQIPFinal$PRNCPTX[NSQIPFinal$PRNCPTX =="PNCRTECT PROX STOT W/PANCREATOJEJUNOSTOMY"] <- "Pan" NSQIPFinal$PRNCPTX[NSQIPFinal$PRNCPTX =="PNCRTECT W/PANCREATOJEJUNOSTOMY"] <- "Pan" NSQIPFinal$PRNCPTX[NSQIPFinal$PRNCPTX =="PNCRTECT WHIPPLE W/O PANCREATOJEJUNOSTOMY"] <- "Pan" NSQIPFinal$PRNCPTX[NSQIPFinal$PRNCPTX =="PROCTOPEXY W/SIGMOID RESCJ ABDL APPR"] <- "Pan" NSQIPFinal$PRNCPTX[NSQIPFinal$PRNCPTX =="RESECJ/DBRDMT PANCREAS NECROTIZING PANCREATITIS"] <- "Pan" NSQIPFinal$PRNCPTX[NSQIPFinal$PRNCPTX =="EXCISION AMPULLA VATER"] <- "Pan" NSQIPFinal$PRNCPTX[NSQIPFinal$PRNCPTX =="INT ANAST PANCREATIC CYST GI TRACT DIRECT"] <- "Pan" NSQIPFinal$PRNCPTX[NSQIPFinal$PRNCPTX =="INT ANAST PANCREATIC CYST GI TRACT ROUX-EN-Y"] <- "Pan" NSQIPFinal$PRNCPTX[NSQIPFinal$PRNCPTX =="LAPS SURG ABLTJ 1/> LVR TUM RF"] <- "Pan" NSQIPFinal$PRNCPTX[NSQIPFinal$PRNCPTX =="PNCRTECT DSTL NR-TOT W/PRSRV DUO CHLD-TYP PX"] <- "Pan" NSQIPFinal$PRNCPTX[NSQIPFinal$PRNCPTX =="PNCRTECT DSTL STOT W/O PNCRTCOJEJUNOSTOMY"] <- "Pan" NSQIPFinal$PRNCPTX[NSQIPFinal$PRNCPTX =="PNCRTECT DSTL STOT W/PNCRTCOJEJUNOSTOMY"] <- "Pan" NSQIPFinal$PRNCPTX[NSQIPFinal$PRNCPTX =="PNCRTECT PROX STOT W/O PANCREATOJEJUNOSTOMY"] <- "Pan" NSQIPFinal$PRNCPTX[NSQIPFinal$PRNCPTX =="PNCRTECT PROX STOT W/O PANCREATOJEJUNOSTOMY"] <- "Pan" ##Recoding Procedures into Colorectal (col+pro) NSQIPFinal$PRNCPTX[NSQIPFinal$PRNCPTX =="COLCT TOT ABDL W/O PRCTECT W/CONTINENT ILEOST"] <- "CRC" NSQIPFinal$PRNCPTX[NSQIPFinal$PRNCPTX =="COLCT TOT ABDL W/O PRCTECT W/ILEOST/ILEOPXTS"] <- "CRC" NSQIPFinal$PRNCPTX[NSQIPFinal$PRNCPTX =="COLCT TTL ABD W/PRCTECT ILEOANAL ANAST & RSVR"] <-"CRC" NSQIPFinal$PRNCPTX[NSQIPFinal$PRNCPTX =="COLECTOMY PARTIAL W/ANASTOMOSIS"] <- "CRC" NSQIPFinal$PRNCPTX[NSQIPFinal$PRNCPTX =="COLECTOMY PRTL ABDOMINAL & TRANSANAL APPROACH"] <-"CRC" NSQIPFinal$PRNCPTX[NSQIPFinal$PRNCPTX =="COLECTOMY PRTL W/COLOPROCTOSTOMY"] <- "CRC" NSQIPFinal$PRNCPTX[NSQIPFinal$PRNCPTX =="COLECTOMY PRTL W/COLOPROCTOSTOMY & COLOSTOMY"] <- "CRC" NSQIPFinal$PRNCPTX[NSQIPFinal$PRNCPTX =="COLECTOMY PRTL W/COLOST/ILEOST & MUCOFISTULA"] <- "CRC" NSQIPFinal$PRNCPTX[NSQIPFinal$PRNCPTX =="COLECTOMY PRTL W/END COLOSTOMY & CLSR DSTL SGMT"] <- "CRC" NSQIPFinal$PRNCPTX[NSQIPFinal$PRNCPTX =="COLECTOMY PRTL W/RMVL TERMINAL ILEUM & ILEOCOLOS"] <- "CRC" NSQIPFinal$PRNCPTX[NSQIPFinal$PRNCPTX =="COLECTOMY PRTL W/SKIN LEVEL CECOST/COLOSTOMY"] <- "CRC" NSQIPFinal$PRNCPTX[NSQIPFinal$PRNCPTX =="COLECTOMY TOT ABD W/PROCTECTOMY ILEOANAL ANAST"] <- "CRC" NSQIPFinal$PRNCPTX[NSQIPFinal$PRNCPTX =="COLECTOMY TOT ABDL W/PROCTECTOMY W/CONTNT ILEOST"] <- "CRC" NSQIPFinal$PRNCPTX[NSQIPFinal$PRNCPTX =="COLECTOMY TOT ABDL W/PROCTECTOMY W/ILEOSTOMY"] <- "CRC" NSQIPFinal$PRNCPTX[NSQIPFinal$PRNCPTX =="COLOSTOMY/SKIN LEVEL CECOSTOMY"] <- "CRC" NSQIPFinal$PRNCPTX[NSQIPFinal$PRNCPTX =="EXC RCT TUM PROCTOTOMY TRANSSAC/TRANSCOCCYGEAL"] <- "CRC" NSQIPFinal$PRNCPTX[NSQIPFinal$PRNCPTX =="LAPAROSCOPY COLECTOMY PARTIAL W/ANASTOMOSIS"] <- "CRC" NSQIPFinal$PRNCPTX[NSQIPFinal$PRNCPTX =="LAPAROSCOPY SURG COLOSTOMY/SKN LVL CECOSTOMY"] <- "CRC" NSQIPFinal$PRNCPTX[NSQIPFinal$PRNCPTX =="LAPS COLCT TTL ABD W/PRCTECT ILEOANAL ANASTOMSIS"] <- "CRC" NSQIPFinal$PRNCPTX[NSQIPFinal$PRNCPTX =="LAPS COLECTMY PRTL W/COLOPXTSTMY LW ANAST W/CLST"] <- "CRC" NSQIPFinal$PRNCPTX[NSQIPFinal$PRNCPTX =="LAPS COLECTOMY ABDL W/PROCTECTOMY W/ILEOSTOMY"] <- "CRC" NSQIPFinal$PRNCPTX[NSQIPFinal$PRNCPTX =="LAPS COLECTOMY PRTL W/COLOPXTSTMY LW ANAST"] <- "CRC" NSQIPFinal$PRNCPTX[NSQIPFinal$PRNCPTX =="LAPS COLECTOMY PRTL W/END CLST & CLSR DSTL SGM"] <- "CRC" NSQIPFinal$PRNCPTX[NSQIPFinal$PRNCPTX =="LAPS COLECTOMY PRTL W/RMVL TERMINAL ILEUM"] <- "CRC" NSQIPFinal$PRNCPTX[NSQIPFinal$PRNCPTX =="LAPS COLECTOMY TOT W/O PRCTECT W/ILEOST/ILEOPXTS"] <- "CRC" NSQIPFinal$PRNCPTX[NSQIPFinal$PRNCPTX =="LAPS MOBLJ SPLENIC FLXR PFRMD W/PRTL COLECTOMY"] <- "CRC" NSQIPFinal$PRNCPTX[NSQIPFinal$PRNCPTX =="LAPS PROCTECTOMY ABDOMINOPERINEAL W/COLOSTOMY"] <- "CRC" NSQIPFinal$PRNCPTX[NSQIPFinal$PRNCPTX =="LAPS PROCTECTOMY COMBINED PULL-THRU W/RESERVOIR"] <- "CRC" NSQIPFinal$PRNCPTX[NSQIPFinal$PRNCPTX =="SUTR LG INTESTINE 1/MULT PERFORAT W/O COLOSTOMY"] <- "CRC" NSQIPFinal$PRNCPTX[NSQIPFinal$PRNCPTX =="UNLISTED LAPAROSCOPY PX INTESTINE XCP RECTUM"] <- "CRC" NSQIPFinal$PRNCPTX[NSQIPFinal$PRNCPTX =="COLOSTOMY/SKN LVL CECOSTOMY W/MULT BXS SPX"] <- "CRC" NSQIPFinal$PRNCPTX[NSQIPFinal$PRNCPTX =="PRCTECT CMBN ABDOMINOPRNL PULL-THRU PX"] <- "CRC" NSQIPFinal$PRNCPTX[NSQIPFinal$PRNCPTX =="PRCTECT CMBN PULL-THRU W/RSVR W/NTRSTM"] <- "CRC" NSQIPFinal$PRNCPTX[NSQIPFinal$PRNCPTX =="PRCTECT COMPL CMBN ABDOMINOPRNL W/CLST"] <- "CRC" NSQIPFinal$PRNCPTX[NSQIPFinal$PRNCPTX =="PRCTECT PRTL RESCJ RECTUM TABDL APPR"] <- "CRC" NSQIPFinal$PRNCPTX[NSQIPFinal$PRNCPTX =="PRCTECT PRTL W/O ANAST PRNL APPR"] <- "CRC" NSQIPFinal$PRNCPTX[NSQIPFinal$PRNCPTX =="PRCTECT PRTL W/ANAST ABDL & TRANSSAC APPROACH"] <- "CRC" NSQIPFinal$PRNCPTX[NSQIPFinal$PRNCPTX =="PRCTECT PRTL W/ANAST TRANSSAC APPR ONLY"] <- "CRC" NSQIPFinal$PRNCPTX[NSQIPFinal$PRNCPTX =="PRCTECT PRTL W/MUCOSEC ILEOANAL ANAST RSVR"] <- "CRC" ##Recoding Procedures into Gastric NSQIPFinal$PRNCPTX[NSQIPFinal$PRNCPTX =="EXC LOCAL MALIGNANT TUMOR STOMACH"] <- "Gastric" NSQIPFinal$PRNCPTX[NSQIPFinal$PRNCPTX =="EXC LOCAL ULCER/BENIGN TUMOR STOMACH"] <- "Gastric" NSQIPFinal$PRNCPTX[NSQIPFinal$PRNCPTX =="GASTRIC RSTCV W/PRTL GASTRECTOMY 50-100 CM"] <- "Gastric" NSQIPFinal$PRNCPTX[NSQIPFinal$PRNCPTX =="GASTRODUODENOSTOMY"] <- "Gastric" NSQIPFinal$PRNCPTX[NSQIPFinal$PRNCPTX =="GASTROJEJUNOSTOMY W/O VAGOTOMY"] <- "Gastric" NSQIPFinal$PRNCPTX[NSQIPFinal$PRNCPTX =="GASTROJEJUNOSTOMY W/VAGOTOMY ANY TYPE"] <- "Gastric" NSQIPFinal$PRNCPTX[NSQIPFinal$PRNCPTX =="GASTRORRHAPHY SUTR PRF8 DUOL/GSTR ULCER WND/INJ"] <- "Gastric" NSQIPFinal$PRNCPTX[NSQIPFinal$PRNCPTX =="GASTROTOMY W/SUTURE REPAIR BLEEDING ULCER"] <- "Gastric" NSQIPFinal$PRNCPTX[NSQIPFinal$PRNCPTX =="GSTRCT PRTL DSTL W/ROUX-EN-Y RCNSTJ"] <- "Gastric" NSQIPFinal$PRNCPTX[NSQIPFinal$PRNCPTX =="GSTRCT TOT W/ESOPHAGOENTEROSTOMY"] <- "Gastric" NSQIPFinal$PRNCPTX[NSQIPFinal$PRNCPTX =="GSTRCT TOT W/FRMJ INTSTINAL POUCH ANY TYPE"] <- "Gastric" NSQIPFinal$PRNCPTX[NSQIPFinal$PRNCPTX =="GSTRCT TOT W/ROUX-EN-Y RCNSTJ"] <- "Gastric" NSQIPFinal$PRNCPTX[NSQIPFinal$PRNCPTX =="GSTRCT PRTL DSTL W/GASTRODUODENOSTOMY"] <- "Gastric" NSQIPFinal$PRNCPTX[NSQIPFinal$PRNCPTX =="UNLISTED LAPAROSCOPIC PROCEDURE STOMACH"] <- "Gastric" NSQIPFinal$PRNCPTX[NSQIPFinal$PRNCPTX =="GSTRCT PRTL DSTL W/FRMJ INTSTINAL POUCH"] <- "Gastric" NSQIPFinal$PRNCPTX[NSQIPFinal$PRNCPTX =="GSTRCT PRTL DSTL W/FRMJ INTSTINAL POUCH"] <- "Gastric" ``` ```{r} ### Recoding mortality NSQIPFinal$DOpertoD[NSQIPFinal$DOpertoD == -99] <- "No" NSQIPFinal$DOpertoD[NSQIPFinal$DOpertoD == 0] <- "Yes" NSQIPFinal$DOpertoD[NSQIPFinal$DOpertoD == 1] <- "Yes" NSQIPFinal$DOpertoD[NSQIPFinal$DOpertoD == 2] <- "Yes" NSQIPFinal$DOpertoD[NSQIPFinal$DOpertoD == 3] <- "Yes" NSQIPFinal$DOpertoD[NSQIPFinal$DOpertoD == 4] <- "Yes" NSQIPFinal$DOpertoD[NSQIPFinal$DOpertoD == 5] <- "Yes" NSQIPFinal$DOpertoD[NSQIPFinal$DOpertoD == 6] <- "Yes" NSQIPFinal$DOpertoD[NSQIPFinal$DOpertoD == 7] <- "Yes" NSQIPFinal$DOpertoD[NSQIPFinal$DOpertoD == 8] <- "Yes" NSQIPFinal$DOpertoD[NSQIPFinal$DOpertoD == 9] <- "Yes" NSQIPFinal$DOpertoD[NSQIPFinal$DOpertoD == 10] <- "Yes" NSQIPFinal$DOpertoD[NSQIPFinal$DOpertoD == 11] <- "Yes" NSQIPFinal$DOpertoD[NSQIPFinal$DOpertoD == 12] <- "Yes" NSQIPFinal$DOpertoD[NSQIPFinal$DOpertoD == 13] <- "Yes" NSQIPFinal$DOpertoD[NSQIPFinal$DOpertoD == 14] <- "Yes" NSQIPFinal$DOpertoD[NSQIPFinal$DOpertoD == 15] <- "Yes" NSQIPFinal$DOpertoD[NSQIPFinal$DOpertoD == 16] <- "Yes" NSQIPFinal$DOpertoD[NSQIPFinal$DOpertoD == 17] <- "Yes" NSQIPFinal$DOpertoD[NSQIPFinal$DOpertoD == 18] <- "Yes" NSQIPFinal$DOpertoD[NSQIPFinal$DOpertoD == 19] <- "Yes" NSQIPFinal$DOpertoD[NSQIPFinal$DOpertoD == 20] <- "Yes" NSQIPFinal$DOpertoD[NSQIPFinal$DOpertoD == 21] <- "Yes" NSQIPFinal$DOpertoD[NSQIPFinal$DOpertoD == 22] <- "Yes" NSQIPFinal$DOpertoD[NSQIPFinal$DOpertoD == 23] <- "Yes" NSQIPFinal$DOpertoD[NSQIPFinal$DOpertoD == 24] <- "Yes" NSQIPFinal$DOpertoD[NSQIPFinal$DOpertoD == 25] <- "Yes" NSQIPFinal$DOpertoD[NSQIPFinal$DOpertoD == 26] <- "Yes" NSQIPFinal$DOpertoD[NSQIPFinal$DOpertoD == 27] <- "Yes" NSQIPFinal$DOpertoD[NSQIPFinal$DOpertoD == 28] <- "Yes" NSQIPFinal$DOpertoD[NSQIPFinal$DOpertoD == 29] <- "Yes" NSQIPFinal$DOpertoD[NSQIPFinal$DOpertoD == 30] <- "Yes" ``` ```{r} ### Remove patients who died NSQIPFinal$DOpertoD[NSQIPFinal$DOpertoD == "Yes"] <- NA ``` ```{r} NSQIPFinal$PRSEPIS[NSQIPFinal$PRSEPIS == "Sepsis"] <- NA NSQIPFinal$PRSEPIS[NSQIPFinal$PRSEPIS == "Septic Shock"] <- NA NSQIPFinal$PRSEPIS[NSQIPFinal$PRSEPIS == "SIRS"] <- NA NSQIPFinal$SEPSISPATOS[NSQIPFinal$SEPSISPATOS == "Yes"] <- NA NSQIPFinal$OTHSYSEP[NSQIPFinal$OTHSYSEP == "Sepsis"] <- NA ``` ```{r} ###remove patients who are on a ventilator NSQIPFinal$VENTILAT[NSQIPFinal$VENTILAT == "Yes"] <- NA ``` ```{r} ###remove patients who are on a Emergency NSQIPFinal$EMERGNCY[NSQIPFinal$EMERGNCY == "Yes"] <- NA ``` ```{r} NSQIPFinal$Age[NSQIPFinal$Age == "90+"] <- 90 NSQIPFinal$Age <- as.numeric(NSQIPFinal$Age) ``` ```{r} NSQIPFinal <- NSQIPFinal %>% mutate(NSQIPFinal, AgeB = ifelse(Age >= 85, "85+", ifelse(Age >= 75, "75-84", ifelse(Age >= 65, "65-74", ifelse(Age >=0, "0-65", NA))))) ``` ```{r} NSQIPFinal$RACE_NEW[NSQIPFinal$RACE_NEW == "American Indian or Alaska Native"] <- "Other" NSQIPFinal$RACE_NEW[NSQIPFinal$RACE_NEW == "Asian"] <- "Other" NSQIPFinal$RACE_NEW[NSQIPFinal$RACE_NEW == "Native Hawaiian or Pacific Islander"] <- "Other" NSQIPFinal$RACE_NEW[NSQIPFinal$RACE_NEW == "Black or African American"] <- "Black" NSQIPFinal$RACE_NEW[NSQIPFinal$RACE_NEW == "Unknown/Not Reported"] <- NA ``` ```{r} NSQIPFinal$ASACLAS[NSQIPFinal$ASACLAS == "5-Moribund"] <- NA NSQIPFinal$ASACLAS[NSQIPFinal$ASACLAS == "None assigned"] <- NA ``` ```{r} NSQIPFinal$DIABETES[NSQIPFinal$DIABETES == "INSULIN"] <- "Yes" NSQIPFinal$DIABETES[NSQIPFinal$DIABETES == "NON-INSULIN"] <- "Yes" ``` ```{r} ###Create new numeric column that will be used to create the MFI5 column 0, >1, and greater than >2 ##Diabeties recoded for MFI NSQIPFinal1 <- NSQIPFinal %>% mutate(NSQIPFinal, DiabetesMFI = ifelse(DIABETES == "INSULIN", "1", ifelse(DIABETES == "NON-INSULIN", "1", ifelse(DIABETES == "NO", "0", "NA")))) ``` ```{r} ###Create new numeric column that will be used to create the MFI5 column 0, >1, and greater than >2 ###CHF recoded for MFI NSQIPFinal2 <- NSQIPFinal1 %>% mutate(NSQIPFinal1, CHFMFI = ifelse(HXCHF == "Yes", "1", ifelse(HXCHF == "No", "0", "NA"))) table(NSQIPFinal2$CHFMFI) ``` ```{r} ###Create new numeric column that will be used to create the MFI5 column 0, >1, and greater than >2 ### COPD recoded for MFI NSQIPFinal3 <- NSQIPFinal2 %>% mutate(NSQIPFinal2, COPDMFI = ifelse(HXCOPD == "Yes", "1", ifelse(HXCOPD == "No", "0", "NA"))) table(NSQIPFinal3$ASA) ``` ```{r} ###Create new numeric column that will be used to create the MFI5 column 0, >1, and greater than >2 ### Hypertension with medications recoded for MFI NSQIPFinal4 <- NSQIPFinal3 %>% mutate(NSQIPFinal3, HYPERMEDMFI = ifelse(HYPERMED == "Yes", "1", ifelse(HYPERMED == "No", "0", "NA"))) ``` ```{r} ##making the columns numeric to add them properly NSQIPFinal4$HYPERMEDMFI <- as.numeric(NSQIPFinal4$HYPERMEDMFI) NSQIPFinal4$COPDMFI <- as.numeric(NSQIPFinal4$COPDMFI) NSQIPFinal4$CHFMFI <- as.numeric(NSQIPFinal4$CHFMFI) NSQIPFinal4$DiabetesMFI <- as.numeric(NSQIPFinal4$DiabetesMFI) ``` ```{r} ###Creating MFI column NSQIPFinal4$MFI5 <- (NSQIPFinal4$HYPERMEDMFI + NSQIPFinal4$COPDMFI + NSQIPFinal4$CHFMFI + NSQIPFinal4$DiabetesMFI) ``` ```{r} NSQIPFinal4$WEIGHT[NSQIPFinal4$WEIGHT ==-99] <- NA NSQIPFinal4$HEIGHT[NSQIPFinal4$HEIGHT ==-99] <- NA ``` ```{r} NSQIPFinal4$BMI <- (NSQIPFinal4$WEIGHT / NSQIPFinal4$HEIGHT / NSQIPFinal4$HEIGHT) *703 ``` ```{r} NSQIPFinalBMI <- NSQIPFinal4 %>% mutate(NSQIPFinal4, BMILabled = ifelse(BMI >= 40, "Morbidly Obese", ifelse(BMI >= 30, "Obese", ifelse(BMI >= 25, "Overweight", ifelse(BMI >=18.5, "Normal Weight", ifelse(BMI <= 18.49, "Underweight", NA)))))) ``` ```{r} NSQIPFinal5 <- NSQIPFinalBMI %>% mutate(NSQIPFinalBMI, LossofIndependence = ifelse(DISCHDEST == "Skilled Care, Not Home", "Yes", ifelse(DISCHDEST == "Rehab", "Yes", ifelse(DISCHDEST == "Unskilled Facility Not Home", "Yes", ifelse(DISCHDEST == "Separate Acute Care", "Yes", ifelse(DISCHDEST == "Expired", "NA", ifelse(DISCHDEST == "Unknown", "NA", "No"))))))) ``` ```{r} NSQIPFinal5$LossofIndependence[NSQIPFinal5$LossofIndependence == "NA"] <- NA ``` ```{r} NSQIPFinal5$DISCHDEST[NSQIPFinal5$DISCHDEST == "NA"] <- NA ``` ```{r} NSQIPFinal6 <- NSQIPFinal5 %>% mutate(NSQIPFinal5, ProcedureGroup = ifelse(PRNCPTX == "Hep", "Liver", ifelse(PRNCPTX == "Pan", "Pancreas", ifelse(PRNCPTX == "CRC", "Colorectal", ifelse(PRNCPTX == "Gastric", "Gastric", "NA"))))) ``` ```{r} NSQIPFinal6$ProcedureGroup[NSQIPFinal6$ProcedureGroup =="NA"] <- NA ``` ```{r} LossofIndependenceDF <- subset(NSQIPFinal6 , ProcedureGroup == "Liver" | ProcedureGroup == "Pancreas" | ProcedureGroup == "Colorectal" | ProcedureGroup == "Gastric") ``` ```{r} LossofIndependenceDT <- LossofIndependenceDF %>% mutate(LossofIndependenceDF, ModifiedFrailtyIndex5 = ifelse(MFI5 == 0, "0", ifelse(MFI5 == 1, "1", ifelse(MFI5 > 2, ">2", NA)))) ``` ```{r} LossofIndependenceDT1 <- LossofIndependenceDT %>% select(LossofIndependence, AgeB, SEX, BMILabled, RACE_NEW, STEROID, DIABETES, HYPERMED, ASACLAS, ASCITES, HXCHF, DYSPNEA, SMOKE, HXCOPD, DIALYSIS, OPRENAFL, DISCANCR, ModifiedFrailtyIndex5, ProcedureGroup) ``` ```{r} LossofIndependenceDT1 %>% tbl_summary( by = LossofIndependence, digits = all_continuous() ~ 2,) %>% add_p(pvalue_fun = ~style_pvalue(.x, digits = 2))%>% bold_p() %>% add_overall() %>% modify_header(label ~ "**Variable**") %>% modify_spanning_header(c("stat_1", "stat_2") ~ "**Loss of Independence*") %>% bold_labels() ``` ```{r} LOIOddsRatio <- LossofIndependenceDT1 %>% select(LossofIndependence, AgeB, SEX, BMILabled, RACE_NEW, STEROID, ASACLAS, ASCITES, DYSPNEA, SMOKE, DIALYSIS, OPRENAFL, ModifiedFrailtyIndex5, ProcedureGroup) ``` ```{r Create the binary outcome} LOIOddsRatio1 <- LOIOddsRatio %>% mutate(LOIOddsRatio, LOIOR = ifelse(LossofIndependence =="Yes", "1", ifelse(LossofIndependence =="No", "0", "NA"))) LOIOddsRatio1$LOIOR <- as.numeric(LOIOddsRatio1$LOIOR) ``` ```{r} ###changling the referent level LOIOddsRatio1$SEX <- as.factor(LOIOddsRatio1$SEX) LOIOddsRatio1$BMILabled <- as.factor(LOIOddsRatio1$BMILabled) LOIOddsRatio1$RACE_NEW <- as.factor(LOIOddsRatio1$RACE_NEW) LOIOddsRatio1$DYSPNEA <- as.factor(LOIOddsRatio1$DYSPNEA) LOIOddsRatio1$OPRENAFL <- as.factor(LOIOddsRatio1$OPRENAFL) LOIOddsRatio1$ModifiedFrailtyIndex5 <- as.factor(LOIOddsRatio1$ModifiedFrailtyIndex5) LOIOddsRatio1$SEX = relevel(LOIOddsRatio1$SEX, ref="male") LOIOddsRatio1$BMILabled = relevel(LOIOddsRatio1$BMILabled, ref="Normal Weight") LOIOddsRatio1$RACE_NEW = relevel(LOIOddsRatio1$RACE_NEW, ref="White") LOIOddsRatio1$DYSPNEA = relevel(LOIOddsRatio1$DYSPNEA, ref="No") LOIOddsRatio1$OPRENAFL = relevel(LOIOddsRatio1$OPRENAFL, ref="No Complication") LOIOddsRatio1$ModifiedFrailtyIndex5 = relevel(LOIOddsRatio1$ModifiedFrailtyIndex5, ref="0") ``` ```{r Univariant analysis} UV <- LOIOddsRatio1 %>% select(LOIOR, AgeB, SEX, BMILabled, RACE_NEW, STEROID, ASACLAS, ASCITES, DYSPNEA, SMOKE, DIALYSIS, OPRENAFL, ModifiedFrailtyIndex5, ProcedureGroup) %>% tbl_uvregression( method = glm, y = LOIOR, method.args = list(family = binomial), exponentiate = TRUE, pvalue_fun = ~style_pvalue(.x, digits = 2) ) %>% bold_p(t = 0.10) %>% bold_labels() %>% italicize_levels() ``` ```{r} LOIOddsRatio1 %>% select(LOIOR, AgeB, SEX, BMILabled, RACE_NEW, STEROID,ASACLAS, ASCITES, DYSPNEA, SMOKE, DIALYSIS, OPRENAFL, ModifiedFrailtyIndex5, ProcedureGroup) %>% tbl_uvregression( method = glm, y = LOIOR, method.args = list(family = binomial), exponentiate = TRUE, pvalue_fun = ~style_pvalue(.x, digits = 2) ) %>% bold_p(t = 0.10) %>% bold_labels() %>% italicize_levels() ``` ```{r} ###changling the referent level LOIOddsRatio1$SEX <- as.factor(LOIOddsRatio1$SEX) LOIOddsRatio1$BMILabled <- as.factor(LOIOddsRatio1$BMILabled) LOIOddsRatio1$RACE_NEW <- as.factor(LOIOddsRatio1$RACE_NEW) LOIOddsRatio1$DYSPNEA <- as.factor(LOIOddsRatio1$DYSPNEA) LOIOddsRatio1$OPRENAFL <- as.factor(LOIOddsRatio1$OPRENAFL) LOIOddsRatio1$ModifiedFrailtyIndex5 <- as.factor(LOIOddsRatio1$ModifiedFrailtyIndex5) LOIOddsRatio1$SEX = relevel(LOIOddsRatio1$SEX, ref="male") LOIOddsRatio1$BMILabled = relevel(LOIOddsRatio1$BMILabled, ref="Normal Weight") LOIOddsRatio1$RACE_NEW = relevel(LOIOddsRatio1$RACE_NEW, ref="White") LOIOddsRatio1$DYSPNEA = relevel(LOIOddsRatio1$DYSPNEA, ref="No") LOIOddsRatio1$OPRENAFL = relevel(LOIOddsRatio1$OPRENAFL, ref="No Complication") LOIOddsRatio1$ModifiedFrailtyIndex5 = relevel(LOIOddsRatio1$ModifiedFrailtyIndex5, ref="0") ``` ```{r} ####Multivariant analysis serious complications MVOR <- glm(LOIOR ~ AgeB + SEX + BMILabled+ RACE_NEW + STEROID + ASACLAS + ASCITES + DYSPNEA + SMOKE + DIALYSIS + OPRENAFL + ModifiedFrailtyIndex5 + ProcedureGroup , data = LOIOddsRatio1, family = binomial("logit"), na.action =na.omit) ``` ```{r} ###continue on to merge the table sets MVORTable <- tbl_regression(MVOR, exponentiate = T, pvalue_fun = ~style_pvalue(.x, digits = 2), ) %>% bold_p(t = 0.10) %>% bold_labels() %>% italicize_levels() ``` ```{r} tbl_merge( list(UV, MVORTable), tab_spanner = c("**Univariable**", "**Multivariable**") ) %>% bold_labels() %>% italicize_levels() ``` --- title: "Imputing Data/Predictive Modeling" author: "Abdimajid Mohamed" date: "2/28/2021" output: html_document ---``` ```{r} ###install.packages("mice") ### library(dplyr) library(gtsummary) library(survival) library(labelled) library(tidyverse) library(broom) library(ggplot2) library(survminer) library(pROC) library(rms) library(mice) library(VIM) library(nnet) library(ROCR) library(devtools) library(mice, warn.conflicts = FALSE) ``` ```{r} ###Imputing the data LOIOddsRatio1 <- LOIOddsRatio1 %>% select(LOIOR, AgeB, SEX, BMILabled, RACE_NEW, STEROID,ASACLAS, ASCITES, DYSPNEA, SMOKE, DIALYSIS, OPRENAFL, ModifiedFrailtyIndex5) LOIOddsRatio1$RACE_NEW <- as.factor(LOIOddsRatio1$RACE_NEW) LOIOddsRatio1$ASACLAS <- as.factor(LOIOddsRatio1$ASACLAS) LOIOddsRatio1$BMILabled <- as.factor(LOIOddsRatio1$BMILabled) LOIOddsRatio1$ModifiedFrailtyIndex5 <- as.factor(LOIOddsRatio1$ModifiedFrailtyIndex5) ``` ```{r} LOIImputed <-mice(LOIOddsRatio1) ``` ```{r} LOI1 = complete(LOIImputed,1) ``` ```{r} NSQIPRiskCalculatorDF <- LOI1 %>% select(LOIOR, AgeB, SEX, BMILabled, STEROID,ASACLAS, ASCITES, DYSPNEA, SMOKE, DIALYSIS, OPRENAFL) NSQIPRiskCalculatorDF <- NSQIPRiskCalculatorDF %>% remove_missing() PortlandDF <- LOI1 %>% select(LOIOR, AgeB, SEX, RACE_NEW, ModifiedFrailtyIndex5) PortlandDF <- PortlandDF %>% remove_missing() ``` ```{r} NSQIPRiskCalculatorModel <- glm(LOIOR~AgeB+SEX+BMILabled+STEROID+ASACLAS+ASCITES+DYSPNEA+SMOKE+DIALYSIS+OPRENAFL, family = binomial(link = "logit"), data = NSQIPRiskCalculatorDF) ``` ```{r} NSQIPPredict=predict(NSQIPRiskCalculatorModel) NSQIPPredictModel1=prediction(NSQIPPredict, NSQIPRiskCalculatorDF$LOIOR) plot(performance(NSQIPPredictModel1,"tpr","fpr")) %>% abline(a=0,b=1) ``` ```{r} x=performance(NSQIPPredictModel1,"acc") max=which.max(slot(x,"y.values")[[1]]) acc=slot(x,"y.values")[[1]][max] acc ``` ```{r} auc=performance(NSQIPPredictModel1,"auc") unlist(slot(auc,"y.values")) ``` ```{r} ci.auc(NSQIPRiskCalculatorDF$LOIOR, NSQIPPredict) ``` ```{r} PortlandModel <- glm(LOIOR~AgeB+SEX+RACE_NEW+ModifiedFrailtyIndex5, family = binomial(link = "logit"), data = PortlandDF) ``` ```{r} PortlandPredict=predict(PortlandModel) PortlandPredictModel1=prediction(PortlandPredict, PortlandDF$LOIOR) plot(performance(PortlandPredictModel1,"tpr","fpr")) %>% abline(a=0,b=1) ``` ```{r} x=performance(PortlandPredictModel1,"acc") max=which.max(slot(x,"y.values")[[1]]) acc=slot(x,"y.values")[[1]][max] acc ``` ```{r} auc=performance(PortlandPredictModel1,"auc") unlist(slot(auc,"y.values")) ``` ```{r} ci.auc(PortlandDF$LOIOR, PortlandPredict) ```
AUC Data LOI
--- title: "Imputing Data/Predictive Modeling" author: "Abdimajid Mohamed" date: "2/28/2021" output: html_document ---``` ```{r} ###install.packages("mice") ###install.packages("devtools") library(dplyr) library(gtsummary) library(survival) library(labelled) library(tidyverse) library(broom) library(ggplot2) library(survminer) library(pROC) library(rms) library(mice) library(VIM) library(nnet) library(ROCR) library(devtools) library(mice, warn.conflicts = FALSE) ``` ###Imputing the data md.pattern(LOIOddsRatio1) LOIImputed <-mice(LOIOddsRatio1) LOI1 = complete(LOIImputed,1) LOI2 = complete(LOIImputed,2) LOI3 = complete(LOIImputed,3) LOI4 = complete(LOIImputed,4) LOI5 = complete(LOIImputed,5) ```{r} load("ImputedDataComplete.RData") NSQIPRiskCalculatorDF <- LOI1 %>% select(LOIOR, AgeB, SEX, BMILabled, RACE_NEW, STEROID,ASACLAS, ASCITES, DYSPNEA, SMOKE, DIALYSIS, OPRENAFL) NSQIPRiskCalculatorDF <- NSQIPRiskCalculatorDF %>% remove_missing() PortlandDF <- LOI1 %>% select(LOIOR, AgeB, SEX, RACE_NEW, ModifiedFrailtyIndex5) PortlandDF <- PortlandDF %>% remove_missing() ``` ```{r} NSQIPRiskCalculatorModel <- glm(LOIOR~AgeB+SEX+BMILabled+RACE_NEW+STEROID+ASACLAS+ASCITES+DYSPNEA+SMOKE+DIALYSIS+OPRENAFL, family = binomial(link = "logit"), data = NSQIPRiskCalculatorDF) ``` ```{r} NSQIPPredict=predict(NSQIPRiskCalculatorModel) NSQIPPredictModel1=prediction(NSQIPPredict, NSQIPRiskCalculatorDF$LOIOR) plot(performance(NSQIPPredictModel1,"tpr","fpr")) %>% abline(a=0,b=1) ``` ```{r} x=performance(NSQIPPredictModel1,"acc") max=which.max(slot(x,"y.values")[[1]]) acc=slot(x,"y.values")[[1]][max] acc ``` ```{r} auc=performance(NSQIPPredictModel1,"auc") unlist(slot(auc,"y.values")) ``` ```{r} ci.auc(NSQIPRiskCalculatorDF$LOIOR, NSQIPPredict) ``` ```{r} PortlandModel <- glm(LOIOR~AgeB+SEX+ModifiedFrailtyIndex5, family = binomial(link = "logit"), data = PortlandDF) ``` ```{r} PortlandPredict=predict(PortlandModel) PortlandPredictModel1=prediction(PortlandPredict, PortlandDF$LOIOR) plot(performance(PortlandPredictModel1,"tpr","fpr")) %>% abline(a=0,b=1) ``` ```{r} x=performance(PortlandPredictModel1,"acc") max=which.max(slot(x,"y.values")[[1]]) acc=slot(x,"y.values")[[1]][max] acc ``` ```{r} auc=performance(PortlandPredictModel1,"auc") unlist(slot(auc,"y.values")) ``` ```{r} ci.auc(PortlandDF$LOIOR, PortlandPredict) ```
Loss of Independence Demographic Tables/Odds Ratio
--- title: "Loss of Independence" author: "Abdimajid Mohamed" date: "2/24/2021" output: html_document --- ```{r} # Important packages to load in library(dplyr) library(gtsummary) library(survival) library(labelled) library(tidyverse) library(broom) library(ggplot2) library(survminer) library(VIM) ``` ```{r} load("NSQIPFinal.RData") ``` ##subset surgspec patients only general surgery patients NSQIPGENSURG <- subset(NSQIPALLYEARS, SURGSPEC == "General Surgery") ###Subset patients as inpatient, elective, independent status, NSQIPInpatient <- subset(NSQIPGENSURG, INOUT == "Inpatient") NSQIPElective <- subset(NSQIPInpatient, ELECTSURG == "Yes") NSQIPFinal <- subset(NSQIPElective, FNSTATUS2 == "Independent") ```{r} ##Recoding Procedures into Hep NSQIPFinal$PRNCPTX[NSQIPFinal$PRNCPTX =="ANAST INTRAHEPATC DUCTS & GI TRACT"] <- "Hep" NSQIPFinal$PRNCPTX[NSQIPFinal$PRNCPTX =="ANAST ROUX-EN-Y INTRAHEPATC BILIARY DUCTS & GI"] <- "Hep" NSQIPFinal$PRNCPTX[NSQIPFinal$PRNCPTX =="ANAST ROUX-EN-Y XTRHEPATC BILIARY DUCTS & GI"] <- "Hep" NSQIPFinal$PRNCPTX[NSQIPFinal$PRNCPTX =="ANAST XTRHEPATC BILIARY DUCTS & GI TRACT"] <- "Hep" NSQIPFinal$PRNCPTX[NSQIPFinal$PRNCPTX =="CHOLECYSTOENTEROSTOMY DIRECT"] <- "Hep" NSQIPFinal$PRNCPTX[NSQIPFinal$PRNCPTX =="CHOLECYSTOENTEROSTOMY ROUX-EN-Y"] <- "Hep" NSQIPFinal$PRNCPTX[NSQIPFinal$PRNCPTX =="CHOLEDOCHOT/OST W/O SPHNCTROTOMY/SPHNCTROP"] <- "Hep" NSQIPFinal$PRNCPTX[NSQIPFinal$PRNCPTX =="CHOLEDOCHOT/OST W/SPHNCTROTOMY/SPHNCTROP"] <- "Hep" NSQIPFinal$PRNCPTX[NSQIPFinal$PRNCPTX =="EXC BILE DUX TUM W/WO PRIM RPR XTRHEPATC"] <- "Hep" NSQIPFinal$PRNCPTX[NSQIPFinal$PRNCPTX =="EXC BILE DUX TUM W/WO PRIM RPR INTRAHEPATC"] <- "Hep" NSQIPFinal$PRNCPTX[NSQIPFinal$PRNCPTX =="EXCISION CHOLEDOCHAL CYST"] <- "Hep" NSQIPFinal$PRNCPTX[NSQIPFinal$PRNCPTX =="HEPATECTOMY RESCJ PARTIAL LOBECTOMY"] <- "Hep" NSQIPFinal$PRNCPTX[NSQIPFinal$PRNCPTX =="HEPATECTOMY RESCJ TOTAL LEFT LOBECTOMY"] <- "Hep" NSQIPFinal$PRNCPTX[NSQIPFinal$PRNCPTX =="HEPATECTOMY RESCJ TOTAL RIGHT LOBECTOMY"] <- "Hep" NSQIPFinal$PRNCPTX[NSQIPFinal$PRNCPTX =="HEPATECTOMY RESCJ TRISEGMENTECTOMY"] <- "Hep" NSQIPFinal$PRNCPTX[NSQIPFinal$PRNCPTX =="HEPATOTOMY OPEN DRAINAGE ABSCESS/CYST 1/2 STAGES"] <- "Hep" NSQIPFinal$PRNCPTX[NSQIPFinal$PRNCPTX =="SUTURE EXTRAHEPATIC BILE DUCT PRE-EXIST INJURY"] <- "Hep" NSQIPFinal$PRNCPTX[NSQIPFinal$PRNCPTX =="TRANSDUOL SPHINCTEROT/PLASTY W/WO RMVL CALCULUS"] <- "Hep" NSQIPFinal$PRNCPTX[NSQIPFinal$PRNCPTX =="UNLIS LAPAROSCOPIC PROCEDURE LIVER"] <- "Hep" NSQIPFinal$PRNCPTX[NSQIPFinal$PRNCPTX =="UNLISTED LAPAROSCOPY PROCEDURE BILIARY TRACT"] <- "Hep" NSQIPFinal$PRNCPTX[NSQIPFinal$PRNCPTX =="EXPL CONGENITAL ATRESIA BILE DUCTS"] <- "Hep" ##Recoding Procedures into PanNSQIPFinal$PRNCPTX[NSQIPFinal$PRNCPTX ==""] <- "Pan" NSQIPFinal$PRNCPTX[NSQIPFinal$PRNCPTX =="EXCISION LESION PANCREAS"] <- "Pan" NSQIPFinal$PRNCPTX[NSQIPFinal$PRNCPTX =="PANCREATECTOMY TOTAL"] <- "Pan" NSQIPFinal$PRNCPTX[NSQIPFinal$PRNCPTX =="PANCREATECTOMY W/TRNSPLJ PANCREAS/ISLET CELLS"] <- "Pan" NSQIPFinal$PRNCPTX[NSQIPFinal$PRNCPTX =="PANCREATICOJEJUNOSTOMY SIDE-TO-SIDE ANAST"] <- "Pan" NSQIPFinal$PRNCPTX[NSQIPFinal$PRNCPTX =="PELVIC EXENTERATION COLORECTAL MALIGNANCY"] <- "Pan" NSQIPFinal$PRNCPTX[NSQIPFinal$PRNCPTX =="PELVIC EXENTERATION COMPLETE MALIGNANCY"] <- "Pan" NSQIPFinal$PRNCPTX[NSQIPFinal$PRNCPTX =="PNCRTECT PROX STOT W/PANCREATOJEJUNOSTOMY"] <- "Pan" NSQIPFinal$PRNCPTX[NSQIPFinal$PRNCPTX =="PNCRTECT W/PANCREATOJEJUNOSTOMY"] <- "Pan" NSQIPFinal$PRNCPTX[NSQIPFinal$PRNCPTX =="PNCRTECT WHIPPLE W/O PANCREATOJEJUNOSTOMY"] <- "Pan" NSQIPFinal$PRNCPTX[NSQIPFinal$PRNCPTX =="PROCTOPEXY W/SIGMOID RESCJ ABDL APPR"] <- "Pan" NSQIPFinal$PRNCPTX[NSQIPFinal$PRNCPTX =="RESECJ/DBRDMT PANCREAS NECROTIZING PANCREATITIS"] <- "Pan" NSQIPFinal$PRNCPTX[NSQIPFinal$PRNCPTX =="EXCISION AMPULLA VATER"] <- "Pan" NSQIPFinal$PRNCPTX[NSQIPFinal$PRNCPTX =="INT ANAST PANCREATIC CYST GI TRACT DIRECT"] <- "Pan" NSQIPFinal$PRNCPTX[NSQIPFinal$PRNCPTX =="INT ANAST PANCREATIC CYST GI TRACT ROUX-EN-Y"] <- "Pan" NSQIPFinal$PRNCPTX[NSQIPFinal$PRNCPTX =="LAPS SURG ABLTJ 1/> LVR TUM RF"] <- "Pan" NSQIPFinal$PRNCPTX[NSQIPFinal$PRNCPTX =="PNCRTECT DSTL NR-TOT W/PRSRV DUO CHLD-TYP PX"] <- "Pan" NSQIPFinal$PRNCPTX[NSQIPFinal$PRNCPTX =="PNCRTECT DSTL STOT W/O PNCRTCOJEJUNOSTOMY"] <- "Pan" NSQIPFinal$PRNCPTX[NSQIPFinal$PRNCPTX =="PNCRTECT DSTL STOT W/PNCRTCOJEJUNOSTOMY"] <- "Pan" NSQIPFinal$PRNCPTX[NSQIPFinal$PRNCPTX =="PNCRTECT PROX STOT W/O PANCREATOJEJUNOSTOMY"] <- "Pan" NSQIPFinal$PRNCPTX[NSQIPFinal$PRNCPTX =="PNCRTECT PROX STOT W/O PANCREATOJEJUNOSTOMY"] <- "Pan" ##Recoding Procedures into Colorectal (col+pro) NSQIPFinal$PRNCPTX[NSQIPFinal$PRNCPTX =="COLCT TOT ABDL W/O PRCTECT W/CONTINENT ILEOST"] <- "CRC" NSQIPFinal$PRNCPTX[NSQIPFinal$PRNCPTX =="COLCT TOT ABDL W/O PRCTECT W/ILEOST/ILEOPXTS"] <- "CRC" NSQIPFinal$PRNCPTX[NSQIPFinal$PRNCPTX =="COLCT TTL ABD W/PRCTECT ILEOANAL ANAST & RSVR"] <-"CRC" NSQIPFinal$PRNCPTX[NSQIPFinal$PRNCPTX =="COLECTOMY PARTIAL W/ANASTOMOSIS"] <- "CRC" NSQIPFinal$PRNCPTX[NSQIPFinal$PRNCPTX =="COLECTOMY PRTL ABDOMINAL & TRANSANAL APPROACH"] <-"CRC" NSQIPFinal$PRNCPTX[NSQIPFinal$PRNCPTX =="COLECTOMY PRTL W/COLOPROCTOSTOMY"] <- "CRC" NSQIPFinal$PRNCPTX[NSQIPFinal$PRNCPTX =="COLECTOMY PRTL W/COLOPROCTOSTOMY & COLOSTOMY"] <- "CRC" NSQIPFinal$PRNCPTX[NSQIPFinal$PRNCPTX =="COLECTOMY PRTL W/COLOST/ILEOST & MUCOFISTULA"] <- "CRC" NSQIPFinal$PRNCPTX[NSQIPFinal$PRNCPTX =="COLECTOMY PRTL W/END COLOSTOMY & CLSR DSTL SGMT"] <- "CRC" NSQIPFinal$PRNCPTX[NSQIPFinal$PRNCPTX =="COLECTOMY PRTL W/RMVL TERMINAL ILEUM & ILEOCOLOS"] <- "CRC" NSQIPFinal$PRNCPTX[NSQIPFinal$PRNCPTX =="COLECTOMY PRTL W/SKIN LEVEL CECOST/COLOSTOMY"] <- "CRC" NSQIPFinal$PRNCPTX[NSQIPFinal$PRNCPTX =="COLECTOMY TOT ABD W/PROCTECTOMY ILEOANAL ANAST"] <- "CRC" NSQIPFinal$PRNCPTX[NSQIPFinal$PRNCPTX =="COLECTOMY TOT ABDL W/PROCTECTOMY W/CONTNT ILEOST"] <- "CRC" NSQIPFinal$PRNCPTX[NSQIPFinal$PRNCPTX =="COLECTOMY TOT ABDL W/PROCTECTOMY W/ILEOSTOMY"] <- "CRC" NSQIPFinal$PRNCPTX[NSQIPFinal$PRNCPTX =="COLOSTOMY/SKIN LEVEL CECOSTOMY"] <- "CRC" NSQIPFinal$PRNCPTX[NSQIPFinal$PRNCPTX =="EXC RCT TUM PROCTOTOMY TRANSSAC/TRANSCOCCYGEAL"] <- "CRC" NSQIPFinal$PRNCPTX[NSQIPFinal$PRNCPTX =="LAPAROSCOPY COLECTOMY PARTIAL W/ANASTOMOSIS"] <- "CRC" NSQIPFinal$PRNCPTX[NSQIPFinal$PRNCPTX =="LAPAROSCOPY SURG COLOSTOMY/SKN LVL CECOSTOMY"] <- "CRC" NSQIPFinal$PRNCPTX[NSQIPFinal$PRNCPTX =="LAPS COLCT TTL ABD W/PRCTECT ILEOANAL ANASTOMSIS"] <- "CRC" NSQIPFinal$PRNCPTX[NSQIPFinal$PRNCPTX =="LAPS COLECTMY PRTL W/COLOPXTSTMY LW ANAST W/CLST"] <- "CRC" NSQIPFinal$PRNCPTX[NSQIPFinal$PRNCPTX =="LAPS COLECTOMY ABDL W/PROCTECTOMY W/ILEOSTOMY"] <- "CRC" NSQIPFinal$PRNCPTX[NSQIPFinal$PRNCPTX =="LAPS COLECTOMY PRTL W/COLOPXTSTMY LW ANAST"] <- "CRC" NSQIPFinal$PRNCPTX[NSQIPFinal$PRNCPTX =="LAPS COLECTOMY PRTL W/END CLST & CLSR DSTL SGM"] <- "CRC" NSQIPFinal$PRNCPTX[NSQIPFinal$PRNCPTX =="LAPS COLECTOMY PRTL W/RMVL TERMINAL ILEUM"] <- "CRC" NSQIPFinal$PRNCPTX[NSQIPFinal$PRNCPTX =="LAPS COLECTOMY TOT W/O PRCTECT W/ILEOST/ILEOPXTS"] <- "CRC" NSQIPFinal$PRNCPTX[NSQIPFinal$PRNCPTX =="LAPS MOBLJ SPLENIC FLXR PFRMD W/PRTL COLECTOMY"] <- "CRC" NSQIPFinal$PRNCPTX[NSQIPFinal$PRNCPTX =="LAPS PROCTECTOMY ABDOMINOPERINEAL W/COLOSTOMY"] <- "CRC" NSQIPFinal$PRNCPTX[NSQIPFinal$PRNCPTX =="LAPS PROCTECTOMY COMBINED PULL-THRU W/RESERVOIR"] <- "CRC" NSQIPFinal$PRNCPTX[NSQIPFinal$PRNCPTX =="SUTR LG INTESTINE 1/MULT PERFORAT W/O COLOSTOMY"] <- "CRC" NSQIPFinal$PRNCPTX[NSQIPFinal$PRNCPTX =="UNLISTED LAPAROSCOPY PX INTESTINE XCP RECTUM"] <- "CRC" NSQIPFinal$PRNCPTX[NSQIPFinal$PRNCPTX =="COLOSTOMY/SKN LVL CECOSTOMY W/MULT BXS SPX"] <- "CRC" NSQIPFinal$PRNCPTX[NSQIPFinal$PRNCPTX =="PRCTECT CMBN ABDOMINOPRNL PULL-THRU PX"] <- "CRC" NSQIPFinal$PRNCPTX[NSQIPFinal$PRNCPTX =="PRCTECT CMBN PULL-THRU W/RSVR W/NTRSTM"] <- "CRC" NSQIPFinal$PRNCPTX[NSQIPFinal$PRNCPTX =="PRCTECT COMPL CMBN ABDOMINOPRNL W/CLST"] <- "CRC" NSQIPFinal$PRNCPTX[NSQIPFinal$PRNCPTX =="PRCTECT PRTL RESCJ RECTUM TABDL APPR"] <- "CRC" NSQIPFinal$PRNCPTX[NSQIPFinal$PRNCPTX =="PRCTECT PRTL W/O ANAST PRNL APPR"] <- "CRC" NSQIPFinal$PRNCPTX[NSQIPFinal$PRNCPTX =="PRCTECT PRTL W/ANAST ABDL & TRANSSAC APPROACH"] <- "CRC" NSQIPFinal$PRNCPTX[NSQIPFinal$PRNCPTX =="PRCTECT PRTL W/ANAST TRANSSAC APPR ONLY"] <- "CRC" NSQIPFinal$PRNCPTX[NSQIPFinal$PRNCPTX =="PRCTECT PRTL W/MUCOSEC ILEOANAL ANAST RSVR"] <- "CRC" ##Recoding Procedures into Gastric NSQIPFinal$PRNCPTX[NSQIPFinal$PRNCPTX =="EXC LOCAL MALIGNANT TUMOR STOMACH"] <- "Gastric" NSQIPFinal$PRNCPTX[NSQIPFinal$PRNCPTX =="EXC LOCAL ULCER/BENIGN TUMOR STOMACH"] <- "Gastric" NSQIPFinal$PRNCPTX[NSQIPFinal$PRNCPTX =="GASTRIC RSTCV W/PRTL GASTRECTOMY 50-100 CM"] <- "Gastric" NSQIPFinal$PRNCPTX[NSQIPFinal$PRNCPTX =="GASTRODUODENOSTOMY"] <- "Gastric" NSQIPFinal$PRNCPTX[NSQIPFinal$PRNCPTX =="GASTROJEJUNOSTOMY W/O VAGOTOMY"] <- "Gastric" NSQIPFinal$PRNCPTX[NSQIPFinal$PRNCPTX =="GASTROJEJUNOSTOMY W/VAGOTOMY ANY TYPE"] <- "Gastric" NSQIPFinal$PRNCPTX[NSQIPFinal$PRNCPTX =="GASTRORRHAPHY SUTR PRF8 DUOL/GSTR ULCER WND/INJ"] <- "Gastric" NSQIPFinal$PRNCPTX[NSQIPFinal$PRNCPTX =="GASTROTOMY W/SUTURE REPAIR BLEEDING ULCER"] <- "Gastric" NSQIPFinal$PRNCPTX[NSQIPFinal$PRNCPTX =="GSTRCT PRTL DSTL W/ROUX-EN-Y RCNSTJ"] <- "Gastric" NSQIPFinal$PRNCPTX[NSQIPFinal$PRNCPTX =="GSTRCT TOT W/ESOPHAGOENTEROSTOMY"] <- "Gastric" NSQIPFinal$PRNCPTX[NSQIPFinal$PRNCPTX =="GSTRCT TOT W/FRMJ INTSTINAL POUCH ANY TYPE"] <- "Gastric" NSQIPFinal$PRNCPTX[NSQIPFinal$PRNCPTX =="GSTRCT TOT W/ROUX-EN-Y RCNSTJ"] <- "Gastric" NSQIPFinal$PRNCPTX[NSQIPFinal$PRNCPTX =="GSTRCT PRTL DSTL W/GASTRODUODENOSTOMY"] <- "Gastric" NSQIPFinal$PRNCPTX[NSQIPFinal$PRNCPTX =="UNLISTED LAPAROSCOPIC PROCEDURE STOMACH"] <- "Gastric" NSQIPFinal$PRNCPTX[NSQIPFinal$PRNCPTX =="GSTRCT PRTL DSTL W/FRMJ INTSTINAL POUCH"] <- "Gastric" NSQIPFinal$PRNCPTX[NSQIPFinal$PRNCPTX =="GSTRCT PRTL DSTL W/FRMJ INTSTINAL POUCH"] <- "Gastric" ``` ```{r} ### Recoding mortality NSQIPFinal$DOpertoD[NSQIPFinal$DOpertoD == -99] <- "No" NSQIPFinal$DOpertoD[NSQIPFinal$DOpertoD == 0] <- "Yes" NSQIPFinal$DOpertoD[NSQIPFinal$DOpertoD == 1] <- "Yes" NSQIPFinal$DOpertoD[NSQIPFinal$DOpertoD == 2] <- "Yes" NSQIPFinal$DOpertoD[NSQIPFinal$DOpertoD == 3] <- "Yes" NSQIPFinal$DOpertoD[NSQIPFinal$DOpertoD == 4] <- "Yes" NSQIPFinal$DOpertoD[NSQIPFinal$DOpertoD == 5] <- "Yes" NSQIPFinal$DOpertoD[NSQIPFinal$DOpertoD == 6] <- "Yes" NSQIPFinal$DOpertoD[NSQIPFinal$DOpertoD == 7] <- "Yes" NSQIPFinal$DOpertoD[NSQIPFinal$DOpertoD == 8] <- "Yes" NSQIPFinal$DOpertoD[NSQIPFinal$DOpertoD == 9] <- "Yes" NSQIPFinal$DOpertoD[NSQIPFinal$DOpertoD == 10] <- "Yes" NSQIPFinal$DOpertoD[NSQIPFinal$DOpertoD == 11] <- "Yes" NSQIPFinal$DOpertoD[NSQIPFinal$DOpertoD == 12] <- "Yes" NSQIPFinal$DOpertoD[NSQIPFinal$DOpertoD == 13] <- "Yes" NSQIPFinal$DOpertoD[NSQIPFinal$DOpertoD == 14] <- "Yes" NSQIPFinal$DOpertoD[NSQIPFinal$DOpertoD == 15] <- "Yes" NSQIPFinal$DOpertoD[NSQIPFinal$DOpertoD == 16] <- "Yes" NSQIPFinal$DOpertoD[NSQIPFinal$DOpertoD == 17] <- "Yes" NSQIPFinal$DOpertoD[NSQIPFinal$DOpertoD == 18] <- "Yes" NSQIPFinal$DOpertoD[NSQIPFinal$DOpertoD == 19] <- "Yes" NSQIPFinal$DOpertoD[NSQIPFinal$DOpertoD == 20] <- "Yes" NSQIPFinal$DOpertoD[NSQIPFinal$DOpertoD == 21] <- "Yes" NSQIPFinal$DOpertoD[NSQIPFinal$DOpertoD == 22] <- "Yes" NSQIPFinal$DOpertoD[NSQIPFinal$DOpertoD == 23] <- "Yes" NSQIPFinal$DOpertoD[NSQIPFinal$DOpertoD == 24] <- "Yes" NSQIPFinal$DOpertoD[NSQIPFinal$DOpertoD == 25] <- "Yes" NSQIPFinal$DOpertoD[NSQIPFinal$DOpertoD == 26] <- "Yes" NSQIPFinal$DOpertoD[NSQIPFinal$DOpertoD == 27] <- "Yes" NSQIPFinal$DOpertoD[NSQIPFinal$DOpertoD == 28] <- "Yes" NSQIPFinal$DOpertoD[NSQIPFinal$DOpertoD == 29] <- "Yes" NSQIPFinal$DOpertoD[NSQIPFinal$DOpertoD == 30] <- "Yes" ``` ```{r} ### Remove patients who died NSQIPFinal$DOpertoD[NSQIPFinal$DOpertoD == "Yes"] <- NA ``` ```{r} NSQIPFinal$PRSEPIS[NSQIPFinal$PRSEPIS == "Sepsis"] <- NA NSQIPFinal$PRSEPIS[NSQIPFinal$PRSEPIS == "Septic Shock"] <- NA NSQIPFinal$PRSEPIS[NSQIPFinal$PRSEPIS == "SIRS"] <- NA NSQIPFinal$SEPSISPATOS[NSQIPFinal$SEPSISPATOS == "Yes"] <- NA NSQIPFinal$OTHSYSEP[NSQIPFinal$OTHSYSEP == "Sepsis"] <- NA ``` ```{r} ###remove patients who are on a ventilator NSQIPFinal$VENTILAT[NSQIPFinal$VENTILAT == "Yes"] <- NA ``` ```{r} ###remove patients who are on a Emergency NSQIPFinal$EMERGNCY[NSQIPFinal$EMERGNCY == "Yes"] <- NA ``` ```{r} NSQIPFinal$Age[NSQIPFinal$Age == "90+"] <- 90 NSQIPFinal$Age <- as.numeric(NSQIPFinal$Age) ``` ```{r} NSQIPFinal <- NSQIPFinal %>% mutate(NSQIPFinal, AgeB = ifelse(Age >= 85, "85+", ifelse(Age >= 75, "75-84", ifelse(Age >= 65, "65-74", ifelse(Age >=0, "0-65", NA))))) ``` ```{r} NSQIPFinal$RACE_NEW[NSQIPFinal$RACE_NEW == "American Indian or Alaska Native"] <- "Other" NSQIPFinal$RACE_NEW[NSQIPFinal$RACE_NEW == "Asian"] <- "Other" NSQIPFinal$RACE_NEW[NSQIPFinal$RACE_NEW == "Native Hawaiian or Pacific Islander"] <- "Other" NSQIPFinal$RACE_NEW[NSQIPFinal$RACE_NEW == "Black or African American"] <- "Black" NSQIPFinal$RACE_NEW[NSQIPFinal$RACE_NEW == "Unknown/Not Reported"] <- NA ``` ```{r} NSQIPFinal$ASACLAS[NSQIPFinal$ASACLAS == "5-Moribund"] <- NA NSQIPFinal$ASACLAS[NSQIPFinal$ASACLAS == "None assigned"] <- NA ``` ```{r} NSQIPFinal$DIABETES[NSQIPFinal$DIABETES == "INSULIN"] <- "Yes" NSQIPFinal$DIABETES[NSQIPFinal$DIABETES == "NON-INSULIN"] <- "Yes" ``` ```{r} ###Create new numeric column that will be used to create the MFI5 column 0, >1, and greater than >2 ##Diabeties recoded for MFI NSQIPFinal1 <- NSQIPFinal %>% mutate(NSQIPFinal, DiabetesMFI = ifelse(DIABETES == "INSULIN", "1", ifelse(DIABETES == "NON-INSULIN", "1", ifelse(DIABETES == "NO", "0", "NA")))) ``` ```{r} ###Create new numeric column that will be used to create the MFI5 column 0, >1, and greater than >2 ###CHF recoded for MFI NSQIPFinal2 <- NSQIPFinal1 %>% mutate(NSQIPFinal1, CHFMFI = ifelse(HXCHF == "Yes", "1", ifelse(HXCHF == "No", "0", "NA"))) table(NSQIPFinal2$CHFMFI) ``` ```{r} ###Create new numeric column that will be used to create the MFI5 column 0, >1, and greater than >2 ### COPD recoded for MFI NSQIPFinal3 <- NSQIPFinal2 %>% mutate(NSQIPFinal2, COPDMFI = ifelse(HXCOPD == "Yes", "1", ifelse(HXCOPD == "No", "0", "NA"))) table(NSQIPFinal3$ASA) ``` ```{r} ###Create new numeric column that will be used to create the MFI5 column 0, >1, and greater than >2 ### Hypertension with medications recoded for MFI NSQIPFinal4 <- NSQIPFinal3 %>% mutate(NSQIPFinal3, HYPERMEDMFI = ifelse(HYPERMED == "Yes", "1", ifelse(HYPERMED == "No", "0", "NA"))) table(NSQIPFinal4$hyper) ``` ```{r} ##making the columns numeric to add them properly NSQIPFinal4$HYPERMEDMFI <- as.numeric(NSQIPFinal4$HYPERMEDMFI) NSQIPFinal4$COPDMFI <- as.numeric(NSQIPFinal4$COPDMFI) NSQIPFinal4$CHFMFI <- as.numeric(NSQIPFinal4$CHFMFI) NSQIPFinal4$DiabetesMFI <- as.numeric(NSQIPFinal4$DiabetesMFI) ``` ```{r} ###Creating MFI column NSQIPFinal4$MFI5 <- (NSQIPFinal4$HYPERMEDMFI + NSQIPFinal4$COPDMFI + NSQIPFinal4$CHFMFI + NSQIPFinal4$DiabetesMFI) ``` ```{r} NSQIPFinal4$WEIGHT[NSQIPFinal4$WEIGHT ==-99] <- NA NSQIPFinal4$HEIGHT[NSQIPFinal4$HEIGHT ==-99] <- NA ``` ```{r} NSQIPFinal4$BMI <- (NSQIPFinal4$WEIGHT / NSQIPFinal4$HEIGHT / NSQIPFinal4$HEIGHT) *703 ``` ```{r} NSQIPFinalBMI <- NSQIPFinal4 %>% mutate(NSQIPFinal4, BMILabled = ifelse(BMI >= 40, "Morbidly Obese", ifelse(BMI >= 30, "Obese", ifelse(BMI >= 25, "Overweight", ifelse(BMI >=18.5, "Normal Weight", ifelse(BMI <= 18.49, "Underweight", NA)))))) ``` ```{r} NSQIPFinal5 <- NSQIPFinalBMI %>% mutate(NSQIPFinalBMI, LossofIndependence = ifelse(DISCHDEST == "Skilled Care, Not Home", "Yes", ifelse(DISCHDEST == "Rehab", "Yes", ifelse(DISCHDEST == "Unskilled Facility Not Home", "Yes", ifelse(DISCHDEST == "Separate Acute Care", "Yes", ifelse(DISCHDEST == "Expired", "NA", ifelse(DISCHDEST == "Unknown", "NA", "No"))))))) ``` ```{r} NSQIPFinal5$LossofIndependence[NSQIPFinal5$LossofIndependence == "NA"] <- NA ``` ```{r} NSQIPFinal5$DISCHDEST[NSQIPFinal5$DISCHDEST == "NA"] <- NA ``` ```{r} NSQIPFinal6 <- NSQIPFinal5 %>% mutate(NSQIPFinal5, ProcedureGroup = ifelse(PRNCPTX == "Hep", "Liver", ifelse(PRNCPTX == "Pan", "Pancreas", ifelse(PRNCPTX == "CRC", "Colorectal", ifelse(PRNCPTX == "Gastric", "Gastric", "NA"))))) ``` ```{r} NSQIPFinal6$ProcedureGroup[NSQIPFinal6$ProcedureGroup =="NA"] <- NA ``` ```{r} LossofIndependenceDF <- subset(NSQIPFinal6 , ProcedureGroup == "Liver" | ProcedureGroup == "Pancreas" | ProcedureGroup == "Colorectal" | ProcedureGroup == "Gastric") ``` ```{r} LossofIndependenceDT <- LossofIndependenceDF %>% mutate(LossofIndependenceDF, ModifiedFrailtyIndex5 = ifelse(MFI5 == 0, "0", ifelse(MFI5 == 1, "1", ifelse(MFI5 > 2, ">2", NA)))) ``` ```{r} LossofIndependenceDT1 <- LossofIndependenceDT %>% select(LossofIndependence, AgeB, SEX, BMILabled, RACE_NEW, STEROID, DIABETES, HYPERMED, ASACLAS, ASCITES, HXCHF, DYSPNEA, SMOKE, HXCOPD, DIALYSIS, OPRENAFL, DISCANCR, ModifiedFrailtyIndex5, ProcedureGroup) ``` ```{r} LossofIndependenceDT1 %>% tbl_summary( by = LossofIndependence, digits = all_continuous() ~ 2,) %>% add_p(pvalue_fun = ~style_pvalue(.x, digits = 2))%>% bold_p() %>% add_overall() %>% modify_header(label ~ "**Variable**") %>% modify_spanning_header(c("stat_1", "stat_2") ~ "**Loss of Independence*") %>% bold_labels() ``` ```{r} LOIOddsRatio <- LossofIndependenceDT1 %>% select(LossofIndependence, AgeB, SEX, BMILabled, RACE_NEW, STEROID, ASACLAS, ASCITES, DYSPNEA, SMOKE, DIALYSIS, OPRENAFL, ModifiedFrailtyIndex5, ProcedureGroup) ``` ```{r Create the binary outcome} LOIOddsRatio1 <- LOIOddsRatio %>% mutate(LOIOddsRatio, LOIOR = ifelse(LossofIndependence =="Yes", "1", ifelse(LossofIndependence =="No", "0", "NA"))) LOIOddsRatio1$LOIOR <- as.numeric(LOIOddsRatio1$LOIOR) ``` ```{r} ###changling the referent level LOIOddsRatio1$SEX <- as.factor(LOIOddsRatio1$SEX) LOIOddsRatio1$BMILabled <- as.factor(LOIOddsRatio1$BMILabled) LOIOddsRatio1$RACE_NEW <- as.factor(LOIOddsRatio1$RACE_NEW) LOIOddsRatio1$DYSPNEA <- as.factor(LOIOddsRatio1$DYSPNEA) LOIOddsRatio1$OPRENAFL <- as.factor(LOIOddsRatio1$OPRENAFL) LOIOddsRatio1$ModifiedFrailtyIndex5 <- as.factor(LOIOddsRatio1$ModifiedFrailtyIndex5) LOIOddsRatio1$SEX = relevel(LOIOddsRatio1$SEX, ref="male") LOIOddsRatio1$BMILabled = relevel(LOIOddsRatio1$BMILabled, ref="Normal Weight") LOIOddsRatio1$RACE_NEW = relevel(LOIOddsRatio1$RACE_NEW, ref="White") LOIOddsRatio1$DYSPNEA = relevel(LOIOddsRatio1$DYSPNEA, ref="No") LOIOddsRatio1$OPRENAFL = relevel(LOIOddsRatio1$OPRENAFL, ref="No Complication") LOIOddsRatio1$ModifiedFrailtyIndex5 = relevel(LOIOddsRatio1$ModifiedFrailtyIndex5, ref="0") ``` ```{r Univariant analysis} UV <- LOIOddsRatio1 %>% select(LOIOR, AgeB, SEX, BMILabled, RACE_NEW, STEROID, ASACLAS, ASCITES, DYSPNEA, SMOKE, DIALYSIS, OPRENAFL, ModifiedFrailtyIndex5, ProcedureGroup) %>% tbl_uvregression( method = glm, y = LOIOR, method.args = list(family = binomial), exponentiate = TRUE, pvalue_fun = ~style_pvalue(.x, digits = 2) ) %>% bold_p(t = 0.10) %>% bold_labels() %>% italicize_levels() ``` ```{r} LOIOddsRatio1 %>% select(LOIOR, AgeB, SEX, BMILabled, RACE_NEW, STEROID,ASACLAS, ASCITES, DYSPNEA, SMOKE, DIALYSIS, OPRENAFL, ModifiedFrailtyIndex5, ProcedureGroup) %>% tbl_uvregression( method = glm, y = LOIOR, method.args = list(family = binomial), exponentiate = TRUE, pvalue_fun = ~style_pvalue(.x, digits = 2) ) %>% bold_p(t = 0.10) %>% bold_labels() %>% italicize_levels() ``` ```{r} ###changling the referent level LOIOddsRatio1$SEX <- as.factor(LOIOddsRatio1$SEX) LOIOddsRatio1$BMILabled <- as.factor(LOIOddsRatio1$BMILabled) LOIOddsRatio1$RACE_NEW <- as.factor(LOIOddsRatio1$RACE_NEW) LOIOddsRatio1$DYSPNEA <- as.factor(LOIOddsRatio1$DYSPNEA) LOIOddsRatio1$OPRENAFL <- as.factor(LOIOddsRatio1$OPRENAFL) LOIOddsRatio1$ModifiedFrailtyIndex5 <- as.factor(LOIOddsRatio1$ModifiedFrailtyIndex5) LOIOddsRatio1$SEX = relevel(LOIOddsRatio1$SEX, ref="male") LOIOddsRatio1$BMILabled = relevel(LOIOddsRatio1$BMILabled, ref="Normal Weight") LOIOddsRatio1$RACE_NEW = relevel(LOIOddsRatio1$RACE_NEW, ref="White") LOIOddsRatio1$DYSPNEA = relevel(LOIOddsRatio1$DYSPNEA, ref="No") LOIOddsRatio1$OPRENAFL = relevel(LOIOddsRatio1$OPRENAFL, ref="No Complication") LOIOddsRatio1$ModifiedFrailtyIndex5 = relevel(LOIOddsRatio1$ModifiedFrailtyIndex5, ref="0") ``` ```{r} ####Multivariant analysis serious complications MVOR <- glm(LOIOR ~ AgeB + SEX + BMILabled+ RACE_NEW + STEROID + ASACLAS + ASCITES + DYSPNEA + SMOKE + DIALYSIS + OPRENAFL + ModifiedFrailtyIndex5 + ProcedureGroup , data = LOIOddsRatio1, family = binomial("logit"), na.action =na.omit) ``` ```{r} ###continue on to merge the table sets MVORTable <- tbl_regression(MVOR, exponentiate = T, pvalue_fun = ~style_pvalue(.x, digits = 2), ) %>% bold_p(t = 0.10) %>% bold_labels() %>% italicize_levels() ``` ```{r} tbl_merge( list(UV, MVORTable), tab_spanner = c("**Univariable**", "**Multivariable**") ) %>% bold_labels() %>% italicize_levels() ``` library(dplyr) library(gtsummary) library(survival) library(labelled) library(tidyverse) library(broom) library(ggplot2) library(survminer) library(pROC) library(rms) library(mice) library(VIM) library(aod) library(nnet) library(ROCR) library(devtools) library(mice, warn.conflicts = FALSE) install.packages("mice") install.packages("devtools") md.pattern(LOIOddsRatio1) LOIImputed <-mice(LOIOddsRatio1) NSQIPRiskCalculatorDF <- LOIOddsRatio1 %>% select(LOIOR, AgeB, SEX, BMILabled, RACE_NEW, STEROID,ASACLAS, ASCITES, DYSPNEA, SMOKE, DIALYSIS, OPRENAFL) NSQIPRiskCalculatorDF <- NSQIPRiskCalculatorDF %>% remove_missing() PortlandDF <- LOIOddsRatio1 %>% select(LOIOR, AgeB, SEX, RACE_NEW, ModifiedFrailtyIndex5, ProcedureGroup) PortlandDF <- PortlandDF %>% remove_missing() NSQIPRiskCalculatorModel <- glm(LOIOR~AgeB+SEX+BMILabled+RACE_NEW+STEROID+ASACLAS+ASCITES+DYSPNEA+SMOKE+DIALYSIS+OPRENAFL, family = binomial(link = "logit"), data = NSQIPRiskCalculatorDF) NSQIPPredict=predict(NSQIPRiskCalculatorModel) NSQIPPredictModel1=prediction(NSQIPPredict, NSQIPRiskCalculatorDF$LOIOR) plot(performance(NSQIPPredictModel1,"tpr","fpr")) %>% abline(a=0,b=1) x=performance(NSQIPPredictModel1,"acc") max=which.max(slot(x,"y.values")[[1]]) acc=slot(x,"y.values")[[1]][max] acc auc=performance(NSQIPPredictModel1,"auc") unlist(slot(auc,"y.values")) PortlandModel <- glm(LOIOR~AgeB+SEX+ModifiedFrailtyIndex5+ProcedureGroup, family = binomial(link = "logit"), data = PortlandDF) PortlandPredict=predict(PortlandModel) PortlandPredictModel1=prediction(PortlandPredict, PortlandDF$LOIOR) plot(performance(PortlandPredictModel1,"tpr","fpr")) %>% abline(a=0,b=1) x=performance(PortlandPredictModel1,"acc") max=which.max(slot(x,"y.values")[[1]]) acc=slot(x,"y.values")[[1]][max] acc auc=performance(PortlandPredictModel1,"auc") unlist(slot(auc,"y.values"))
Document
FRS Project: Demographic Table By: Abdimajid Mohamed load("FRSNomogram.RData") library(dplyr) ## ## Attaching package: 'dplyr' ## The following objects are masked from 'package:stats': ## ## filter, lag ## The following objects are masked from 'package:base': ## ## intersect, setdiff, setequal, union library(gtsummary) library(survival) library(labelled) library(tidyverse) ## ── Attaching packages ──────────────────────────────────────────────────────────────────── tidyverse 1.3.0 ── ## ✓ ggplot2 3.3.3 ✓ purrr 0.3.4 ## ✓ tibble 3.0.3 ✓ stringr 1.4.0 ## ✓ tidyr 1.1.1 ✓ forcats 0.5.0 ## ✓ readr 1.3.1 ## ── Conflicts ─────────────────────────────────────────────────────────────────────── tidyverse_conflicts() ── ## x dplyr::filter() masks stats::filter() ## x dplyr::lag() masks stats::lag() library(broom) library(ggplot2) library(survminer) ## Loading required package: ggpubr library(pROC) ## Type 'citation("pROC")' for a citation. ## ## Attaching package: 'pROC' ## The following objects are masked from 'package:stats': ## ## cov, smooth, var library(rms) ## Loading required package: Hmisc ## Loading required package: lattice ## Loading required package: Formula ## ## Attaching package: 'Hmisc' ## The following objects are masked from 'package:dplyr': ## ## src, summarize ## The following objects are masked from 'package:base': ## ## format.pval, units ## Loading required package: SparseM ## ## Attaching package: 'SparseM' ## The following object is masked from 'package:base': ## ## backsolve library(VIM) ## Loading required package: colorspace ## ## Attaching package: 'colorspace' ## The following object is masked from 'package:pROC': ## ## coords ## Loading required package: grid ## VIM is ready to use. ## Suggestions and bug-reports can be submitted at: https://github.com/statistikat/VIM/issues ## ## Attaching package: 'VIM' ## The following object is masked from 'package:datasets': ## ## sleep library(rmarkdown) library(ROCR) Creating Demographic Table: Creating Serious Complication and Any Complication FRSDemo1 <- mutate(FRSDemo, SeriousComplication = ifelse(CDARREST == "Cardiac Arrest Requiring CPR", "Yes", ifelse(CDMI == "Myocardial Infarction", "Yes", ifelse(OUPNEUMO == "Pneumonia", "Yes", ifelse(RENAINSF == "Progressive Renal Insufficiency", "Yes", ifelse(OPRENAFL == "Acute Renal Failure", "Yes", ifelse(PULEMBOL == "Pulmonary Embolism", "Yes", ifelse(OTHDVT == "DVT Requiring Therapy", "Yes", ifelse(RETURNOR == "Yes", "Yes", ifelse(ORGSPCSSI == "Organ/Space SSI", "Yes", ifelse(PRSEPIS == "Yes", "Yes", ifelse(REINTUB == "Unplanned Intubation", "Yes", ifelse(URNINFEC == "Urinary Tract Infection", "Yes", ifelse(DEHIS == "Wound Disruption", "Yes", "No")))))))))))))) FRSDemo2 <- mutate(FRSDemo1, AnyComplication = ifelse(CDARREST == "Cardiac Arrest Requiring CPR", "Yes", ifelse(CDMI == "Myocardial Infarction", "Yes", ifelse(OUPNEUMO == "Pneumonia", "Yes", ifelse(RENAINSF == "Progressive Renal Insufficiency", "Yes", ifelse(OPRENAFL == "Acute Renal Failure", "Yes", ifelse(PULEMBOL == "Pulmonary Embolism", "Yes", ifelse(OTHDVT == "DVT Requiring Therapy", "Yes", ifelse(RETURNOR == "Yes", "Yes", ifelse(ORGSPCSSI == "Organ/Space SSI", "Yes", ifelse(PRSEPIS == "Yes", "Yes", ifelse(REINTUB == "Unplanned Intubation", "Yes", ifelse(URNINFEC == "Urinary Tract Infection", "Yes", ifelse(SUPINFEC == "Superficial Incisional SSI", "Yes", ifelse(FAILWEAN == "On Ventilator greater than 48 Hours", "Yes", ifelse(CNSCVA == "Stroke/CVA", "Yes", ifelse(DEHIS == "Wound Disruption", "Yes", "No"))))))))))))))))) FRSDemo2$DOpertoD[is.na(FRSDemo2$DOpertoD)] <- "No" FRSDemo2$DOpertoD[FRSDemo2$DOpertoD == 0] <- "Yes" FRSDemo2$DOpertoD[FRSDemo2$DOpertoD == 1] <- "Yes" FRSDemo2$DOpertoD[FRSDemo2$DOpertoD == 10] <- "Yes" FRSDemo2$DOpertoD[FRSDemo2$DOpertoD == 11] <- "Yes" FRSDemo2$DOpertoD[FRSDemo2$DOpertoD == 12] <- "Yes" FRSDemo2$DOpertoD[FRSDemo2$DOpertoD == 13] <- "Yes" FRSDemo2$DOpertoD[FRSDemo2$DOpertoD == 14] <- "Yes" FRSDemo2$DOpertoD[FRSDemo2$DOpertoD == 15] <- "Yes" FRSDemo2$DOpertoD[FRSDemo2$DOpertoD == 16] <- "Yes" FRSDemo2$DOpertoD[FRSDemo2$DOpertoD == 18] <- "Yes" FRSDemo2$DOpertoD[FRSDemo2$DOpertoD == 19] <- "Yes" FRSDemo2$DOpertoD[FRSDemo2$DOpertoD == 21] <- "Yes" FRSDemo2$DOpertoD[FRSDemo2$DOpertoD == 22] <- "Yes" FRSDemo2$DOpertoD[FRSDemo2$DOpertoD == 23] <- "Yes" FRSDemo2$DOpertoD[FRSDemo2$DOpertoD == 24] <- "Yes" FRSDemo2$DOpertoD[FRSDemo2$DOpertoD == 25] <- "Yes" FRSDemo2$DOpertoD[FRSDemo2$DOpertoD == 26] <- "Yes" FRSDemo2$DOpertoD[FRSDemo2$DOpertoD == 27] <- "Yes" FRSDemo2$DOpertoD[FRSDemo2$DOpertoD == 28] <- "Yes" FRSDemo2$DOpertoD[FRSDemo2$DOpertoD == 29] <- "Yes" FRSDemo2$DOpertoD[FRSDemo2$DOpertoD == 3] <- "Yes" FRSDemo2$DOpertoD[FRSDemo2$DOpertoD == 30] <- "Yes" FRSDemo2$DOpertoD[FRSDemo2$DOpertoD == 4] <- "Yes" FRSDemo2$DOpertoD[FRSDemo2$DOpertoD == 5] <- "Yes" FRSDemo2$DOpertoD[FRSDemo2$DOpertoD == 6] <- "Yes" FRSDemo2$DOpertoD[FRSDemo2$DOpertoD == 7] <- "Yes" FRSDemo2$DOpertoD[FRSDemo2$DOpertoD == 9] <- "Yes" FRSDemo2$DOpertoD[FRSDemo2$DOpertoD == 17] <- "Yes" FRSDemo2$DOpertoD[FRSDemo2$DOpertoD == 2] <- "Yes" FRSDemo2$DOpertoD[FRSDemo2$DOpertoD == 8] <- "Yes" FRSDemo2$DOpertoD[FRSDemo2$DOpertoD == 20] <- "Yes" FRSDemotable <- FRSDemo2 %>% select(Fistula.Grade, Age, SEX, BMI, RACE_NEW, PAN_GLANDTEXT, PAN_DUCTSIZE, DIABETES, PAN_MALIG_HISTOLOGIC, ASACLAS, DOpertoD, DPRBILI, PRALBUM, SeriousComplication, AnyComplication, PAN_CHEMO, CPT) FRSDemoTableFinal <- subset(FRSDemotable, CPT == "48153" | CPT == "48154") var_label(FRSDemoTableFinal$RACE_NEW) <- "Race" var_label(FRSDemoTableFinal$ASACLAS) <- "ASA Classification" var_label(FRSDemoTableFinal$SEX) <- "Sex" var_label(FRSDemoTableFinal$PAN_GLANDTEXT) <- "Gland Texture" var_label(FRSDemoTableFinal$PAN_DUCTSIZE) <- "Pancreatic Duct Diameter" var_label(FRSDemoTableFinal$DOpertoD) <- "Mortality" var_label(FRSDemoTableFinal$DIABETES) <- "Diabetes" var_label(FRSDemoTableFinal$SeriousComplication) <- "Serious Complication" var_label(FRSDemoTableFinal$AnyComplication) <- "Any Complication" var_label(FRSDemoTableFinal$PAN_CHEMO) <- "Neoadjuvant Treatment" var_label(FRSDemoTableFinal$PAN_MALIG_HISTOLOGIC) <- "Pathology" var_label(FRSDemoTableFinal$DPRBILI) <- "Preop Bilirubin" ###Recoding Pathology FRSDemoTableFinal$PAN_MALIG_HISTOLOGIC[FRSDemoTableFinal$PAN_MALIG_HISTOLOGIC =="Other type"] <- NA FRSDemoTableFinal$PAN_MALIG_HISTOLOGIC[FRSDemoTableFinal$PAN_MALIG_HISTOLOGIC =="N/A"] <- NA FRSDemoTableFinal$PAN_MALIG_HISTOLOGIC[FRSDemoTableFinal$PAN_MALIG_HISTOLOGIC =="Unknown"] <- NA FRSDemoTableFinal1[FRSDemoTableFinal1 =="Unknown"] <- NA FRSDemoTableFinal1 %>% tbl_summary( by = Fistula.Grade, digits = all_continuous() ~ 2,) %>% add_p(pvalue_fun = ~style_pvalue(.x, digits = 2))%>% bold_p() %>% add_overall() %>% modify_header(label ~ "**Variable**") %>% modify_spanning_header(c("stat_1", "stat_2") ~ "**CR-POPF*") %>% bold_labels() ## There was an error in 'add_p()' for variable 'PAN_MALIG_HISTOLOGIC', p-value omitted: ## Error in stats::fisher.test(data[[variable]], as.factor(data[[by]])): FEXACT error 7(location). LDSTP=17820 is too small for this problem, ## (pastp=143.358, ipn_0:=ipoin[itp=592]=3520, stp[ipn_0]=178.431). ## Increase workspace or consider using 'simulate.p.value=TRUE' Variable Overall, N = 5,9751 *CR-POPF p-value2 CR-POPF, N = 1,0181 No CR-POPF, N = 4,9571 PAN_FISTULA <0.001 Biochemical Leak 77 (1.3%) 0 (0%) 77 (1.6%) ISGPS Grade B 932 (16%) 932 (92%) 0 (0%) ISGPS Grade C 86 (1.4%) 86 (8.4%) 0 (0%) No Fistula 4,880 (82%) 0 (0%) 4,880 (98%) Age 66.00 (58.00, 73.00) 66.00 (58.00, 72.00) 66.00 (58.00, 73.00) 0.10 SEX <0.001 female 2,881 (48%) 430 (42%) 2,451 (49%) male 3,094 (52%) 588 (58%) 2,506 (51%) BMI 26.52 (23.33, 30.37) 27.97 (24.67, 31.71) 26.21 (23.08, 29.95) <0.001 RACE_NEW 0.022 Black 499 (9.2%) 63 (6.9%) 436 (9.6%) Other 303 (5.6%) 46 (5.0%) 257 (5.7%) White 4,643 (85%) 803 (88%) 3,840 (85%) Unknown 530 106 424 PAN_GLANDTEXT <0.001 Hard 1,918 (40%) 144 (17%) 1,774 (44%) Intermediate 580 (12%) 80 (9.6%) 500 (13%) Soft 2,321 (48%) 608 (73%) 1,713 (43%) Unknown 1,156 186 970 PAN_DUCTSIZE <0.001 <3 mm 1,488 (30%) 380 (44%) 1,108 (27%) >6 mm 752 (15%) 73 (8.5%) 679 (16%) 3-6 mm 2,782 (55%) 405 (47%) 2,377 (57%) Unknown 953 160 793 DIABETES 1,572 (26%) 215 (21%) 1,357 (27%) <0.001 PAN_CHEMO 1,032 (17%) 102 (10%) 930 (19%) <0.001 Unknown 19 1 18 PAN_RADIO 343 (5.8%) 32 (3.1%) 311 (6.3%) <0.001 Unknown 24 2 22 PAN_MALIG_HISTOLOGIC Ampullary carcinoma 478 (11%) 119 (17%) 359 (9.6%) Cystadenocarcinoma 1 (<0.1%) 0 (0%) 1 (<0.1%) Distal cholangiocarcinoma 167 (3.8%) 42 (5.9%) 125 (3.4%) Duodenal carcinoma 126 (2.8%) 24 (3.4%) 102 (2.7%) IPMN-invasive 121 (2.7%) 21 (3.0%) 100 (2.7%) Neuroendocrine-functioning 58 (1.3%) 23 (3.2%) 35 (0.9%) Neuroendocrine-nonfunctioning 306 (6.9%) 89 (13%) 217 (5.8%) Pancreatic adenocarcinoma 3,181 (72%) 392 (55%) 2,789 (75%) Unknown 1,537 308 1,229 ASACLAS 0.53 I-II 1,316 (22%) 216 (21%) 1,100 (22%) III-IV 4,656 (78%) 801 (79%) 3,855 (78%) Unknown 3 1 2 DOpertoD 86 (1.4%) 21 (2.1%) 65 (1.3%) 0.091 DPRBILI 8.00 (4.00, 16.00) 8.00 (4.00, 16.00) 8.00 (4.00, 16.00) 0.29 Unknown 226 41 185 SeriousComplication 1,422 (24%) 611 (60%) 811 (16%) <0.001 AnyComplication 1,672 (28%) 652 (64%) 1,020 (21%) <0.001 CPT 0.36 48153 5,780 (97%) 990 (97%) 4,790 (97%) 48154 195 (3.3%) 28 (2.8%) 167 (3.4%) ChemoOnly 708 (12%) 70 (6.9%) 638 (13%) <0.001 Unknown 27 2 25 1 Statistics presented: n (%); Median (IQR) 2 Statistical tests performed: chi-square test of independence; Wilcoxon rank-sum test Odds Ratio Code FRSOddsRatio <- FRSDemoTableFinal %>% mutate(FRSDemoTableFinal1, BMIB = ifelse(BMI >= 30, "Obese", ifelse(BMI <= 30, "Non-Obese", "NA"))) FRSOddsRatio1 <- FRSOddsRatio %>% select(Fistula.Grade, Age, SEX, BMIB, RACE_NEW, PAN_GLANDTEXT, PAN_DUCTSIZE, DIABETES, PAN_MALIG_HISTOLOGIC, ASACLAS, DOpertoD, DPRBILI, PRALBUM, SeriousComplication, AnyComplication, PAN_CHEMO) FRSOddsRatio2 <- mutate(FRSOddsRatio1, FistulaOddsRatio = ifelse(Fistula.Grade =="CR-POPF", "1", ifelse(Fistula.Grade =="No CR-POPF", "0", "NA"))) FRSOddsRatio3 <- mutate(FRSOddsRatio2, Pathology = ifelse(PAN_MALIG_HISTOLOGIC == "Pancreatic adenocarcinoma", "Pancreatic Adenocarcinoma", "Other")) ### Turning NA to the actual NA's that are ommitted in pathology FRSOddsRatio3$Pathology[FRSOddsRatio3$Pathology =="NA"] <- NA ### recoding ASA none assigned --> NA FRSOddsRatio3$ASACLAS[FRSOddsRatio3$ASACLAS =="None assigned"] <- NA ###recode Unknown to NA panductoriginal FRSOddsRatio3$PAN_DUCTSIZE[FRSOddsRatio3$PAN_DUCTSIZE =="Unknown"] <- NA FRSOddsRatio3$FistulaOddsRatio <- as.numeric(FRSOddsRatio3$FistulaOddsRatio) FRSOddsRatio3[FRSOddsRatio3 =="Unknown"] <- NA UV <- FRSOddsRatio3 %>% select(Age, SEX, BMIB, RACE_NEW, PAN_GLANDTEXT, PAN_DUCTSIZE, DIABETES, Pathology, ASACLAS, DPRBILI, PRALBUM, FistulaOddsRatio, PAN_CHEMO) %>% tbl_uvregression( method = glm, y = FistulaOddsRatio, method.args = list(family = binomial), exponentiate = TRUE, pvalue_fun = ~style_pvalue(.x, digits = 2) ) %>% bold_p(t = 0.10) %>% bold_labels() %>% italicize_levels() ####Multivariant analysis serious complications MVOR <- glm(FistulaOddsRatio ~ Age + SEX + BMIB + RACE_NEW + PAN_GLANDTEXT + PAN_DUCTSIZE + DIABETES + Pathology + ASACLAS + DPRBILI + PRALBUM + PAN_CHEMO, data = FRSOddsRatio3, family = binomial("logit"), na.action =na.omit) ###continue on to merge the table sets MVORTable <- tbl_regression(MVOR, exponentiate = T, pvalue_fun = ~style_pvalue(.x, digits = 2), ) %>% bold_p(t = 0.10) %>% bold_labels() %>% italicize_levels() tbl_merge( list(UV, MVORTable), tab_spanner = c("**Univariable**", "**Multivariable**") ) %>% bold_labels() %>% italicize_levels() Characteristic Univariable Multivariable N OR1 95% CI1 p-value OR1 95% CI1 p-value Age 5,975 0.99 0.99, 1.00 0.048 1.00 0.99, 1.01 0.41 SEX 5,975 female — — — — male 1.34 1.17, 1.53 <0.001 1.59 1.29, 1.98 <0.001 BMIB 5,975 Non-Obese — — — — Obese 1.71 1.48, 1.97 <0.001 1.66 1.32, 2.09 <0.001 RACE_NEW 5,445 Black — — — — Other 1.24 0.82, 1.86 0.31 1.06 0.57, 1.94 0.86 White 1.45 1.11, 1.92 0.008 1.41 0.95, 2.15 0.10 PAN_GLANDTEXT 4,819 Hard — — — — Intermediate 1.97 1.47, 2.63 <0.001 1.76 1.20, 2.56 0.003 Soft 4.37 3.61, 5.32 <0.001 3.18 2.43, 4.19 <0.001 PAN_DUCTSIZE 5,022 <3 mm — — — — >6 mm 0.31 0.24, 0.41 <0.001 0.52 0.34, 0.78 0.002 3-6 mm 0.50 0.42, 0.58 <0.001 0.63 0.50, 0.79 <0.001 DIABETES 5,975 No — — — — Yes 0.71 0.60, 0.83 <0.001 0.83 0.64, 1.07 0.15 Pathology 4,438 Other — — — — Pancreatic Adenocarcinoma 0.42 0.35, 0.49 <0.001 0.68 0.54, 0.85 <0.001 ASACLAS 5,972 I-II — — — — III-IV 1.06 0.90, 1.25 0.50 1.00 0.77, 1.30 0.98 DPRBILI 5,749 1.00 1.00, 1.01 0.76 1.00 0.99, 1.01 0.88 PRALBUM 5,632 1.38 1.22, 1.56 <0.001 1.20 0.99, 1.46 0.070 PAN_CHEMO 5,956 No — — — — Yes 0.48 0.38, 0.59 <0.001 0.71 0.51, 0.98 0.042 1 OR = Odds Ratio, CI = Confidence Interval FRSObject2 <- kNN(FRSOddsRatio3) FRSObject2 <- subset(FRSObject2, select = Fistula.Grade:Pathology) SeoulFRS <- FRSObject2 %>% select(FistulaOddsRatio, ASACLAS, BMIB, PAN_DUCTSIZE, ASACLAS, PRALBUM) AdjustedFRS <- FRSObject2 %>% select(FistulaOddsRatio, PAN_GLANDTEXT, BMIB, PAN_DUCTSIZE) PortlandFRS <- FRSObject2 %>% select(FistulaOddsRatio, SEX,PAN_GLANDTEXT, BMIB, PAN_DUCTSIZE, Pathology, PAN_CHEMO, PRALBUM) var_label(PortlandFRS$SEX) <- "Sex" var_label(PortlandFRS$PAN_DUCTSIZE) <- "Duct Size" var_label(PortlandFRS$PAN_GLANDTEXT) <- "Gland Texture" var_label(PortlandFRS$BMIB) <- "BMI" var_label(PortlandFRS$PAN_CHEMO) <- "Neoadjuvant Tx" var_label(PortlandFRS$PRALBUM) <- "Preop Albumin" var_label(PortlandFRS$PAN_GLANDTEXT) <- "Gland Texture" PortlandFRS$SEX[PortlandFRS$SEX =="male"] <- "Male" PortlandFRS$SEX[PortlandFRS$SEX =="female"] <- "Female" AdjustedModel <- glm(FistulaOddsRatio~PAN_GLANDTEXT+PAN_DUCTSIZE+BMIB, family = binomial(link = "logit"), data = AdjustedFRS) AdjPredictModel=predict(AdjustedModel) AdjPredictModel1=prediction(AdjPredictModel, AdjustedFRS$FistulaOddsRatio) plot(performance(AdjPredictModel1,"tpr","fpr")) %>% abline(a=0,b=1) ##calculate accuracy of above x=performance(AdjPredictModel1,"acc") max=which.max(slot(x,"y.values")[[1]]) acc=slot(x,"y.values")[[1]][max] acc ## [1] 0.8296234 auc=performance(AdjPredictModel1,"auc") unlist(slot(auc,"y.values")) ## [1] 0.7037542 ci.auc(AdjustedFRS$FistulaOddsRatio, AdjPredictModel) ## Setting levels: control = 0, case = 1 ## Setting direction: controls < cases ## 95% CI: 0.6874-0.7201 (DeLong) SeoulModel <- glm(FistulaOddsRatio~ASACLAS+PAN_DUCTSIZE+BMIB+PAN_DUCTSIZE+PRALBUM, family = binomial(link = "logit"), data = SeoulFRS) SeoulPredictModel=predict(SeoulModel) SeoulPredictModel1=prediction(SeoulPredictModel, SeoulFRS$FistulaOddsRatio) plot(performance(SeoulPredictModel1,"tpr","fpr")) %>% abline(a=0,b=1) x=performance(SeoulPredictModel1,"acc") max=which.max(slot(x,"y.values")[[1]]) acc=slot(x,"y.values")[[1]][max] acc ## [1] 0.8297908 auc=performance(SeoulPredictModel1,"auc") unlist(slot(auc,"y.values")) ## [1] 0.6440038 ci.auc(SeoulFRS$FistulaOddsRatio, SeoulPredictModel) ## Setting levels: control = 0, case = 1 ## Setting direction: controls < cases ## 95% CI: 0.6254-0.6626 (DeLong) ##AUC Model Running for Portland FRS AUC PortlandModel <- glm(FistulaOddsRatio~SEX+Pathology+PAN_CHEMO+PAN_GLANDTEXT+PAN_DUCTSIZE+BMIB+PRALBUM, family = binomial(link = "logit"), data = PortlandFRS) Pr_model=predict(PortlandModel) Pr_model1=prediction(Pr_model, PortlandFRS$FistulaOddsRatio) plot(performance(Pr_model1,"tpr","fpr",)) %>% abline(a=0,b=1) ##calculate accuracy of above x=performance(Pr_model1,"acc") max=which.max(slot(x,"y.values")[[1]]) acc=slot(x,"y.values")[[1]][max] acc ## [1] 0.8299582 auc=performance(Pr_model1,"auc") unlist(slot(auc,"y.values")) ## [1] 0.7211847 ci.auc(PortlandFRS$FistulaOddsRatio, Pr_model) ## Setting levels: control = 0, case = 1 ## Setting direction: controls < cases ## 95% CI: 0.7049-0.7375 (DeLong) ###Nomogram build ddist <- datadist(PortlandFRS) options(datadist = 'ddist') mod.bi <- lrm(FistulaOddsRatio~SEX+PAN_GLANDTEXT+BMIB+PAN_DUCTSIZE+PAN_CHEMO+Pathology, PortlandFRS) nom.bi <- nomogram(mod.bi, lp.at = seq(-3,4, by=.5), fun = function(x)1/(1+exp(-x)), fun.at = c(.001,.01,.05,seq(.1,.9,by=.1),.95,.99,.999), funlabel = "Risk of Fistula", conf.int = c(0.1,0.7), abbrev = T, minlength = 100, maxscale = 100) plot(nom.bi,lplabel="Linear Predictor", fun.side=c(3,3,1,1,3,1,3,1,1,1,1,1,3), conf.space=c(0.1,0.5), label.every=1, col.grid=gray(c(0.8,0.95)), which="shock")
Table to code procedures: Loss of Independence paper
https://tufts.zoom.us/j/96762238856 # Important packages to load in library(dplyr) library(gtsummary) library(survival) library(labelled) library(tidyverse) library(broom) library(ggplot2) library(survminer) ### Intention to Treat MIS vs Open ## Importing data in to Rstudio below Importin csv getwd() NSQIPALLYEARS <- read.csv ("NSQIPALLYEARS.CSV", header = TRUE, sep = "," ) table(NSQIPALLYEARS$SURGSPEC) ##subset surgspec patients only general surgery patients NSQIPGENSURG <- subset(NSQIPALLYEARS, SURGSPEC == "General Surgery") ###Subset patients as inpatient, elective, independent status, NSQIPInpatient <- subset(NSQIPGENSURG, INOUT == "Inpatient") NSQIPElective <- subset(NSQIPInpatient, ELECTSURG == "Yes") NSQIPFinal <- subset(NSQIPElective, FNSTATUS2 == "Independent") NSQIPDemoTable <- NSQIPFinal %>% select(PRNCPTX, SEX) NSQIPDemoTable %>% tbl_summary( by = SEX, digits = all_continuous() ~ 2,) %>% add_p(pvalue_fun = ~style_pvalue(.x, digits = 2))%>% bold_p() %>% add_overall() %>% modify_header(label ~ "**Variable**") %>% modify_spanning_header(c("stat_1", "stat_2") ~ "**NSQIP Table*") %>% bold_labels() publish(NSQIPFinal$PRNCPTX) ##Recoding Procedures into Hep NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX ==""] <- "Hep" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX ==""] <- "Hep" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX ==""] <- "Hep" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX ==""] <- "Hep" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX ==""] <- "Hep" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX ==""] <- "Hep" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX ==""] <- "Hep" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX ==""] <- "Hep" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX ==""] <- "Hep" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX ==""] <- "Hep" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX ==""] <- "Hep" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX ==""] <- "Hep" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX ==""] <- "Hep" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX ==""] <- "Hep" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX ==""] <- "Hep" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX ==""] <- "Hep" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX ==""] <- "Hep" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX ==""] <- "Hep" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX ==""] <- "Hep" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX ==""] <- "Hep" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX ==""] <- "Hep" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX ==""] <- "Hep" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX ==""] <- "Hep" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX ==""] <- "Hep" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX ==""] <- "Hep" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX ==""] <- "Hep" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX ==""] <- "Hep" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX ==""] <- "Hep" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX ==""] <- "Hep" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX ==""] <- "Hep" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX ==""] <- "Hep" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX ==""] <- "Hep" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX ==""] <- "Hep" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX ==""] <- "Hep" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX ==""] <- "Hep" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX ==""] <- "Hep" ##Recoding Procedures into Pan NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX ==""] <- "Pan" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX ==""] <- "Pan" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX ==""] <- "Pan" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX ==""] <- "Pan" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX ==""] <- "Pan" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX ==""] <- "Pan" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX ==""] <- "Pan" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX ==""] <- "Pan" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX ==""] <- "Pan" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX ==""] <- "Pan" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX ==""] <- "Pan" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX ==""] <- "Pan" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX ==""] <- "Pan" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX ==""] <- "Pan" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX ==""] <- "Pan" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX ==""] <- "Pan" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX ==""] <- "Pan" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX ==""] <- "Pan" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX ==""] <- "Pan" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX ==""] <- "Pan" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX ==""] <- "Pan" ##Recoding Procedures into Colorectal (col+pro) NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX =="APPENDEC INDICATED PURPOSE OTH MAJOR PX NOT SPX"] <- "CRC" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX =="APPENDEC RPTD APPENDIX ABSC/PRITONITIS"] <- "CRC" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX ==""] <- "CRC" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX ==""] <- "CRC" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX ==""] <- "CRC" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX ==""] <- "CRC" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX ==""] <- "CRC" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX ==""] <- "CRC" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX ==""] <- "CRC" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX ==""] <- "CRC" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX ==""] <- "CRC" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX ==""] <- "CRC" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX ==""] <- "CRC" ##Recoding Procedures into Gastric NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX =="ANAST ROUX-EN-Y INTRAHEPATC BILIARY DUCTS & GI"] <- "Gastric" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX =="ANAST ROUX-EN-Y XTRHEPATC BILIARY DUCTS & GI"] <- "Gastric" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX =="ANAST XTRHEPATC BILIARY DUCTS & GI TRACT"] <- "Gastric" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX ==""] <- "Gastric" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX ==""] <- "Gastric" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX ==""] <- "Gastric" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX ==""] <- "Gastric" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX ==""] <- "Gastric" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX ==""] <- "Gastric" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX ==""] <- "Gastric" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX ==""] <- "Gastric" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX ==""] <- "Gastric" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX ==""] <- "Gastric" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX ==""] <- "Gastric" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX ==""] <- "Gastric" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX ==""] <- "Gastric" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX ==""] <- "Gastric" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX ==""] <- "Gastric" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX ==""] <- "Gastric" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX ==""] <- "Gastric" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX ==""] <- "Gastric" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX ==""] <- "Gastric" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX ==""] <- "Gastric" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX ==""] <- "Gastric" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX ==""] <- "Gastric" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX ==""] <- "Gastric" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX ==""] <- "Gastric" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX ==""] <- "Gastric" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX ==""] <- "Gastric" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX ==""] <- "Gastric" ##Recoding Procedures into Other NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX =="AMP LEG THRU TIBFIB W/IMMT FITG TQ W/1ST CST"] <- "Other" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX =="AMP LEG THRU TIBIA&FIBULA RE-AMPUTATION"] <- "Other" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX =="AMP LEG THRU TIBIA&FIBULA SEC CLOSURE/SCAR REV"] <- "Other" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX =="AMP MTCRPL W/FINGER/THUMB W/WO INTEROSS TRANSFER"] <- "Other" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX =="AMP THI THRU FEMUR LVL IMMT FITG TQ W/1ST CST"] <- "Other" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX =="AMP THIGH THRU FEMUR SEC CLOSURE/SCAR REVISION"] <- "Other" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX =="AMPUTATION ARM THRU HUMERUS OPEN CIRCULAR"] <- "Other" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX =="AMPUTATION ARM THRU HUMERUS W/PRIMARY CLOSURE"] <- "Other" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX =="AMPUTATION FOOT MIDTARSAL"] <- "Other" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX =="AMPUTATION FOOT TRANSMETARSAL"] <- "Other" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX =="AMPUTATION FOREARM THROUGH RADIUS & ULNA"] <- "Other" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX =="AMPUTATION LEG THROUGH TIBIA&FIBULA"] <- "Other" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX =="AMPUTATION LEG THRU TIBIA&FIBULA OPEN CIRCULAR"] <- "Other" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX =="AMPUTATION PENIS COMPLETE"] <- "Other" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX =="AMPUTATION PENIS PARTIAL"] <- "Other" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX =="AMPUTATION THIGH THROUGH FEMUR ANY LEVEL"] <- "Other" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX =="AMPUTATION THIGH THROUGH FEMUR RE-AMPUTATION"] <- "Other" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX =="AMPUTATION THIGH THRU FEMUR OPEN CIRCULAR"] <- "Other" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX =="ANAST ARTL EXTRACRANIAL-INTRACRANIAL ARTERIES"] <- "Other" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX =="ANKLE DISARTICULATION"] <- "Other" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX =="ANT COLPORRHAPHY CYSTOCELE W/WO RPR URETHROCELE"] <- "Other" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX =="ANT VESICOURETHROPEXY/URETHROPEXY SMPL"] <- "Other" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX =="STG DSTL HYPOSPADIAS RPR W/URTP SKIN FLAPS"] <- "Other" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX =="EVASC RPR DTA COVERAGE ART ORIGIN 1ST ENDOPROSTH"] <- "Other" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX =="EVASC RPR DTA EXP COVERAGE W/O ART ORIGIN"] <- "Other" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX =="EVASC RPR ILIAC ART ILIO-ILIAC PROSTHESIS"] <- "Other" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX =="EXC BARTHOLINS GLAND/CYST"] <- "Other" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX =="EXC BENIGN TUM CRANIAL BONE W/O OPTIC NRV DCMPRN"] <- "Other" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX =="EXC BENIGN TUMOR/CYST MAXL INTRA-ORAL OSTEOT"] <- "Other" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX =="EXC BENIGN TUMOR/CYST MNDBL INTRA-ORAL OSTEOT"] <- "Other" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX =="EXC BRANCHIAL CLEFT CYST BELOW SUBQ TISS&/PHRYNX"] <- "Other" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX =="EXC BRANCHIAL CLEFT CYST CONFINED SKN&SUBQ TIS"] <- "Other" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX =="EXC BREAST LES PREOP PLMT RAD MARKER OPEN 1 LES"] <- "Other" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX =="EXC BRST LES PREOP PLMT RAD MARKER OPN EA ADDL"] <- "Other" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX =="EXC CAROTID BODY TUMOR W EXC CAROTID ARTERY"] <- "Other" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX =="EXC CAROTID BODY TUMOR W/O EXC CAROTID ARTERY"] <- "Other" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX =="EXC CHEST TUMOR W/RCNSTJ W/MEDSTNL LMPHADEC"] <- "Other" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX =="EXC CHEST TUMOR W/RCNSTJ W/O MEDSTNL LMPHADEC"] <- "Other" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX =="EXC CSTIC HYGROMA AX/CRV W/DP NEUROVASC DSJ"] <- "Other" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX =="EXC CSTIC HYGROMA AX/CRV W/O DP NEUROVASC DSJ"] <- "Other" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX =="EXC CYST/ABERRANT BREAST TISSUE OPEN 1/> LESION"] <- "Other" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX =="EXC CYST/ADENOMA THYROID/TRANSECTION ISTHMUS"] <- "Other" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX =="EXC CYST/ADENOMA THYROID/TRANSECTION ISTHMUS"] <- "Other" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX =="EVASC RPR DPLMNT ILIO-ILIAC NDGFT"] <- "Other" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX =="EVASC RPR DPLMNT AORTO-UN-ILIAC NDGFT RPT"] <- "Other" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX =="EVASC RPR DPLMNT ILIO-ILIAC NDGFT"] <- "Other" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX =="EXC B9 TUM/CST MAXL XTR-ORAL OSTEOT&PRTL MAXLC"] <- "Other" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX =="EXC B9 TUM/CST MNDBL XTR-ORAL OSTEOT&PRTL MNDB"] <- "Other" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX =="EXC CONSTRICTING RING FNGR W/MLT Z-PLASTIES"] <- "Other" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX =="EXC FLXR TDN W/IMPLTJ SYNTH ROD DLYD TDN GRF H/F"] <- "Other" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX =="EXC FRENUM LABIAL/BUCCAL"] <- "Other" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX =="EXC ISCHIAL PR ULC W/PRIM SUTR W/OSTC ISCHIECT"] <- "Other" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX =="EXC ISCHIAL PR ULC W/SKN FLAP CLSR W/OSTECTOMY"] <- "Other" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX =="EXC ISCHIAL PR ULCER W/OSTC MUSC/MYOQ FLAP/SKIN"] <- "Other" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX =="EXC ISCHIAL PRESSURE ULCER W/PRIMARY SUTURE"] <- "Other" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX =="EXC ISCHIAL PRESSURE ULCER W/SKIN FLAP CLOSURE"] <- "Other" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX =="EXC LES MUCOSA & SBMCSL VESTIBULE MOUTH W/O RPR"] <- "Other" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX =="EXC LESION ESOPHAGUS W/PRIM RPR THRC/ABDL APPR"] <- "Other" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX =="EXC LESION ESOPHOGUS W/PRIM RPR CERVICAL APPR"] <- "Other" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX =="EXC LESION MUCOSA & SBMCSL VESTIBULE CPLX RPR"] <- "Other" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX =="EXC LESION ESOPHAGUS W/PRIM RPR THRC/ABDL APPR"] <- "Other" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX =="EXC LESION MUCOSA&SBMCSL VESTIBULE CPLX EXC MUSC"] <- "Other" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX =="EXC LESION PALATE UVULA W/LOCAL FLAP CLOSURE"] <- "Other" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX =="EXC LESION PALATE UVULA W/O CLOSURE"] <- "Other" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX =="EXC LESION PALATE UVULA W/SMPL PRIM CLOSURE"] <- "Other" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX =="EXC LESION TONGUE W/CLSR ANTERIOR TWO-THIRDS"] <- "Other" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX =="EXC LESION PALATE UVULA W/O CLOSURE"] <- "Other" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX =="EXC LESION PALATE UVULA W/SMPL PRIM CLOSURE"] <- "Other" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX =="EXC LESION TONGUE W/CLSR ANTERIOR TWO-THIRDS"] <- "Other" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX =="EXC LESION TONGUE W/CLSR POSTERIOR ONE-THIRD"] <- "Other" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX =="EXC LESION TONGUE W/CLSR W/LOCAL TONGUE FLAP"] <- "Other" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX =="EXC LESION/TUMOR DENTOALVEOLAR STRUX W/O RPR"] <- "Other" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX =="EXC LESION/TUMOR DENTOALVEOLAR STRUX W/SMPL RPR"] <- "Other" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX =="EXC LIP FULL THKNS RCNSTJ W/CROSS LIP FLAP"] <- "Other" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX =="EXC LIP FULL THKNS RCNSTJ W/LOCAL FLAP"] <- "Other" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX =="EXC LIP TRANSVRS WEDGE EXC W/PRIM CLSR"] <- "Other" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX =="EXC LIP V-EXC W/PRIM DIR LINR CLSR"] <- "Other" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX =="EXC OSS TUBEROSITIES DENTOALVEOLAR STRUXS"] <- "Other" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX =="EXC PENILE PLAQUE GRAFT &/5 CM LENGTH"] <- "Other" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX =="EXC PRESAC/SACROCOCCYGEAL TUMOR"] <- "Other" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX =="EXC PRTD TUM/PRTD GLND LAT DSJ&PRSRV FACIAL NR"] <- "Other" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX =="EXC PRTD TUM/PRTD GLND LAT LOBE W/O NRV DSJ"] <- "Other" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX =="EXC PRTD TUM/PRTD GLND TOT W/UNI RAD NCK DSJ"] <- "Other" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX =="EXC RCT PROCIDENTIA W/ANAST ABDL & PRNL APPROACH"] <- "Other" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX =="EXC RCT PROCIDENTIA W/ANAST PERINEAL APPROACH"] <- "Other" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX =="EXC SAC PR ULC PREPJ MUSC/MYOQ FLAP/SKN GRF CLSR"] <- "Other" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX =="EXC SAC PR ULC PREPJ MUSC/MYOQ FLAP/SKN GRF OSTC"] <- "Other" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX =="EXC SACRAL PR ULCER W/SKN FLAP CLSR W/OSTECTOMY"] <- "Other" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX =="EXC TROCHANTERIC PR ULCER MUSC/MYOQ FLAP/SKIN"] <- "Other" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX =="EXC TROCHANTERIC PR ULCER W/SKIN FLAP CLOSURE"] <- "Other" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX =="EXC TROCHANTERIC PRESSURE ULCER W/PRIMARY SUTR"] <- "Other" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX =="EXC TUMOR SFT TISS FOREARM&/WRIST SUBFASC 3CM/>"] <- "Other" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX =="EXC TUMOR SOFT TISS FOREARM&/WRIST SUBFASC <3CM"] <- "Other" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX =="EXC TUMOR SOFT TISS UPPER ARM/ELBOW SUBQ <3CM"] <- "Other" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX =="EXC TUMOR SOFT TISS UPR ARM/ELBOW SUBFASC <5CM"] <- "Other" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX =="EXC TUMOR SOFT TISSUE LEG/ANKLE SUBFASCIAL <5CM"] <- "Other" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX =="EXC TUMOR SOFT TISSUE PELVIS & HIP SUBFASC <5CM"] <- "Other" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX =="EXC TUMOR SOFT TISSUE PELVIS & HIP SUBQ <3CM"] <- "Other" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX =="EXC TUMOR SOFT TISSUE THIGH/KNEE SUBFASC <5CM"] <- "Other" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX =="EXC URACHAL CYST/SINUS W/WO UMBILICAL HERNIA RPR"] <- "Other" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX =="EXC URETHRAL DIVERTICULUM SPX FEMALE"] <- "Other" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX =="EXC URETHRAL DIVERTICULUM SPX MALE"] <- "Other" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX =="EXC VARICOCELE/LIGATION SPERMATIC VEINS ABDL"] <- "Other" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX =="EXC VARICOCELE/LIGATION SPERMATIC VEINS SPX"] <- "Other" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX =="EXC VARICOCELE/LIGATION VEINS W/HERNIA RPR"] <- "Other" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX =="EXC/CURTG BONE CYST/BENIGN TUMOR CLAV/SCAPULA"] <- "Other" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX =="EXC/CURTG BONE CYST/BENIGN TUMOR H/N RDS/OLECRN"] <- "Other" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX =="EXC/CURTG BONE CYST/BENIGN TUMOR PROX HUMERUS"] <- "Other" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX =="EXC/DSTRJ LINGUAL TONSIL ANY METHOD SPX"] <- "Other" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX ==""] <- "Other" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX ==""] <- "Other" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX ==""] <- "Other" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX ==""] <- "Other" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX ==""] <- "Other" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX ==""] <- "Other" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX ==""] <- "Other" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX ==""] <- "Other" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX ==""] <- "Other" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX ==""] <- "Other" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX ==""] <- "Other" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX ==""] <- "Other" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX ==""] <- "Other" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX ==""] <- "Other" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX ==""] <- "Other" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX ==""] <- "Other" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX ==""] <- "Other" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX ==""] <- "Other" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX ==""] <- "Other" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX ==""] <- "Other" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX ==""] <- "Other" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX ==""] <- "Other" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX ==""] <- "Other" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX ==""] <- "Other" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX ==""] <- "Other" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX ==""] <- "Other" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX ==""] <- "Other" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX ==""] <- "Other" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX ==""] <- "Other" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX ==""] <- "Other" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX ==""] <- "Other" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX ==""] <- "Other" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX ==""] <- "Other" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX ==""] <- "Other" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX ==""] <- "Other" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX ==""] <- "Other" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX ==""] <- "Other" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX ==""] <- "Other" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX ==""] <- "Other" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX ==""] <- "Other" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX ==""] <- "Other" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX ==""] <- "Other" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX ==""] <- "Other" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX ==""] <- "Other" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX ==""] <- "Other" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX ==""] <- "Other" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX ==""] <- "Other" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX ==""] <- "Other" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX ==""] <- "Other" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX ==""] <- "Other" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX ==""] <- "Other" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX ==""] <- "Other" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX ==""] <- "Other" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX ==""] <- "Other" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX ==""] <- "Other" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX ==""] <- "Other" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX ==""] <- "Other" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX ==""] <- "Other" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX ==""] <- "Other" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX ==""] <- "Other" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX ==""] <- "Other" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX ==""] <- "Other" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX ==""] <- "Other" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX ==""] <- "Other" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX ==""] <- "Other" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX ==""] <- "Other" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX ==""] <- "Other" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX ==""] <- "Other" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX ==""] <- "Other" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX ==""] <- "Other" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX ==""] <- "Other" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX ==""] <- "Other" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX ==""] <- "Other" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX ==""] <- "Other" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX ==""] <- "Other" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX ==""] <- "Other" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX ==""] <- "Other" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX ==""] <- "Other" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX ==""] <- "Other" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX ==""] <- "Other" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX ==""] <- "Other" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX ==""] <- "Other" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX ==""] <- "Other" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX ==""] <- "Other" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX ==""] <- "Other" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX ==""] <- "Other" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX ==""] <- "Other" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX ==""] <- "Other" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX ==""] <- "Other" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX ==""] <- "Other" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX ==""] <- "Other" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX ==""] <- "Other" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX ==""] <- "Other" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX ==""] <- "Other" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX ==""] <- "Other" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX ==""] <- "Other" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX ==""] <- "Other" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX ==""] <- "Other" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX ==""] <- "Other" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX ==""] <- "Other" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX ==""] <- "Other" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX ==""] <- "Other" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX ==""] <- "Other" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX ==""] <- "Other" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX ==""] <- "Other" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX ==""] <- "Other" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX ==""] <- "Other" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX ==""] <- "Other" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX ==""] <- "Other" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX ==""] <- "Other" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX ==""] <- "Other" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX ==""] <- "Other" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX ==""] <- "Other" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX ==""] <- "Other" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX ==""] <- "Other" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX ==""] <- "Other" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX ==""] <- "Other" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX ==""] <- "Other" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX ==""] <- "Other" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX ==""] <- "Other" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX ==""] <- "Other" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX ==""] <- "Other" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX ==""] <- "Other" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX ==""] <- "Other" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX ==""] <- "Other" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX ==""] <- "Other" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX ==""] <- "Other" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX ==""] <- "Other" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX ==""] <- "Other" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX ==""] <- "Other" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX ==""] <- "Other" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX ==""] <- "Other" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX ==""] <- "Other" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX ==""] <- "Other" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX ==""] <- "Other" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX ==""] <- "Other" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX ==""] <- "Other" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX ==""] <- "Other" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX ==""] <- "Other" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX ==""] <- "Other" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX ==""] <- "Other" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX ==""] <- "Other" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX ==""] <- "Other" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX ==""] <- "Other" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX ==""] <- "Other" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX ==""] <- "Other" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX ==""] <- "Other" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX ==""] <- "Other" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX ==""] <- "Other" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX ==""] <- "Other" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX ==""] <- "Other" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX ==""] <- "Other" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX ==""] <- "Other" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX ==""] <- "Other" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX ==""] <- "Other" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX ==""] <- "Other" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX ==""] <- "Other" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX ==""] <- "Other" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX ==""] <- "Other" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX ==""] <- "Other" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX ==""] <- "Other" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX ==""] <- "Other" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX ==""] <- "Other" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX ==""] <- "Other" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX ==""] <- "Other" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX ==""] <- "Other" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX ==""] <- "Other" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX ==""] <- "Other" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX ==""] <- "Other" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX ==""] <- "Other" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX ==""] <- "Other" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX ==""] <- "Other" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX ==""] <- "Other" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX ==""] <- "Other" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX ==""] <- "Other" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX ==""] <- "Other" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX ==""] <- "Other" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX ==""] <- "Other" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX ==""] <- "Other" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX ==""] <- "Other" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX ==""] <- "Other" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX ==""] <- "Other" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX ==""] <- "Other" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX ==""] <- "Other" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX ==""] <- "Other" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX ==""] <- "Other" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX ==""] <- "Other" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX ==""] <- "Other" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX ==""] <- "Other" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX ==""] <- "Other" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX ==""] <- "Other" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX ==""] <- "Other" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX ==""] <- "Other" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX ==""] <- "Other" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX ==""] <- "Other" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX ==""] <- "Other" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX ==""] <- "Other" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX ==""] <- "Other" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX ==""] <- "Other" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX ==""] <- "Other" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX ==""] <- "Other" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX ==""] <- "Other" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX ==""] <- "Other" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX ==""] <- "Other" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX ==""] <- "Other" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX ==""] <- "Other" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX ==""] <- "Other" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX ==""] <- "Other" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX ==""] <- "Other" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX ==""] <- "Other" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX ==""] <- "Other" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX ==""] <- "Other" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX ==""] <- "Other" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX ==""] <- "Other" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX ==""] <- "Other" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX ==""] <- "Other" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX ==""] <- "Other" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX ==""] <- "Other" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX ==""] <- "Other" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX ==""] <- "Other" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX ==""] <- "Other" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX ==""] <- "Other" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX ==""] <- "Other" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX ==""] <- "Other" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX ==""] <- "Other" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX ==""] <- "Other" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX ==""] <- "Other" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX ==""] <- "Other" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX ==""] <- "Other" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX ==""] <- "Other" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX ==""] <- "Other" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX ==""] <- "Other" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX ==""] <- "Other" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX ==""] <- "Other" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX ==""] <- "Other" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX ==""] <- "Other" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX ==""] <- "Other" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX ==""] <- "Other" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX ==""] <- "Other" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX ==""] <- "Other" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX ==""] <- "Other" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX ==""] <- "Other" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX ==""] <- "Other" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX ==""] <- "Other" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX ==""] <- "Other" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX ==""] <- "Other" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX ==""] <- "Other" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX ==""] <- "Other" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX ==""] <- "Other" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX ==""] <- "Other" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX ==""] <- "Other" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX ==""] <- "Other" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX ==""] <- "Other" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX ==""] <- "Other" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX ==""] <- "Other" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX ==""] <- "Other" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX ==""] <- "Other" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX ==""] <- "Other" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX ==""] <- "Other" NSQIPGENSURG$PRNCPTX[NSQIPGENSURG$PRNCPTX ==""] <- "Other"
Portland FRS Project
--- output: html_document: default pdf_document: default --- # FRS Project: Demographic Table ## By: Abdimajid Mohamed ```{r} load("FRSNomogram.RData") library(dplyr) library(gtsummary) library(survival) library(labelled) library(tidyverse) library(broom) library(ggplot2) library(survminer) library(pROC) library(rms) library(VIM) library(rmarkdown) library(ROCR) ``` **Creating Demographic Table: Creating Serious Complication and Any Complication** ```{r felse function to create new column for serious complication and any complication} FRSDemo1 <- mutate(FRSDemo, SeriousComplication = ifelse(CDARREST == "Cardiac Arrest Requiring CPR", "Yes", ifelse(CDMI == "Myocardial Infarction", "Yes", ifelse(OUPNEUMO == "Pneumonia", "Yes", ifelse(RENAINSF == "Progressive Renal Insufficiency", "Yes", ifelse(OPRENAFL == "Acute Renal Failure", "Yes", ifelse(PULEMBOL == "Pulmonary Embolism", "Yes", ifelse(OTHDVT == "DVT Requiring Therapy", "Yes", ifelse(RETURNOR == "Yes", "Yes", ifelse(ORGSPCSSI == "Organ/Space SSI", "Yes", ifelse(PRSEPIS == "Yes", "Yes", ifelse(REINTUB == "Unplanned Intubation", "Yes", ifelse(URNINFEC == "Urinary Tract Infection", "Yes", ifelse(DEHIS == "Wound Disruption", "Yes", "No")))))))))))))) ``` ```{R Completing the Serious Complication or Any Complication Code} FRSDemo2 <- mutate(FRSDemo1, AnyComplication = ifelse(CDARREST == "Cardiac Arrest Requiring CPR", "Yes", ifelse(CDMI == "Myocardial Infarction", "Yes", ifelse(OUPNEUMO == "Pneumonia", "Yes", ifelse(RENAINSF == "Progressive Renal Insufficiency", "Yes", ifelse(OPRENAFL == "Acute Renal Failure", "Yes", ifelse(PULEMBOL == "Pulmonary Embolism", "Yes", ifelse(OTHDVT == "DVT Requiring Therapy", "Yes", ifelse(RETURNOR == "Yes", "Yes", ifelse(ORGSPCSSI == "Organ/Space SSI", "Yes", ifelse(PRSEPIS == "Yes", "Yes", ifelse(REINTUB == "Unplanned Intubation", "Yes", ifelse(URNINFEC == "Urinary Tract Infection", "Yes", ifelse(SUPINFEC == "Superficial Incisional SSI", "Yes", ifelse(FAILWEAN == "On Ventilator greater than 48 Hours", "Yes", ifelse(CNSCVA == "Stroke/CVA", "Yes", ifelse(DEHIS == "Wound Disruption", "Yes", "No"))))))))))))))))) ``` ```{r Recoding mortality} FRSDemo2$DOpertoD[is.na(FRSDemo2$DOpertoD)] <- "No" FRSDemo2$DOpertoD[FRSDemo2$DOpertoD == 0] <- "Yes" FRSDemo2$DOpertoD[FRSDemo2$DOpertoD == 1] <- "Yes" FRSDemo2$DOpertoD[FRSDemo2$DOpertoD == 10] <- "Yes" FRSDemo2$DOpertoD[FRSDemo2$DOpertoD == 11] <- "Yes" FRSDemo2$DOpertoD[FRSDemo2$DOpertoD == 12] <- "Yes" FRSDemo2$DOpertoD[FRSDemo2$DOpertoD == 13] <- "Yes" FRSDemo2$DOpertoD[FRSDemo2$DOpertoD == 14] <- "Yes" FRSDemo2$DOpertoD[FRSDemo2$DOpertoD == 15] <- "Yes" FRSDemo2$DOpertoD[FRSDemo2$DOpertoD == 16] <- "Yes" FRSDemo2$DOpertoD[FRSDemo2$DOpertoD == 18] <- "Yes" FRSDemo2$DOpertoD[FRSDemo2$DOpertoD == 19] <- "Yes" FRSDemo2$DOpertoD[FRSDemo2$DOpertoD == 21] <- "Yes" FRSDemo2$DOpertoD[FRSDemo2$DOpertoD == 22] <- "Yes" FRSDemo2$DOpertoD[FRSDemo2$DOpertoD == 23] <- "Yes" FRSDemo2$DOpertoD[FRSDemo2$DOpertoD == 24] <- "Yes" FRSDemo2$DOpertoD[FRSDemo2$DOpertoD == 25] <- "Yes" FRSDemo2$DOpertoD[FRSDemo2$DOpertoD == 26] <- "Yes" FRSDemo2$DOpertoD[FRSDemo2$DOpertoD == 27] <- "Yes" FRSDemo2$DOpertoD[FRSDemo2$DOpertoD == 28] <- "Yes" FRSDemo2$DOpertoD[FRSDemo2$DOpertoD == 29] <- "Yes" FRSDemo2$DOpertoD[FRSDemo2$DOpertoD == 3] <- "Yes" FRSDemo2$DOpertoD[FRSDemo2$DOpertoD == 30] <- "Yes" FRSDemo2$DOpertoD[FRSDemo2$DOpertoD == 4] <- "Yes" FRSDemo2$DOpertoD[FRSDemo2$DOpertoD == 5] <- "Yes" FRSDemo2$DOpertoD[FRSDemo2$DOpertoD == 6] <- "Yes" FRSDemo2$DOpertoD[FRSDemo2$DOpertoD == 7] <- "Yes" FRSDemo2$DOpertoD[FRSDemo2$DOpertoD == 9] <- "Yes" FRSDemo2$DOpertoD[FRSDemo2$DOpertoD == 17] <- "Yes" FRSDemo2$DOpertoD[FRSDemo2$DOpertoD == 2] <- "Yes" FRSDemo2$DOpertoD[FRSDemo2$DOpertoD == 8] <- "Yes" FRSDemo2$DOpertoD[FRSDemo2$DOpertoD == 20] <- "Yes" ``` ```{r Select the necessary variables for the demographic table} FRSDemotable <- FRSDemo2 %>% select(Fistula.Grade, Age, SEX, BMI, RACE_NEW, PAN_GLANDTEXT, PAN_DUCTSIZE, DIABETES, PAN_MALIG_HISTOLOGIC, ASACLAS, DOpertoD, DPRBILI, PRALBUM, SeriousComplication, AnyComplication, PAN_RADIO, PAN_CHEMO, CPT) ``` ```{r Separate CPT Codes so that there are only pancreaticduodenectomies} FRSDemoTableFinal <- subset(FRSDemotable, CPT == "48153" | CPT == "48154") ``` ``` {r Labeling Columns} var_label(FRSDemoTableFinal$RACE_NEW) <- "Race" var_label(FRSDemoTableFinal$ASACLAS) <- "ASA Classification" var_label(FRSDemoTableFinal$SEX) <- "Sex" var_label(FRSDemoTableFinal$PAN_GLANDTEXT) <- "Gland Texture" var_label(FRSDemoTableFinal$PAN_DUCTSIZE) <- "Pancreatic Duct Diameter" var_label(FRSDemoTableFinal$DOpertoD) <- "Mortality" var_label(FRSDemoTableFinal$DIABETES) <- "Diabetes" var_label(FRSDemoTableFinal$SeriousComplication) <- "Serious Complication" var_label(FRSDemoTableFinal$AnyComplication) <- "Any Complication" var_label(FRSDemoTableFinal$PAN_CHEMO) <- "Preop Chemotherapy" var_label(FRSDemoTableFinal$PAN_RADIO) <- "Preop Radiation" var_label(FRSDemoTableFinal$PAN_MALIG_HISTOLOGIC) <- "Pathology" var_label(FRSDemoTableFinal$DPRBILI) <- "Preop Bilirubin" ``` ```{r Channge other type and n/a to NA } ###Recoding Pathology FRSDemoTableFinal$PAN_MALIG_HISTOLOGIC[FRSDemoTableFinal$PAN_MALIG_HISTOLOGIC =="Other type"] <- NA FRSDemoTableFinal$PAN_MALIG_HISTOLOGIC[FRSDemoTableFinal$PAN_MALIG_HISTOLOGIC =="N/A"] <- NA FRSDemoTableFinal$PAN_MALIG_HISTOLOGIC[FRSDemoTableFinal$PAN_MALIG_HISTOLOGIC =="Unknown"] <- NA ``` ```{r chemoonly group} FRSDemoTableFinal1 <- FRSDemoTableFinal %>% mutate(FRSDemoTableFinal, ChemoOnly = ifelse(PAN_RADIO == "Yes", "No", ifelse(PAN_CHEMO == "Yes", "Yes", "No"))) ``` ```{r all unknowns to NA} FRSDemoTableFinal1[FRSDemoTableFinal1 =="Unknown"] <- NA ``` ```{r Table Summary} FRSDemoTableFinal1 %>% tbl_summary( by = Fistula.Grade, digits = all_continuous() ~ 2,) %>% add_p(pvalue_fun = ~style_pvalue(.x, digits = 2))%>% bold_p() %>% add_overall() %>% modify_header(label ~ "**Variable**") %>% modify_spanning_header(c("stat_1", "stat_2") ~ "**CR-POPF*") %>% bold_labels() ``` # Odds Ratio Code ```{r BMI --> Obese and non-obese} FRSOddsRatio <- FRSDemoTableFinal %>% mutate(FRSDemoTableFinal1, BMIB = ifelse(BMI >= 30, "Obese", ifelse(BMI <= 30, "Non-Obese", "NA"))) ``` ```{r Filter and select} FRSOddsRatio1 <- FRSOddsRatio %>% select(Fistula.Grade, Age, SEX, BMIB, RACE_NEW, PAN_GLANDTEXT, PAN_DUCTSIZE, DIABETES, PAN_MALIG_HISTOLOGIC, ASACLAS, DOpertoD, DPRBILI, PRALBUM, SeriousComplication, AnyComplication, PAN_RADIO, PAN_CHEMO, ChemoOnly) ``` ```{r Create the binary outcome} FRSOddsRatio2 <- mutate(FRSOddsRatio1, FistulaOddsRatio = ifelse(Fistula.Grade =="CR-POPF", "1", ifelse(Fistula.Grade =="No CR-POPF", "0", "NA"))) ``` ```{R recode all the data correctly} FRSOddsRatio3 <- mutate(FRSOddsRatio2, Pathology = ifelse(PAN_MALIG_HISTOLOGIC == "Pancreatic adenocarcinoma", "Pancreatic Adenocarcinoma", "Other")) ### Turning NA to the actual NA's that are ommitted in pathology FRSOddsRatio3$Pathology[FRSOddsRatio3$Pathology =="NA"] <- NA ### recoding ASA none assigned --> NA FRSOddsRatio3$ASACLAS[FRSOddsRatio3$ASACLAS =="None assigned"] <- NA ###Recoding pancreatic duct diameter FRSOddsRatio3$PAN_DUCTSIZE[FRSOddsRatio3$PAN_DUCTSIZE ==">6 mm"] <- ">3 mm" FRSOddsRatio3$PAN_DUCTSIZE[FRSOddsRatio3$PAN_DUCTSIZE =="3-6 mm"] <- ">3 mm" ##Recoding gland texture FRSOddsRatio3$PAN_GLANDTEXT[FRSOddsRatio3$PAN_GLANDTEXT =="Intermediate"] <- NA ###recode Unknown to NA panductoriginal FRSOddsRatio3$PAN_DUCTSIZE[FRSOddsRatio3$PAN_DUCTSIZE =="Unknown"] <- NA FRSOddsRatio3$FistulaOddsRatio <- as.numeric(FRSOddsRatio3$FistulaOddsRatio) FRSOddsRatio3[FRSOddsRatio3 =="Unknown"] <- NA table(FRSOddsRatio3$ChemoOnly) ``` ```{r Univariant analysis} UV <- FRSOddsRatio3 %>% select(Age, SEX, BMIB, RACE_NEW, PAN_GLANDTEXT, PAN_DUCTSIZE, DIABETES, Pathology, ASACLAS, DPRBILI, PRALBUM, FistulaOddsRatio,ChemoOnly) %>% tbl_uvregression( method = glm, y = FistulaOddsRatio, method.args = list(family = binomial), exponentiate = TRUE, pvalue_fun = ~style_pvalue(.x, digits = 2) ) %>% bold_p(t = 0.10) %>% bold_labels() %>% italicize_levels() ####Multivariant analysis serious complications MVOR <- glm(FistulaOddsRatio ~ Age + SEX + BMIB + RACE_NEW + PAN_GLANDTEXT + PAN_DUCTSIZE + DIABETES + Pathology + ASACLAS + DPRBILI + PRALBUM+ ChemoOnly, data = FRSOddsRatio3, family = binomial("logit"), na.action =na.omit ) ###continue on to merge the table sets MVORTable <- tbl_regression(MVOR, exponentiate = T, pvalue_fun = ~style_pvalue(.x, digits = 2), ) %>% bold_p(t = 0.10) %>% bold_labels() %>% italicize_levels() tbl_merge( list(UV, MVORTable), tab_spanner = c("**Univariable**", "**Multivariable**") ) %>% bold_labels() %>% italicize_levels() ``` ```{r Impute the missing data} FRSObject2 <- kNN(FRSOddsRatio3) FRSObject2 <- subset(FRSObject2, select = Fistula.Grade:Pathology) ``` ```{r creating the 3 separate dataframes with cleaned data without NAs (Adjusted, Seoul, Porltand FRS) to calculate AUC} SeoulFRS <- FRSObject2 %>% select(FistulaOddsRatio, ASACLAS, BMIB, PAN_DUCTSIZE, ASACLAS, PRALBUM) AdjustedFRS <- FRSObject2 %>% select(FistulaOddsRatio, PAN_GLANDTEXT, BMIB, PAN_DUCTSIZE) PortlandFRS <- FRSObject2 %>% select(FistulaOddsRatio, SEX,PAN_GLANDTEXT, BMIB, PAN_DUCTSIZE, Pathology, ChemoOnly, PRALBUM) var_label(PortlandFRS$SEX) <- "Sex" var_label(PortlandFRS$PAN_DUCTSIZE) <- "Duct Size" var_label(PortlandFRS$PAN_GLANDTEXT) <- "Gland Texture" var_label(PortlandFRS$BMIB) <- "BMI" var_label(PortlandFRS$ChemoOnly) <- "Chemotherapy" var_label(PortlandFRS$PRALBUM) <- "Preop Albumin" var_label(PortlandFRS$PAN_GLANDTEXT) <- "Gland Texture" PortlandFRS$SEX[PortlandFRS$SEX =="male"] <- "Male" PortlandFRS$SEX[PortlandFRS$SEX =="female"] <- "Female" ``` ```{r creating the predictive models Adjusted} AdjustedModel <- glm(FistulaOddsRatio~PAN_GLANDTEXT+PAN_DUCTSIZE+BMIB, family = binomial(link = "logit"), data = AdjustedFRS) AdjPredictModel=predict(AdjustedModel) AdjPredictModel1=prediction(AdjPredictModel, AdjustedFRS$FistulaOddsRatio) plot(performance(AdjPredictModel1,"tpr","fpr")) %>% abline(a=0,b=1) ``` ```{r calculate accuracy of above} ##calculate accuracy of above x=performance(AdjPredictModel1,"acc") max=which.max(slot(x,"y.values")[[1]]) acc=slot(x,"y.values")[[1]][max] acc auc=performance(AdjPredictModel1,"auc") unlist(slot(auc,"y.values")) ``` ```{r confidence interval score} ci.auc(AdjustedFRS$FistulaOddsRatio, AdjPredictModel) ``` ```{r creating the predictive models (Adjusted) } SeoulModel <- glm(FistulaOddsRatio~ASACLAS+PAN_DUCTSIZE+BMIB+PAN_DUCTSIZE+PRALBUM, family = binomial(link = "logit"), data = SeoulFRS) SeoulPredictModel=predict(SeoulModel) SeoulPredictModel1=prediction(SeoulPredictModel, SeoulFRS$FistulaOddsRatio) plot(performance(SeoulPredictModel1,"tpr","fpr")) %>% abline(a=0,b=1) ``` ```{r AUC score calculate accuracy of above} x=performance(SeoulPredictModel1,"acc") max=which.max(slot(x,"y.values")[[1]]) acc=slot(x,"y.values")[[1]][max] acc auc=performance(SeoulPredictModel1,"auc") unlist(slot(auc,"y.values")) ``` ```{r calculate the confidence interval} ci.auc(SeoulFRS$FistulaOddsRatio, SeoulPredictModel) ``` ```{r creating the predictive models (Portland) } ##AUC Model Running for Portland FRS AUC PortlandModel <- glm(FistulaOddsRatio~SEX+Pathology+ChemoOnly+PAN_GLANDTEXT+PAN_DUCTSIZE+BMIB+PRALBUM, family = binomial(link = "logit"), data = PortlandFRS) Pr_model=predict(PortlandModel) Pr_model1=prediction(Pr_model, PortlandFRS$FistulaOddsRatio) plot(performance(Pr_model1,"tpr","fpr",)) %>% abline(a=0,b=1) ``` ```{r AUC score: calculate accuracy of above} ##calculate accuracy of above x=performance(Pr_model1,"acc") max=which.max(slot(x,"y.values")[[1]]) acc=slot(x,"y.values")[[1]][max] acc auc=performance(Pr_model1,"auc") unlist(slot(auc,"y.values")) ``` ```{r confidence interval} ci.auc(PortlandFRS$FistulaOddsRatio, Pr_model) ``` ```{r Building the nomogram of the PortlandFRS} ###Nomogram build ddist <- datadist(PortlandFRS) options(datadist = 'ddist') mod.bi <- lrm(FistulaOddsRatio~SEX+PAN_GLANDTEXT+BMIB+PAN_DUCTSIZE+ChemoOnly+Pathology, PortlandFRS) nom.bi <- nomogram(mod.bi, lp.at = seq(-3,4, by=.5), fun = function(x)1/(1+exp(-x)), fun.at = c(.001,.01,.05,seq(.1,.9,by=.1),.95,.99,.999), funlabel = "Risk of Fistula", conf.int = c(0.1,0.7), abbrev = T, minlength = 100, maxscale = 100) plot(nom.bi,lplabel="Linear Predictor", fun.side=c(3,3,1,1,3,1,3,1,1,1,1,1,3), conf.space=c(0.1,0.5), label.every=1, col.grid=gray(c(0.8,0.95)), which="shock") ```
RIsk of Fistula Nomogram
install.packages("rms") # Important packages to load in library(dplyr) library(gtsummary) library(survival) library(labelled) library(tidyverse) library(broom) library(ggplot2) library(survminer) library(pROC) library(rms) ####FRSFull with already coded CR-POPF vs No CR-POPF ##Subsetting the data so it's only patients with CR-POPF vs No CR-POPF FRSDemo <- subset(FRSFUll, Fistula.Grade == "CR-POPF" | Fistula.Grade == "No CR-POPF") ###Variables I want in Demographic Table FRSDemotable <- FRSDemo %>% select(PAN_FISTULA, Fistula.Grade, Age, SEX, BMI, RACE_NEW, PAN_GLANDTEXT, PAN_DUCTSIZE, DIABETES, PAN_MALIG_HISTOLOGIC, ASACLAS, DOpertoD, SeriousComplication, AnyComplication ) #Ifelse function to create new column for serious complication and any complication FRSDemo1 <- mutate(FRSDemo, SeriousComplication = ifelse(CDARREST == "Cardiac Arrest Requiring CPR", "Yes", ifelse(CDMI == "Myocardial Infarction", "Yes", ifelse(OUPNEUMO == "Pneumonia", "Yes", ifelse(RENAINSF == "Progressive Renal Insufficiency", "Yes", ifelse(OPRENAFL == "Acute Renal Failure", "Yes", ifelse(PULEMBOL == "Pulmonary Embolism", "Yes", ifelse(OTHDVT == "DVT Requiring Therapy", "Yes", ifelse(RETURNOR == "Yes", "Yes", ifelse(ORGSPCSSI == "Organ/Space SSI", "Yes", ifelse(PRSEPIS == "Yes", "Yes", ifelse(REINTUB == "Unplanned Intubation", "Yes", ifelse(URNINFEC == "Urinary Tract Infection", "Yes", ifelse(DEHIS == "Wound Disruption", "Yes", "No")))))))))))))) ### Ifelse function to create new column for any complication FRSDemo <- mutate(FRSDemo1, AnyComplication = ifelse(CDARREST == "Cardiac Arrest Requiring CPR", "Yes", ifelse(CDMI == "Myocardial Infarction", "Yes", ifelse(OUPNEUMO == "Pneumonia", "Yes", ifelse(RENAINSF == "Progressive Renal Insufficiency", "Yes", ifelse(OPRENAFL == "Acute Renal Failure", "Yes", ifelse(PULEMBOL == "Pulmonary Embolism", "Yes", ifelse(OTHDVT == "DVT Requiring Therapy", "Yes", ifelse(RETURNOR == "Yes", "Yes", ifelse(ORGSPCSSI == "Organ/Space SSI", "Yes", ifelse(PRSEPIS == "Yes", "Yes", ifelse(REINTUB == "Unplanned Intubation", "Yes", ifelse(URNINFEC == "Urinary Tract Infection", "Yes", ifelse(SUPINFEC == "Superficial Incisional SSI", "Yes", ifelse(FAILWEAN == "On Ventilator greater than 48 Hours", "Yes", ifelse(CNSCVA == "Stroke/CVA", "Yes", ifelse(DEHIS == "Wound Disruption", "Yes", "No"))))))))))))))))) ### Recoding mortality FRSDemo$DOpertoD[is.na(FRSDemo$DOpertoD)] <- "No" FRSDemo$DOpertoD[FRSDemo$DOpertoD == 0] <- "Yes" FRSDemo$DOpertoD[FRSDemo$DOpertoD == 1] <- "Yes" FRSDemo$DOpertoD[FRSDemo$DOpertoD == 10] <- "Yes" FRSDemo$DOpertoD[FRSDemo$DOpertoD == 11] <- "Yes" FRSDemo$DOpertoD[FRSDemo$DOpertoD == 12] <- "Yes" FRSDemo$DOpertoD[FRSDemo$DOpertoD == 13] <- "Yes" FRSDemo$DOpertoD[FRSDemo$DOpertoD == 14] <- "Yes" FRSDemo$DOpertoD[FRSDemo$DOpertoD == 15] <- "Yes" FRSDemo$DOpertoD[FRSDemo$DOpertoD == 16] <- "Yes" FRSDemo$DOpertoD[FRSDemo$DOpertoD == 18] <- "Yes" FRSDemo$DOpertoD[FRSDemo$DOpertoD == 19] <- "Yes" FRSDemo$DOpertoD[FRSDemo$DOpertoD == 21] <- "Yes" FRSDemo$DOpertoD[FRSDemo$DOpertoD == 22] <- "Yes" FRSDemo$DOpertoD[FRSDemo$DOpertoD == 23] <- "Yes" FRSDemo$DOpertoD[FRSDemo$DOpertoD == 24] <- "Yes" FRSDemo$DOpertoD[FRSDemo$DOpertoD == 25] <- "Yes" FRSDemo$DOpertoD[FRSDemo$DOpertoD == 26] <- "Yes" FRSDemo$DOpertoD[FRSDemo$DOpertoD == 27] <- "Yes" FRSDemo$DOpertoD[FRSDemo$DOpertoD == 28] <- "Yes" FRSDemo$DOpertoD[FRSDemo$DOpertoD == 29] <- "Yes" FRSDemo$DOpertoD[FRSDemo$DOpertoD == 3] <- "Yes" FRSDemo$DOpertoD[FRSDemo$DOpertoD == 30] <- "Yes" FRSDemo$DOpertoD[FRSDemo$DOpertoD == 4] <- "Yes" FRSDemo$DOpertoD[FRSDemo$DOpertoD == 5] <- "Yes" FRSDemo$DOpertoD[FRSDemo$DOpertoD == 6] <- "Yes" FRSDemo$DOpertoD[FRSDemo$DOpertoD == 7] <- "Yes" FRSDemo$DOpertoD[FRSDemo$DOpertoD == 9] <- "Yes" FRSDemo$DOpertoD[FRSDemo$DOpertoD == 17] <- "Yes" FRSDemo$DOpertoD[FRSDemo$DOpertoD == 2] <- "Yes" FRSDemo$DOpertoD[FRSDemo$DOpertoD == 8] <- "Yes" FRSDemo$DOpertoD[FRSDemo$DOpertoD == 20] <- "Yes" ###Bringing in Panfinal to ensure I'm utilizing the most uptodate grading criteria for CRPOPF (ISGPS) ADDtoFRSDEMO <- read.csv ("panfinal.csv", header = TRUE, sep = "," ) ###Recode to the 4 grades of ISGPS ADDtoFRSDEMO$Fistula.Grade[ADDtoFRSDEMO$Fistula.Grade =="Grade A"] <- "Biochemical Leak" ADDtoFRSDEMO$Fistula.Grade[ADDtoFRSDEMO$Fistula.Grade =="Grade B"] <- "ISGPS Grade B" ADDtoFRSDEMO$Fistula.Grade[ADDtoFRSDEMO$Fistula.Grade =="Grade C"] <- "ISGPS Grade C" ### Removing Unknowns in fistual grade addtofrsdemo plan prior to adding in that column ADDtoFRSDEMO$Fistula.Grade[ADDtoFRSDEMO$Fistula.Grade =="Unknown"] <- NA ADDtoFRSDEMO <-na.omit(ADDtoFRSDEMO) ###move column over addtofrsdemo -> frsdemo FRSDemoNew <- cbind(FRSDemo, FistualGradeNew = ADDtoFRSDEMO$Fistula.Grade) ####recoding FRSDEMo Pan_fistula to include the labeled ISGPS criteria FRSDemo$PAN_FISTULA[FRSDemo$PAN_FISTULA =="Biochemical Leak only"] <- "Biochemical Leak" FRSDemo$PAN_FISTULA[FRSDemo$PAN_FISTULA =="Yes-persistent drainage, drain continued >7 days"] <- "ISGPS Grade B" FRSDemo$PAN_FISTULA[FRSDemo$PAN_FISTULA =="Yes-clinical diagnosis, percutaneous drainage performed"] <- "ISGPS Grade B" FRSDemo$PAN_FISTULA[FRSDemo$PAN_FISTULA =="Yes-persistent drainage, percutaneous drainage performed"] <- "ISGPS Grade B" FRSDemo$PAN_FISTULA[FRSDemo$PAN_FISTULA =="Yes-persistent drainage, NPO-TPN"] <- "ISGPS Grade B" FRSDemo$PAN_FISTULA[FRSDemo$PAN_FISTULA =="Yes-clinical diagnosis, drain continued >7 days"] <- "ISGPS Grade B" FRSDemo$PAN_FISTULA[FRSDemo$PAN_FISTULA =="Yes, Grade B POPF present"] <- "ISGPS Grade B" FRSDemo$PAN_FISTULA[FRSDemo$PAN_FISTULA =="Yes-clinical diagnosis, spontaneous wound drainage"] <- "ISGPS Grade B" FRSDemo$PAN_FISTULA[FRSDemo$PAN_FISTULA =="Yes-clinical diagnosis, NPO-TPN"] <- "ISGPS Grade B" FRSDemo$PAN_FISTULA[FRSDemo$PAN_FISTULA =="Yes-clinical diagnosis, reoperation performed"] <- "ISGPS Grade C" FRSDemo$PAN_FISTULA[FRSDemo$PAN_FISTULA =="Yes, Grade C POPF present"] <- "ISGPS Grade C" FRSDemo$PAN_FISTULA[FRSDemo$PAN_FISTULA =="Yes-persistent drainage, reoperation performed"] <- "ISGPS Grade C" FRSDemo$PAN_FISTULA[FRSDemo$PAN_FISTULA =="No evidence of Biochemical Leak or POPF"] <- "No Fistula" FRSDemo$PAN_FISTULA[FRSDemo$PAN_FISTULA =="No"] <- "No Fistula" #### Labeling columns var_label(FRSDemotable$PAN_FISTULA) <- "ISGPS Criteria" var_label(FRSDemotable$RACE_NEW) <- "Race" var_label(FRSDemotable$ASACLAS) <- "ASA Classification" var_label(FRSDemotable$SEX) <- "Sex" var_label(FRSDemotable$PAN_GLANDTEXT) <- "Gland Texture" var_label(FRSDemotable$PAN_DUCTSIZE) <- "Pancreatic Duct Diameter" var_label(FRSDemotable$DOpertoD) <- "Mortality" var_label(FRSDemotable$DIABETES) <- "Diabetes" var_label(FRSDemotable$SeriousComplication) <- "Serious Complication" var_label(FRSDemotable$AnyComplication) <- "Any Complication" ## Changing any Unknowns/none assigned to NA FRSDemotable[FRSDemotable =="None assigned"] <- NA FRSDemotable[FRSDemotable =="Unknown"] <- NA ###Try removing 5-moribound from the odds ratio FRSDemotable$ASACLAS[FRSDemotable$ASACLAS =="5-Moribund"] <- NA ##Add column cpt code to demotable FRSDemotable <- cbind(FRSDemotable, CPT = FRSDemo$CPT) ###subsetting only pancreaticoduodenectomy FRSDemoTableFinal <- subset(FRSDemotable, CPT == "48153" | CPT == "48154") ###chemoOnly group FRSDemoTableFinal1 <- FRSDemoTableFinal %>% mutate(FRSDemoTableFinal, ChemoOnly = ifelse(PAN_RADIO == "Yes", "No", ifelse(PAN_CHEMO == "Yes", "Yes", "No"))) #Final Step to create demographic table FRSDemoTableFinal1 %>% tbl_summary( by = Fistula.Grade, digits = all_continuous() ~ 2,) %>% add_p(pvalue_fun = ~style_pvalue(.x, digits = 2))%>% bold_p() %>% add_overall() %>% modify_header(label ~ "**Variable**") %>% modify_spanning_header(c("stat_1", "stat_2") ~ "**Clinically Relevant Postoperative Pancreatic Fistula*") %>% bold_labels() #### Coding for Odds Ratio all below FRSOddsRatio <- FRSDemoTableFinal1 %>% mutate(FRSDemoTableFinal1, BMIB = ifelse(BMI >= 30, "Obese", ifelse(BMI <= 30, "Non-Obese", "NA"))) ###Change CRPOPF to an event "1" FRSOddsRatio1 <- FRSOddsRatio1 %>% mutate(FRSOddsRatio1, FistulaOddsRatio = ifelse(Fistula.Grade =="CR-POPF", "1", ifelse(Fistula.Grade =="No CR-POPF", "0", "NA"))) ###Create and odds ratio for DPAC vs other FRSOddsRatio1 <- mutate(FRSOddsRatio, Pathology = ifelse(PAN_MALIG_HISTOLOGIC == "Pancreatic adenocarcinoma", "Pancreatic Adenocarcinoma", "Other")) ### Turning NA to the actual NA's that are ommitted in pathology FRSOddsRatio1$Pathology[FRSOddsRatio1$Pathology =="NA"] <- NA ###fistulaoddsratio as numeric FRSOddsRatio1$FistulaOddsRatio <- as.numeric(FRSOddsRatio1$FistulaOddsRatio) ###Recoding pancreatic duct diameter FRSOddsRatio1$PAN_DUCTSIZE[FRSOddsRatio1$PAN_DUCTSIZE ==">6 mm"] <- ">3 mm" FRSOddsRatio1$PAN_DUCTSIZE[FRSOddsRatio1$PAN_DUCTSIZE =="3-6 mm"] <- ">3 mm" ##Recoding gland texture FRSOddsRatio1$PAN_GLANDTEXT[FRSOddsRatio1$PAN_GLANDTEXT =="Intermediate"] <- NA ###recode Unknown to NA panductoriginal FRSOddsRatio1$PAN_DUCTSIZE[FRSOddsRatio1$PAN_DUCTSIZE =="Unknown"] <- NA ##Univariant Model Seriouscomplication UV <- CompleteFRS %>% select(FistulaOddsRatio, SEX, PAN_GLANDTEXT, BMIB, PAN_DUCTSIZE, PAN_CHEMO, PAN_RADIO, Pathology) %>% tbl_uvregression( method = glm, y = FistulaOddsRatio, method.args = list(family = binomial), exponentiate = TRUE, pvalue_fun = ~style_pvalue(.x, digits = 2) ) %>% bold_p(t = 0.10) %>% bold_labels() %>% italicize_levels() ####Multivariant analysis serious complications MVOR <- glm(FistulaOddsRatio ~ SEX + PAN_GLANDTEXT + PAN_DUCTSIZE + BMIB + PAN_CHEMO + PAN_RADIO + Pathology, data = CompleteFRS, family = binomial("logit"), na.action =na.omit ) broom::tidy(MVOR, exponentiate = T, conf.int = T) ###continue on to merge the table sets MVORTable <- tbl_regression(MVOR, exponentiate = T, pvalue_fun = ~style_pvalue(.x, digits = 2), ) %>% bold_p(t = 0.10) %>% bold_labels() %>% italicize_levels() tbl_merge( list(UV, MVORTable), tab_spanner = c("**Univariable**", "**Multivariable**") ) %>% bold_labels() %>% italicize_levels() ###Creating AUC graphs install.packages('aod') install.packages('ggplot2') library(aod) library(ggplot2) #Logistic Regression Model install.packages("nnet") library(nnet) ##remove missing so that we can run the model to do the AUC and create 2 dataframes for two separate models CompleteFRS <- FRSOddsRatio1 %>% select(FistulaOddsRatio, PAN_GLANDTEXT, BMIB, PAN_DUCTSIZE, Pathology, PAN_CHEMO, SEX, PAN_RADIO) CompleteFRS <- CompleteFRS %>% remove_missing() AdjustedFRS <- CompleteFRS %>% select(FistulaOddsRatio, PAN_GLANDTEXT, BMIB, PAN_DUCTSIZE) PortlandFRS <- CompleteFRS %>% select(FistulaOddsRatio, SEX,PAN_GLANDTEXT, BMIB, PAN_DUCTSIZE, Pathology, PAN_CHEMO) PortlandFRS <- PortlandFRS %>% remove_missing() ##AUC Model Running for Adjusted FRS AUC AdjustedModel <- glm(FistulaOddsRatio~PAN_GLANDTEXT+PAN_DUCTSIZE+BMIB, family = binomial(link = "logit"), data = AdjustedFRS) PredictModel=predict(AdjustedModel) PredictModel1=prediction(PredictModel, AdjustedFRS$FistulaOddsRatio) plot(performance(PredictModel1,"tpr","fpr")) %>% abline(a=0,b=1) ##calculate accuracy of above x=performance(PredictModel1,"acc") max=which.max(slot(x,"y.values")[[1]]) acc=slot(x,"y.values")[[1]][max] acc abline(a=0,b=1) auc=performance(PredictModel1,"auc") unlist(slot(auc,"y.values")) ci.auc(AdjustedFRS$FistulaOddsRatio, PredictModel) ##AUC for Adjusted and CI ##another way to get the AUC and CI for adjusted AdjustedRocObj <- roc(AdjustedFRS$FistulaOddsRatio, PredictModel) print(AdjustedRocObj$auc) print(ci(AdjustedRocObj)) ##AUC Model Running for Portland FRS AUC PortlandModel <- glm(FistulaOddsRatio~SEX+Pathology+PAN_CHEMO+PAN_GLANDTEXT+PAN_DUCTSIZE+BMIB, family = binomial(link = "logit"), data = PortlandFRS) Pr_model=predict(PortlandModel) Pr_model1=prediction(Pr_model, PortlandFRS$FistulaOddsRatio) plot(performance(Pr_model1,"tpr","fpr",)) %>% abline(a=0,b=1) ##another way to get the AUC and CI PortlandRocObj <- roc(PortlandFRS$FistulaOddsRatio, Pr_model) print(PortlandRocObj$auc) print(ci(PortlandRocObj)) ##calculate accuracy of above x=performance(Pr_model1,"acc") max=which.max(slot(x,"y.values")[[1]]) acc=slot(x,"y.values")[[1]][max] acc abline(a=0,b=1) auc=performance(Pr_model1,"auc") unlist(slot(auc,"y.values")) ci.auc(PortlandFRS$FistulaOddsRatio, Pr_model) #define object to plot rocobj <- roc(AdjustedFRS$FistulaOddsRatio, PredictModel) #create ROC plot ggroc(rocobj) #define object to plot and calculate AUC auc <- round(auc(AdjustedFRS$FistulaOddsRatio, PredictModel),4) #create ROC plot ggroc(rocobj, colour = 'steelblue', size = 2) + ggtitle(paste0('ROC Curve ', '(AUC = ', auc, ')')) ?ggroc ###Obtain more data from the model broom::tidy(ggroc, exponentiate = T, conf.int = T) ####Compare AUC from Adjusted and POrtland roc_(CompleteFRS$FistulaOddsRatio, PredictModel, plot=T) wilcox.test(PredictModel) wilcox.test(Pr_model) delong roc.test(predic, PredictModel1, method=c("delong", "bootstrap")) ###Nomogram build library(rms) ddist <- datadist(CompleteFRS) options(datadist = 'ddist') mod.bi <- lrm(FistulaOddsRatio~SEX+PAN_GLANDTEXT+BMIB+PAN_DUCTSIZE+PAN_CHEMO+Pathology, CompleteFRS) nom.bi <- nomogram(mod.bi, lp.at = seq(-3,4, by=.5), fun = function(x)1/(1+exp(-x)), fun.at = c(.001,.01,.05,seq(.1,.9,by=.1),.95,.99,.999), funlabel = "Risk of Fistula", conf.int = c(0.1,0.7), abbrev = T, minlength = 1) plot(nom.bi,lplabel="Linear Predictor", fun.side=c(3,3,1,1,3,1,3,1,1,1,1,1,3), col.conf=c('red','green'), conf.space=c(0.1,0.5), label.every=3, col.grid=gray(c(0.8,0.95)), which="shock")
Postop Liver Complications
# Important packages to load in library(dplyr) library(gtsummary) library(survival) library(labelled) library(tidyverse) library(broom) library(ggplot2) library(survminer) ## Importing data CSV DrainPaper <- read.csv ("Hepfinal.csv", header = TRUE, sep = "," ) ### Calculating BMI DrainPaper$BMI <- (DrainPaper$WEIGHT / DrainPaper$HEIGHT / DrainPaper$HEIGHT) *703 ### change age to numeric variable DrainPaper$Age <- as.numeric(DrainPaper$Age) #### Creating Morbidly obese, obese and non obese columns HepDemoTable <- DrainPaper %>% mutate(DrainPaper, BMIDT = ifelse(BMI >= 40, "Morbidly Obese", ifelse(BMI >= 30, "Obese", ifelse(BMI < 30, "Non-Obese", NA)))) ##Ifelse function to create new column for serious complication and any complication HepDemotable1 <- mutate(HepDemoTable, SeriousComplication = ifelse(CDARREST == "Cardiac Arrest Requiring CPR", "Yes", ifelse(CDMI == "Myocardial Infarction", "Yes", ifelse(OUPNEUMO == "Pneumonia", "Yes", ifelse(RENAINSF == "Progressive Renal Insufficiency", "Yes", ifelse(OPRENAFL == "Acute Renal Failure", "Yes", ifelse(PULEMBOL == "Pulmonary Embolism", "Yes", ifelse(OTHDVT == "DVT Requiring Therapy", "Yes", ifelse(RETURNOR == "Yes", "Yes", ifelse(ORGSPCSSI == "Organ/Space SSI", "Yes", ifelse(PRSEPIS == "Yes", "Yes", ifelse(REINTUB == "Unplanned Intubation", "Yes", ifelse(URNINFEC == "Urinary Tract Infection", "Yes", ifelse(DEHIS == "Wound Disruption", "Yes", "No")))))))))))))) ### Ifelse function to create new column for any complication MorbidObesityDemoTable <- mutate(HepDemotable1, AnyComplication = ifelse(CDARREST == "Cardiac Arrest Requiring CPR", "Yes", ifelse(CDMI == "Myocardial Infarction", "Yes", ifelse(OUPNEUMO == "Pneumonia", "Yes", ifelse(RENAINSF == "Progressive Renal Insufficiency", "Yes", ifelse(OPRENAFL == "Acute Renal Failure", "Yes", ifelse(PULEMBOL == "Pulmonary Embolism", "Yes", ifelse(OTHDVT == "DVT Requiring Therapy", "Yes", ifelse(RETURNOR == "Yes", "Yes", ifelse(ORGSPCSSI == "Organ/Space SSI", "Yes", ifelse(PRSEPIS == "Yes", "Yes", ifelse(REINTUB == "Unplanned Intubation", "Yes", ifelse(URNINFEC == "Urinary Tract Infection", "Yes", ifelse(SUPINFEC == "Superficial Incisional SSI", "Yes", ifelse(FAILWEAN == "On Ventilator greater than 48 Hours", "Yes", ifelse(CNSCVA == "Stroke/CVA", "Yes", ifelse(DEHIS == "Wound Disruption", "Yes", "No"))))))))))))))))) ### Recoding mortality MorbidObesityDemoTable$DOpertoD[is.na(MorbidObesityDemoTable$DOpertoD)] <- "No" MorbidObesityDemoTable$DOpertoD[MorbidObesityDemoTable$DOpertoD == 0] <- "Yes" MorbidObesityDemoTable$DOpertoD[MorbidObesityDemoTable$DOpertoD == 1] <- "Yes" MorbidObesityDemoTable$DOpertoD[MorbidObesityDemoTable$DOpertoD == 10] <- "Yes" MorbidObesityDemoTable$DOpertoD[MorbidObesityDemoTable$DOpertoD == 11] <- "Yes" MorbidObesityDemoTable$DOpertoD[MorbidObesityDemoTable$DOpertoD == 12] <- "Yes" MorbidObesityDemoTable$DOpertoD[MorbidObesityDemoTable$DOpertoD == 13] <- "Yes" MorbidObesityDemoTable$DOpertoD[MorbidObesityDemoTable$DOpertoD == 14] <- "Yes" MorbidObesityDemoTable$DOpertoD[MorbidObesityDemoTable$DOpertoD == 15] <- "Yes" MorbidObesityDemoTable$DOpertoD[MorbidObesityDemoTable$DOpertoD == 16] <- "Yes" MorbidObesityDemoTable$DOpertoD[MorbidObesityDemoTable$DOpertoD == 18] <- "Yes" MorbidObesityDemoTable$DOpertoD[MorbidObesityDemoTable$DOpertoD == 19] <- "Yes" MorbidObesityDemoTable$DOpertoD[MorbidObesityDemoTable$DOpertoD == 21] <- "Yes" MorbidObesityDemoTable$DOpertoD[MorbidObesityDemoTable$DOpertoD == 22] <- "Yes" MorbidObesityDemoTable$DOpertoD[MorbidObesityDemoTable$DOpertoD == 23] <- "Yes" MorbidObesityDemoTable$DOpertoD[MorbidObesityDemoTable$DOpertoD == 24] <- "Yes" MorbidObesityDemoTable$DOpertoD[MorbidObesityDemoTable$DOpertoD == 25] <- "Yes" MorbidObesityDemoTable$DOpertoD[MorbidObesityDemoTable$DOpertoD == 26] <- "Yes" MorbidObesityDemoTable$DOpertoD[MorbidObesityDemoTable$DOpertoD == 27] <- "Yes" MorbidObesityDemoTable$DOpertoD[MorbidObesityDemoTable$DOpertoD == 28] <- "Yes" MorbidObesityDemoTable$DOpertoD[MorbidObesityDemoTable$DOpertoD == 29] <- "Yes" MorbidObesityDemoTable$DOpertoD[MorbidObesityDemoTable$DOpertoD == 3] <- "Yes" MorbidObesityDemoTable$DOpertoD[MorbidObesityDemoTable$DOpertoD == 30] <- "Yes" MorbidObesityDemoTable$DOpertoD[MorbidObesityDemoTable$DOpertoD == 4] <- "Yes" MorbidObesityDemoTable$DOpertoD[MorbidObesityDemoTable$DOpertoD == 5] <- "Yes" MorbidObesityDemoTable$DOpertoD[MorbidObesityDemoTable$DOpertoD == 6] <- "Yes" MorbidObesityDemoTable$DOpertoD[MorbidObesityDemoTable$DOpertoD == 7] <- "Yes" MorbidObesityDemoTable$DOpertoD[MorbidObesityDemoTable$DOpertoD == 9] <- "Yes" MorbidObesityDemoTable$DOpertoD[MorbidObesityDemoTable$DOpertoD == 17] <- "Yes" MorbidObesityDemoTable$DOpertoD[MorbidObesityDemoTable$DOpertoD == 2] <- "Yes" MorbidObesityDemoTable$DOpertoD[MorbidObesityDemoTable$DOpertoD == 8] <- "Yes" MorbidObesityDemoTable$DOpertoD[MorbidObesityDemoTable$DOpertoD == 20] <- "Yes" #### Labeling columns var_label(MorbidObesityDemoTable$RACE_NEW) <- "Race" var_label(MorbidObesityDemoTable$ASACLAS) <- "ASA Classification" var_label(MorbidObesityDemoTable$SEX) <- "Sex" var_label(MorbidObesityDemoTable$DOpertoD) <- "Mortality" var_label(MorbidObesityDemoTable$SeriousComplication) <- "Serious Complication" var_label(MorbidObesityDemoTable$AnyComplication) <- "Any Complication" ## Changing any Unknowns/none assigned to NA MorbidObesityDemoTable[MorbidObesityDemoTable =="None assigned"] <- NA MorbidObesityDemoTable[MorbidObesityDemoTable =="Unknown"] <- NA ###Try removing 5-moribound from the odds ratio MorbidObesityDemoTable$ASACLAS[MorbidObesityDemoTable$ASACLAS =="5-Moribund"] <- NA ###Variables I want in Demographic Table MorbidObesityDT <- MorbidObesityDemoTable %>% select(BMIDT, Age, SEX, BMI, RACE_NEW, ASACLAS, DOpertoD, OUPNEUMO,PULEMBOL,RETURNOR,REINTUB,SUPINFEC,FAILWEAN,CNSCVA,DEHIS, PRSEPIS, CDMI, CDARREST, OTHDVT,ORGSPCSSI, SeriousComplication, AnyComplication) #Final Step to create demographic table MorbidObesityDT %>% tbl_summary( by = BMIDT, digits = all_continuous() ~ 2,) %>% add_p(pvalue_fun = ~style_pvalue(.x, digits = 2))%>% bold_p() %>% add_overall() %>% modify_header(label ~ "**Variable**") %>% modify_spanning_header(c("stat_1", "stat_2") ~ "**Obesity Classification*") %>% bold_labels() ###Change CRPOPF to an event "1" FRSOddsRatio <- FRSOddsRatio %>% mutate(FRSOddsRatio, FistulaOddsRatio = ifelse(Fistula.Grade =="CR-POPF", "1", ifelse(Fistula.Grade =="No CR-POPF", "0", "NA"))) ###Create and odds ratio for DPAC vs ampullary, duodenal, cystic and islet cell FRSOddsRatio1 <- mutate(FRSOddsRatio, Pathology = ifelse(PAN_MALIG_HISTOLOGIC == "Pancreatic adenocarcinoma", "Pancreatic Adenocarcinoma", "Other")) Maybe add distal choliangio to the above along with ampullary duodenal and cystic ^^^ Also cod duct size to be below and above 3 do something similar with gland texture ### Turning NA to the actual NA's that are ommitted in pathology FRSOddsRatio1$Pathology[FRSOddsRatio1$Pathology =="NA"] <- NA ###fistulaoddsratio as numeric FRSOddsRatio1$FistulaOddsRatio <- as.numeric(FRSOddsRatio1$FistulaOddsRatio) ###Recoding pancreatic duct diameter FRSOddsRatio1$PAN_DUCTSIZE[FRSOddsRatio1$PAN_DUCTSIZE ==">6 mm"] <- ">3 mm" FRSOddsRatio1$PAN_DUCTSIZE[FRSOddsRatio1$PAN_DUCTSIZE =="3-6 mm"] <- ">3 mm" ##Recoding gland texture FRSOddsRatio1$PAN_GLANDTEXT[FRSOddsRatio1$PAN_GLANDTEXT =="Intermediate"] <- NA FRSOddsRatio2 <- FRSOddsRatio1 %>% mutate(FRSOddsRatio1, ChemoOnly = ifelse(PAN_RADIO == "Yes", "No", ifelse(PAN_CHEMO == "Yes", "Yes", "No"))) ##Add in Original Duct diameter into FRSODDSRatio2 FRSNomogram <- cbind(FRSOddsRatio2, PanDuctOriginal = FRSDemo$PAN_DUCTSIZE) ###recode Unknown to NA panductoriginal FRSNomogram$PanDuctOriginal[FRSNomogram$PanDuctOriginal =="Unknown"] <- NA ##Univariant Model Seriouscomplication UV <- FRSNomogram %>% select(FistulaOddsRatio, SEX, PAN_GLANDTEXT, BMIB, PanDuctOriginal, ChemoOnly, PAN_RADIO, Pathology) %>% tbl_uvregression( method = glm, y = FistulaOddsRatio, method.args = list(family = binomial), exponentiate = TRUE, pvalue_fun = ~style_pvalue(.x, digits = 2) ) %>% bold_p(t = 0.10) %>% bold_labels() %>% italicize_levels() ####Multivariant analysis serious complications MVOR <- glm(FistulaOddsRatio ~ SEX + PAN_GLANDTEXT + BMIB + PanDuctOriginal + ChemoOnly + PAN_RADIO + Pathology, data = FRSNomogram, family = binomial("logit"), na.action =na.omit ) broom::tidy(MVOR, exponentiate = T, conf.int = T) FRSNomogram_complete1 <- FRSNomogram_complete %>% remove_missing() predict = predict(MVOR) mutate(predict = predict(MVOR)) FRSNomogram$predict <- predict(MVOR) prob = predict(oneyr_ageadmit,type=c("response")) fit statistics MVORTable <- tbl_regression(MVOR, exponentiate = T, pvalue_fun = ~style_pvalue(.x, digits = 2), ) %>% bold_p(t = 0.10) %>% bold_labels() %>% italicize_levels() tbl_merge( list(UV, MVOR), tab_spanner = c("**Univariable**", "**Multivariable**") ) %>% bold_labels() %>% italicize_levels()
AdjustedFRS AUC Curve: 0.6965 95% CI: 0.6771-0.7158 (DeLong)
# Important packages to load in library(dplyr) library(gtsummary) library(survival) library(labelled) library(tidyverse) library(broom) library(ggplot2) library(survminer) ####FRSFull with already coded CR-POPF vs No CR-POPF ##Subsetting the data so it's only patients with CR-POPF vs No CR-POPF FRSDemo <- subset(FRSFUll, Fistula.Grade == "CR-POPF" | Fistula.Grade == "No CR-POPF") ###Variables I want in Demographic Table FRSDemotable <- FRSDemo %>% select(PAN_FISTULA, Fistula.Grade, Age, SEX, BMI, RACE_NEW, PAN_GLANDTEXT, PAN_DUCTSIZE, DIABETES, PAN_MALIG_HISTOLOGIC, ASACLAS, DOpertoD, SeriousComplication, AnyComplication ) #Ifelse function to create new column for serious complication and any complication FRSDemo1 <- mutate(FRSDemo, SeriousComplication = ifelse(CDARREST == "Cardiac Arrest Requiring CPR", "Yes", ifelse(CDMI == "Myocardial Infarction", "Yes", ifelse(OUPNEUMO == "Pneumonia", "Yes", ifelse(RENAINSF == "Progressive Renal Insufficiency", "Yes", ifelse(OPRENAFL == "Acute Renal Failure", "Yes", ifelse(PULEMBOL == "Pulmonary Embolism", "Yes", ifelse(OTHDVT == "DVT Requiring Therapy", "Yes", ifelse(RETURNOR == "Yes", "Yes", ifelse(ORGSPCSSI == "Organ/Space SSI", "Yes", ifelse(PRSEPIS == "Yes", "Yes", ifelse(REINTUB == "Unplanned Intubation", "Yes", ifelse(URNINFEC == "Urinary Tract Infection", "Yes", ifelse(DEHIS == "Wound Disruption", "Yes", "No")))))))))))))) ### Ifelse function to create new column for any complication FRSDemo <- mutate(FRSDemo1, AnyComplication = ifelse(CDARREST == "Cardiac Arrest Requiring CPR", "Yes", ifelse(CDMI == "Myocardial Infarction", "Yes", ifelse(OUPNEUMO == "Pneumonia", "Yes", ifelse(RENAINSF == "Progressive Renal Insufficiency", "Yes", ifelse(OPRENAFL == "Acute Renal Failure", "Yes", ifelse(PULEMBOL == "Pulmonary Embolism", "Yes", ifelse(OTHDVT == "DVT Requiring Therapy", "Yes", ifelse(RETURNOR == "Yes", "Yes", ifelse(ORGSPCSSI == "Organ/Space SSI", "Yes", ifelse(PRSEPIS == "Yes", "Yes", ifelse(REINTUB == "Unplanned Intubation", "Yes", ifelse(URNINFEC == "Urinary Tract Infection", "Yes", ifelse(SUPINFEC == "Superficial Incisional SSI", "Yes", ifelse(FAILWEAN == "On Ventilator greater than 48 Hours", "Yes", ifelse(CNSCVA == "Stroke/CVA", "Yes", ifelse(DEHIS == "Wound Disruption", "Yes", "No"))))))))))))))))) ### Recoding mortality FRSDemo$DOpertoD[is.na(FRSDemo$DOpertoD)] <- "No" FRSDemo$DOpertoD[FRSDemo$DOpertoD == 0] <- "Yes" FRSDemo$DOpertoD[FRSDemo$DOpertoD == 1] <- "Yes" FRSDemo$DOpertoD[FRSDemo$DOpertoD == 10] <- "Yes" FRSDemo$DOpertoD[FRSDemo$DOpertoD == 11] <- "Yes" FRSDemo$DOpertoD[FRSDemo$DOpertoD == 12] <- "Yes" FRSDemo$DOpertoD[FRSDemo$DOpertoD == 13] <- "Yes" FRSDemo$DOpertoD[FRSDemo$DOpertoD == 14] <- "Yes" FRSDemo$DOpertoD[FRSDemo$DOpertoD == 15] <- "Yes" FRSDemo$DOpertoD[FRSDemo$DOpertoD == 16] <- "Yes" FRSDemo$DOpertoD[FRSDemo$DOpertoD == 18] <- "Yes" FRSDemo$DOpertoD[FRSDemo$DOpertoD == 19] <- "Yes" FRSDemo$DOpertoD[FRSDemo$DOpertoD == 21] <- "Yes" FRSDemo$DOpertoD[FRSDemo$DOpertoD == 22] <- "Yes" FRSDemo$DOpertoD[FRSDemo$DOpertoD == 23] <- "Yes" FRSDemo$DOpertoD[FRSDemo$DOpertoD == 24] <- "Yes" FRSDemo$DOpertoD[FRSDemo$DOpertoD == 25] <- "Yes" FRSDemo$DOpertoD[FRSDemo$DOpertoD == 26] <- "Yes" FRSDemo$DOpertoD[FRSDemo$DOpertoD == 27] <- "Yes" FRSDemo$DOpertoD[FRSDemo$DOpertoD == 28] <- "Yes" FRSDemo$DOpertoD[FRSDemo$DOpertoD == 29] <- "Yes" FRSDemo$DOpertoD[FRSDemo$DOpertoD == 3] <- "Yes" FRSDemo$DOpertoD[FRSDemo$DOpertoD == 30] <- "Yes" FRSDemo$DOpertoD[FRSDemo$DOpertoD == 4] <- "Yes" FRSDemo$DOpertoD[FRSDemo$DOpertoD == 5] <- "Yes" FRSDemo$DOpertoD[FRSDemo$DOpertoD == 6] <- "Yes" FRSDemo$DOpertoD[FRSDemo$DOpertoD == 7] <- "Yes" FRSDemo$DOpertoD[FRSDemo$DOpertoD == 9] <- "Yes" FRSDemo$DOpertoD[FRSDemo$DOpertoD == 17] <- "Yes" FRSDemo$DOpertoD[FRSDemo$DOpertoD == 2] <- "Yes" FRSDemo$DOpertoD[FRSDemo$DOpertoD == 8] <- "Yes" FRSDemo$DOpertoD[FRSDemo$DOpertoD == 20] <- "Yes" ###Bringing in Panfinal to ensure I'm utilizing the most uptodate grading criteria for CRPOPF (ISGPS) ADDtoFRSDEMO <- read.csv ("panfinal.csv", header = TRUE, sep = "," ) ###Recode to the 4 grades of ISGPS ADDtoFRSDEMO$Fistula.Grade[ADDtoFRSDEMO$Fistula.Grade =="Grade A"] <- "Biochemical Leak" ADDtoFRSDEMO$Fistula.Grade[ADDtoFRSDEMO$Fistula.Grade =="Grade B"] <- "ISGPS Grade B" ADDtoFRSDEMO$Fistula.Grade[ADDtoFRSDEMO$Fistula.Grade =="Grade C"] <- "ISGPS Grade C" ### Removing Unknowns in fistual grade addtofrsdemo plan prior to adding in that column ADDtoFRSDEMO$Fistula.Grade[ADDtoFRSDEMO$Fistula.Grade =="Unknown"] <- NA ADDtoFRSDEMO <-na.omit(ADDtoFRSDEMO) ###move column over addtofrsdemo -> frsdemo FRSDemoNew <- cbind(FRSDemo, FistualGradeNew = ADDtoFRSDEMO$Fistula.Grade) ####recoding FRSDEMo Pan_fistula to include the labeled ISGPS criteria FRSDemo$PAN_FISTULA[FRSDemo$PAN_FISTULA =="Biochemical Leak only"] <- "Biochemical Leak" FRSDemo$PAN_FISTULA[FRSDemo$PAN_FISTULA =="Yes-persistent drainage, drain continued >7 days"] <- "ISGPS Grade B" FRSDemo$PAN_FISTULA[FRSDemo$PAN_FISTULA =="Yes-clinical diagnosis, percutaneous drainage performed"] <- "ISGPS Grade B" FRSDemo$PAN_FISTULA[FRSDemo$PAN_FISTULA =="Yes-persistent drainage, percutaneous drainage performed"] <- "ISGPS Grade B" FRSDemo$PAN_FISTULA[FRSDemo$PAN_FISTULA =="Yes-persistent drainage, NPO-TPN"] <- "ISGPS Grade B" FRSDemo$PAN_FISTULA[FRSDemo$PAN_FISTULA =="Yes-clinical diagnosis, drain continued >7 days"] <- "ISGPS Grade B" FRSDemo$PAN_FISTULA[FRSDemo$PAN_FISTULA =="Yes, Grade B POPF present"] <- "ISGPS Grade B" FRSDemo$PAN_FISTULA[FRSDemo$PAN_FISTULA =="Yes-clinical diagnosis, spontaneous wound drainage"] <- "ISGPS Grade B" FRSDemo$PAN_FISTULA[FRSDemo$PAN_FISTULA =="Yes-clinical diagnosis, NPO-TPN"] <- "ISGPS Grade B" FRSDemo$PAN_FISTULA[FRSDemo$PAN_FISTULA =="Yes-clinical diagnosis, reoperation performed"] <- "ISGPS Grade C" FRSDemo$PAN_FISTULA[FRSDemo$PAN_FISTULA =="Yes, Grade C POPF present"] <- "ISGPS Grade C" FRSDemo$PAN_FISTULA[FRSDemo$PAN_FISTULA =="Yes-persistent drainage, reoperation performed"] <- "ISGPS Grade C" FRSDemo$PAN_FISTULA[FRSDemo$PAN_FISTULA =="No evidence of Biochemical Leak or POPF"] <- "No Fistula" FRSDemo$PAN_FISTULA[FRSDemo$PAN_FISTULA =="No"] <- "No Fistula" #### Labeling columns var_label(FRSDemotable$PAN_FISTULA) <- "ISGPS Criteria" var_label(FRSDemotable$RACE_NEW) <- "Race" var_label(FRSDemotable$ASACLAS) <- "ASA Classification" var_label(FRSDemotable$SEX) <- "Sex" var_label(FRSDemotable$PAN_GLANDTEXT) <- "Gland Texture" var_label(FRSDemotable$PAN_DUCTSIZE) <- "Pancreatic Duct Diameter" var_label(FRSDemotable$DOpertoD) <- "Mortality" var_label(FRSDemotable$DIABETES) <- "Diabetes" var_label(FRSDemotable$SeriousComplication) <- "Serious Complication" var_label(FRSDemotable$AnyComplication) <- "Any Complication" ## Changing any Unknowns/none assigned to NA FRSDemotable[FRSDemotable =="None assigned"] <- NA FRSDemotable[FRSDemotable =="Unknown"] <- NA ###Try removing 5-moribound from the odds ratio FRSDemotable$ASACLAS[FRSDemotable$ASACLAS =="5-Moribund"] <- NA ##Add column cpt code to demotable FRSDemotable <- cbind(FRSDemotable, CPT = FRSDemo$CPT) ###subsetting only pancreaticoduodenectomy FRSDemoTableFinal <- subset(FRSDemotable, CPT == "48153" | CPT == "48154") ###chemoOnly group FRSDemoTableFinal1 <- FRSDemoTableFinal %>% mutate(FRSDemoTableFinal, ChemoOnly = ifelse(PAN_RADIO == "Yes", "No", ifelse(PAN_CHEMO == "Yes", "Yes", "No"))) #Final Step to create demographic table FRSDemoTableFinal1 %>% tbl_summary( by = Fistula.Grade, digits = all_continuous() ~ 2,) %>% add_p(pvalue_fun = ~style_pvalue(.x, digits = 2))%>% bold_p() %>% add_overall() %>% modify_header(label ~ "**Variable**") %>% modify_spanning_header(c("stat_1", "stat_2") ~ "**Clinically Relevant Postoperative Pancreatic Fistula*") %>% bold_labels() #### Coding for Odds Ratio all below FRSOddsRatio <- FRSDemoTableFinal1 %>% mutate(FRSDemoTableFinal1, BMIB = ifelse(BMI >= 30, "Obese", ifelse(BMI <= 30, "Non-Obese", "NA"))) ###Change CRPOPF to an event "1" FRSOddsRatio1 <- FRSOddsRatio1 %>% mutate(FRSOddsRatio1, FistulaOddsRatio = ifelse(Fistula.Grade =="CR-POPF", "1", ifelse(Fistula.Grade =="No CR-POPF", "0", "NA"))) ###Create and odds ratio for DPAC vs other FRSOddsRatio1 <- mutate(FRSOddsRatio, Pathology = ifelse(PAN_MALIG_HISTOLOGIC == "Pancreatic adenocarcinoma", "Pancreatic Adenocarcinoma", "Other")) ### Turning NA to the actual NA's that are ommitted in pathology FRSOddsRatio1$Pathology[FRSOddsRatio1$Pathology =="NA"] <- NA ###fistulaoddsratio as numeric FRSOddsRatio1$FistulaOddsRatio <- as.numeric(FRSOddsRatio1$FistulaOddsRatio) ###Recoding pancreatic duct diameter FRSOddsRatio1$PAN_DUCTSIZE[FRSOddsRatio1$PAN_DUCTSIZE ==">6 mm"] <- ">3 mm" FRSOddsRatio1$PAN_DUCTSIZE[FRSOddsRatio1$PAN_DUCTSIZE =="3-6 mm"] <- ">3 mm" ##Recoding gland texture FRSOddsRatio1$PAN_GLANDTEXT[FRSOddsRatio1$PAN_GLANDTEXT =="Intermediate"] <- NA ###recode Unknown to NA panductoriginal FRSOddsRatio1$PAN_DUCTSIZE[FRSOddsRatio1$PAN_DUCTSIZE =="Unknown"] <- NA ##Univariant Model Seriouscomplication UV <- FRSOddsRatio2 %>% select(FistulaOddsRatio, SEX, PAN_GLANDTEXT, BMIB, PAN_DUCTSIZE, ChemoOnly, PAN_RADIO, Pathology) %>% tbl_uvregression( method = glm, y = FistulaOddsRatio, method.args = list(family = binomial), exponentiate = TRUE, pvalue_fun = ~style_pvalue(.x, digits = 2) ) %>% bold_p(t = 0.10) %>% bold_labels() %>% italicize_levels() ####Multivariant analysis serious complications MVOR <- glm(FistulaOddsRatio ~ SEX + PAN_GLANDTEXT + PAN_DUCTSIZE + BMIB + ChemoOnly + PAN_RADIO + Pathology, data = FRSAUC, family = binomial("logit"), na.action =na.omit ) broom::tidy(MVOR, exponentiate = T, conf.int = T) ###continue on to merge the table sets MVORTable <- tbl_regression(MVOR, exponentiate = T, pvalue_fun = ~style_pvalue(.x, digits = 2), ) %>% bold_p(t = 0.10) %>% bold_labels() %>% italicize_levels() tbl_merge( list(UV, MVORTable), tab_spanner = c("**Univariable**", "**Multivariable**") ) %>% bold_labels() %>% italicize_levels() ###Creating AUC graphs install.packages('aod') install.packages('ggplot2') library(aod) library(ggplot2) #Logistic Regression Model install.packages("nnet") library(nnet) ##remove missing so that we can run the model to do the AUC create dataframes for two separate models AdjustedFRS <- FRSOddsRatio1 %>% select(FistulaOddsRatio, PAN_GLANDTEXT, BMIB, PAN_DUCTSIZE) AdjustedFRS <- AdjustedFRS %>% remove_missing() PortlandFRS <- FRSOddsRatio1 %>% select(FistulaOddsRatio, SEX,PAN_GLANDTEXT, BMIB, PAN_DUCTSIZE, Pathology, PAN_CHEMO) PortlandFRS <- PortlandFRS %>% remove_missing() ##AUC Model Running for Adjusted FRS AUC AdjustedModel <- glm(FistulaOddsRatio~PAN_GLANDTEXT+PAN_DUCTSIZE+BMIB, family = binomial(link = "logit"), data = AdjustedFRS) PredictModel=predict(AdjustedModel) PredictModel1=prediction(PredictModel, AdjustedFRS$FistulaOddsRatio) plot(performance(PredictModel1,"tpr","fpr")) %>% abline(a=0,b=1) ##calculate accuracy of above x=performance(PredictModel1,"acc") max=which.max(slot(x,"y.values")[[1]]) acc=slot(x,"y.values")[[1]][max] acc abline(a=0,b=1) auc=performance(PredictModel1,"auc") unlist(slot(auc,"y.values")) ci.auc(AdjustedFRS$FistulaOddsRatio, PredictModel) ##AUC for Adjusted and CI ##another way to get the AUC and CI for adjusted AdjustedRocObj <- roc(AdjustedFRS$FistulaOddsRatio, PredictModel) print(AdjustedRocObj$auc) print(ci(AdjustedRocObj)) ##AUC Model Running for Adjusted FRS AUC PortlandModel <- glm(FistulaOddsRatio~SEX+Pathology+PAN_CHEMO+PAN_GLANDTEXT+PAN_DUCTSIZE+BMIB, family = binomial(link = "logit"), data = PortlandFRS) Pr_model=predict(PortlandModel) Pr_model1=prediction(Pr_model, PortlandFRS$FistulaOddsRatio) plot(performance(Pr_model1,"tpr","fpr",)) %>% abline(a=0,b=1) ##another way to get the AUC and CI PortlandRocObj <- roc(PortlandFRS$FistulaOddsRatio, Pr_model) print(PortlandRocObj$auc) print(ci(PortlandRocObj)) ##calculate accuracy of above x=performance(Pr_model1,"acc") max=which.max(slot(x,"y.values")[[1]]) acc=slot(x,"y.values")[[1]][max] acc abline(a=0,b=1) auc=performance(Pr_model1,"auc") unlist(slot(auc,"y.values")) ci.auc(PortlandFRS$FistulaOddsRatio, Pr_model) #define object to plot rocobj <- roc(AdjustedFRS$FistulaOddsRatio, PredictModel) #create ROC plot ggroc(rocobj) #define object to plot and calculate AUC auc <- round(auc(AdjustedFRS$FistulaOddsRatio, PredictModel),4) #create ROC plot ggroc(rocobj, colour = 'steelblue', size = 2) + ggtitle(paste0('ROC Curve ', '(AUC = ', auc, ')')) ?ggroc ###Obtain more data from the model broom::tidy(ggroc, exponentiate = T, conf.int = T)
AUC Portland FRS = 0.7218 (95% CI: 0.6987-0.745)
# Important packages to load in library(dplyr) library(gtsummary) library(survival) library(labelled) library(tidyverse) library(broom) library(ggplot2) library(survminer) ####FRSFull with already coded CR-POPF vs No CR-POPF ##Subsetting the data so it's only patients with CR-POPF vs No CR-POPF FRSDemo <- subset(FRSFUll, Fistula.Grade == "CR-POPF" | Fistula.Grade == "No CR-POPF") ###Variables I want in Demographic Table FRSDemotable <- FRSDemo %>% select(PAN_FISTULA, Fistula.Grade, Age, SEX, BMI, RACE_NEW, PAN_GLANDTEXT, PAN_DUCTSIZE, DIABETES, PAN_MALIG_HISTOLOGIC, ASACLAS, DOpertoD, SeriousComplication, AnyComplication ) #Ifelse function to create new column for serious complication and any complication FRSDemo1 <- mutate(FRSDemo, SeriousComplication = ifelse(CDARREST == "Cardiac Arrest Requiring CPR", "Yes", ifelse(CDMI == "Myocardial Infarction", "Yes", ifelse(OUPNEUMO == "Pneumonia", "Yes", ifelse(RENAINSF == "Progressive Renal Insufficiency", "Yes", ifelse(OPRENAFL == "Acute Renal Failure", "Yes", ifelse(PULEMBOL == "Pulmonary Embolism", "Yes", ifelse(OTHDVT == "DVT Requiring Therapy", "Yes", ifelse(RETURNOR == "Yes", "Yes", ifelse(ORGSPCSSI == "Organ/Space SSI", "Yes", ifelse(PRSEPIS == "Yes", "Yes", ifelse(REINTUB == "Unplanned Intubation", "Yes", ifelse(URNINFEC == "Urinary Tract Infection", "Yes", ifelse(DEHIS == "Wound Disruption", "Yes", "No")))))))))))))) ### Ifelse function to create new column for any complication FRSDemo <- mutate(FRSDemo1, AnyComplication = ifelse(CDARREST == "Cardiac Arrest Requiring CPR", "Yes", ifelse(CDMI == "Myocardial Infarction", "Yes", ifelse(OUPNEUMO == "Pneumonia", "Yes", ifelse(RENAINSF == "Progressive Renal Insufficiency", "Yes", ifelse(OPRENAFL == "Acute Renal Failure", "Yes", ifelse(PULEMBOL == "Pulmonary Embolism", "Yes", ifelse(OTHDVT == "DVT Requiring Therapy", "Yes", ifelse(RETURNOR == "Yes", "Yes", ifelse(ORGSPCSSI == "Organ/Space SSI", "Yes", ifelse(PRSEPIS == "Yes", "Yes", ifelse(REINTUB == "Unplanned Intubation", "Yes", ifelse(URNINFEC == "Urinary Tract Infection", "Yes", ifelse(SUPINFEC == "Superficial Incisional SSI", "Yes", ifelse(FAILWEAN == "On Ventilator greater than 48 Hours", "Yes", ifelse(CNSCVA == "Stroke/CVA", "Yes", ifelse(DEHIS == "Wound Disruption", "Yes", "No"))))))))))))))))) ### Recoding mortality FRSDemo$DOpertoD[is.na(FRSDemo$DOpertoD)] <- "No" FRSDemo$DOpertoD[FRSDemo$DOpertoD == 0] <- "Yes" FRSDemo$DOpertoD[FRSDemo$DOpertoD == 1] <- "Yes" FRSDemo$DOpertoD[FRSDemo$DOpertoD == 10] <- "Yes" FRSDemo$DOpertoD[FRSDemo$DOpertoD == 11] <- "Yes" FRSDemo$DOpertoD[FRSDemo$DOpertoD == 12] <- "Yes" FRSDemo$DOpertoD[FRSDemo$DOpertoD == 13] <- "Yes" FRSDemo$DOpertoD[FRSDemo$DOpertoD == 14] <- "Yes" FRSDemo$DOpertoD[FRSDemo$DOpertoD == 15] <- "Yes" FRSDemo$DOpertoD[FRSDemo$DOpertoD == 16] <- "Yes" FRSDemo$DOpertoD[FRSDemo$DOpertoD == 18] <- "Yes" FRSDemo$DOpertoD[FRSDemo$DOpertoD == 19] <- "Yes" FRSDemo$DOpertoD[FRSDemo$DOpertoD == 21] <- "Yes" FRSDemo$DOpertoD[FRSDemo$DOpertoD == 22] <- "Yes" FRSDemo$DOpertoD[FRSDemo$DOpertoD == 23] <- "Yes" FRSDemo$DOpertoD[FRSDemo$DOpertoD == 24] <- "Yes" FRSDemo$DOpertoD[FRSDemo$DOpertoD == 25] <- "Yes" FRSDemo$DOpertoD[FRSDemo$DOpertoD == 26] <- "Yes" FRSDemo$DOpertoD[FRSDemo$DOpertoD == 27] <- "Yes" FRSDemo$DOpertoD[FRSDemo$DOpertoD == 28] <- "Yes" FRSDemo$DOpertoD[FRSDemo$DOpertoD == 29] <- "Yes" FRSDemo$DOpertoD[FRSDemo$DOpertoD == 3] <- "Yes" FRSDemo$DOpertoD[FRSDemo$DOpertoD == 30] <- "Yes" FRSDemo$DOpertoD[FRSDemo$DOpertoD == 4] <- "Yes" FRSDemo$DOpertoD[FRSDemo$DOpertoD == 5] <- "Yes" FRSDemo$DOpertoD[FRSDemo$DOpertoD == 6] <- "Yes" FRSDemo$DOpertoD[FRSDemo$DOpertoD == 7] <- "Yes" FRSDemo$DOpertoD[FRSDemo$DOpertoD == 9] <- "Yes" FRSDemo$DOpertoD[FRSDemo$DOpertoD == 17] <- "Yes" FRSDemo$DOpertoD[FRSDemo$DOpertoD == 2] <- "Yes" FRSDemo$DOpertoD[FRSDemo$DOpertoD == 8] <- "Yes" FRSDemo$DOpertoD[FRSDemo$DOpertoD == 20] <- "Yes" ###Bringing in Panfinal to ensure I'm utilizing the most uptodate grading criteria for CRPOPF (ISGPS) ADDtoFRSDEMO <- read.csv ("panfinal.csv", header = TRUE, sep = "," ) ###Recode to the 4 grades of ISGPS ADDtoFRSDEMO$Fistula.Grade[ADDtoFRSDEMO$Fistula.Grade =="Grade A"] <- "Biochemical Leak" ADDtoFRSDEMO$Fistula.Grade[ADDtoFRSDEMO$Fistula.Grade =="Grade B"] <- "ISGPS Grade B" ADDtoFRSDEMO$Fistula.Grade[ADDtoFRSDEMO$Fistula.Grade =="Grade C"] <- "ISGPS Grade C" ### Removing Unknowns in fistual grade addtofrsdemo plan prior to adding in that column ADDtoFRSDEMO$Fistula.Grade[ADDtoFRSDEMO$Fistula.Grade =="Unknown"] <- NA ADDtoFRSDEMO <-na.omit(ADDtoFRSDEMO) ###move column over addtofrsdemo -> frsdemo FRSDemoNew <- cbind(FRSDemo, FistualGradeNew = ADDtoFRSDEMO$Fistula.Grade) ####recoding FRSDEMo Pan_fistula to include the labeled ISGPS criteria FRSDemo$PAN_FISTULA[FRSDemo$PAN_FISTULA =="Biochemical Leak only"] <- "Biochemical Leak" FRSDemo$PAN_FISTULA[FRSDemo$PAN_FISTULA =="Yes-persistent drainage, drain continued >7 days"] <- "ISGPS Grade B" FRSDemo$PAN_FISTULA[FRSDemo$PAN_FISTULA =="Yes-clinical diagnosis, percutaneous drainage performed"] <- "ISGPS Grade B" FRSDemo$PAN_FISTULA[FRSDemo$PAN_FISTULA =="Yes-persistent drainage, percutaneous drainage performed"] <- "ISGPS Grade B" FRSDemo$PAN_FISTULA[FRSDemo$PAN_FISTULA =="Yes-persistent drainage, NPO-TPN"] <- "ISGPS Grade B" FRSDemo$PAN_FISTULA[FRSDemo$PAN_FISTULA =="Yes-clinical diagnosis, drain continued >7 days"] <- "ISGPS Grade B" FRSDemo$PAN_FISTULA[FRSDemo$PAN_FISTULA =="Yes, Grade B POPF present"] <- "ISGPS Grade B" FRSDemo$PAN_FISTULA[FRSDemo$PAN_FISTULA =="Yes-clinical diagnosis, spontaneous wound drainage"] <- "ISGPS Grade B" FRSDemo$PAN_FISTULA[FRSDemo$PAN_FISTULA =="Yes-clinical diagnosis, NPO-TPN"] <- "ISGPS Grade B" FRSDemo$PAN_FISTULA[FRSDemo$PAN_FISTULA =="Yes-clinical diagnosis, reoperation performed"] <- "ISGPS Grade C" FRSDemo$PAN_FISTULA[FRSDemo$PAN_FISTULA =="Yes, Grade C POPF present"] <- "ISGPS Grade C" FRSDemo$PAN_FISTULA[FRSDemo$PAN_FISTULA =="Yes-persistent drainage, reoperation performed"] <- "ISGPS Grade C" FRSDemo$PAN_FISTULA[FRSDemo$PAN_FISTULA =="No evidence of Biochemical Leak or POPF"] <- "No Fistula" FRSDemo$PAN_FISTULA[FRSDemo$PAN_FISTULA =="No"] <- "No Fistula" #### Labeling columns var_label(FRSDemotable$PAN_FISTULA) <- "ISGPS Criteria" var_label(FRSDemotable$RACE_NEW) <- "Race" var_label(FRSDemotable$ASACLAS) <- "ASA Classification" var_label(FRSDemotable$SEX) <- "Sex" var_label(FRSDemotable$PAN_GLANDTEXT) <- "Gland Texture" var_label(FRSDemotable$PAN_DUCTSIZE) <- "Pancreatic Duct Diameter" var_label(FRSDemotable$DOpertoD) <- "Mortality" var_label(FRSDemotable$DIABETES) <- "Diabetes" var_label(FRSDemotable$SeriousComplication) <- "Serious Complication" var_label(FRSDemotable$AnyComplication) <- "Any Complication" ## Changing any Unknowns/none assigned to NA FRSDemotable[FRSDemotable =="None assigned"] <- NA FRSDemotable[FRSDemotable =="Unknown"] <- NA ###Try removing 5-moribound from the odds ratio FRSDemotable$ASACLAS[FRSDemotable$ASACLAS =="5-Moribund"] <- NA ##Add column cpt code to demotable FRSDemotable <- cbind(FRSDemotable, CPT = FRSDemo$CPT) ###subsetting only pancreaticoduodenectomy FRSDemoTableFinal <- subset(FRSDemotable, CPT == "48153" | CPT == "48154") ###chemoOnly group FRSDemoTableFinal1 <- FRSDemoTableFinal %>% mutate(FRSDemoTableFinal, ChemoOnly = ifelse(PAN_RADIO == "Yes", "No", ifelse(PAN_CHEMO == "Yes", "Yes", "No"))) #Final Step to create demographic table FRSDemoTableFinal1 %>% tbl_summary( by = Fistula.Grade, digits = all_continuous() ~ 2,) %>% add_p(pvalue_fun = ~style_pvalue(.x, digits = 2))%>% bold_p() %>% add_overall() %>% modify_header(label ~ "**Variable**") %>% modify_spanning_header(c("stat_1", "stat_2") ~ "**Clinically Relevant Postoperative Pancreatic Fistula*") %>% bold_labels() #### Coding for Odds Ratio all below FRSOddsRatio <- FRSDemoTableFinal1 %>% mutate(FRSDemoTableFinal1, BMIB = ifelse(BMI >= 30, "Obese", ifelse(BMI <= 30, "Non-Obese", "NA"))) ###Change CRPOPF to an event "1" FRSOddsRatio1 <- FRSOddsRatio1 %>% mutate(FRSOddsRatio1, FistulaOddsRatio = ifelse(Fistula.Grade =="CR-POPF", "1", ifelse(Fistula.Grade =="No CR-POPF", "0", "NA"))) ###Create and odds ratio for DPAC vs other FRSOddsRatio1 <- mutate(FRSOddsRatio, Pathology = ifelse(PAN_MALIG_HISTOLOGIC == "Pancreatic adenocarcinoma", "Pancreatic Adenocarcinoma", "Other")) ### Turning NA to the actual NA's that are ommitted in pathology FRSOddsRatio1$Pathology[FRSOddsRatio1$Pathology =="NA"] <- NA ###fistulaoddsratio as numeric FRSOddsRatio1$FistulaOddsRatio <- as.numeric(FRSOddsRatio1$FistulaOddsRatio) ###Recoding pancreatic duct diameter FRSOddsRatio1$PAN_DUCTSIZE[FRSOddsRatio1$PAN_DUCTSIZE ==">6 mm"] <- ">3 mm" FRSOddsRatio1$PAN_DUCTSIZE[FRSOddsRatio1$PAN_DUCTSIZE =="3-6 mm"] <- ">3 mm" ##Recoding gland texture FRSOddsRatio1$PAN_GLANDTEXT[FRSOddsRatio1$PAN_GLANDTEXT =="Intermediate"] <- NA ###recode Unknown to NA panductoriginal FRSOddsRatio1$PAN_DUCTSIZE[FRSOddsRatio1$PAN_DUCTSIZE =="Unknown"] <- NA ##Univariant Model Seriouscomplication UV <- FRSOddsRatio2 %>% select(FistulaOddsRatio, SEX, PAN_GLANDTEXT, BMIB, PAN_DUCTSIZE, ChemoOnly, PAN_RADIO, Pathology) %>% tbl_uvregression( method = glm, y = FistulaOddsRatio, method.args = list(family = binomial), exponentiate = TRUE, pvalue_fun = ~style_pvalue(.x, digits = 2) ) %>% bold_p(t = 0.10) %>% bold_labels() %>% italicize_levels() ####Multivariant analysis serious complications MVOR <- glm(FistulaOddsRatio ~ SEX + PAN_GLANDTEXT + PAN_DUCTSIZE + BMIB + ChemoOnly + PAN_RADIO + Pathology, data = FRSAUC, family = binomial("logit"), na.action =na.omit ) broom::tidy(MVOR, exponentiate = T, conf.int = T) ###continue on to merge the table sets MVORTable <- tbl_regression(MVOR, exponentiate = T, pvalue_fun = ~style_pvalue(.x, digits = 2), ) %>% bold_p(t = 0.10) %>% bold_labels() %>% italicize_levels() tbl_merge( list(UV, MVORTable), tab_spanner = c("**Univariable**", "**Multivariable**") ) %>% bold_labels() %>% italicize_levels() ###Creating AUC graphs install.packages('aod') install.packages('ggplot2') library(aod) library(ggplot2) #Logistic Regression Model install.packages("nnet") library(nnet) ##remove missing so that we can run the model to do the AUC create dataframes for two separate models AdjustedFRS <- FRSOddsRatio1 %>% select(FistulaOddsRatio, PAN_GLANDTEXT, BMIB, PAN_DUCTSIZE) AdjustedFRS <- AdjustedFRS %>% remove_missing() PortlandFRS <- FRSOddsRatio1 %>% select(FistulaOddsRatio, SEX,PAN_GLANDTEXT, BMIB, PAN_DUCTSIZE, Pathology, PAN_CHEMO) PortlandFRS <- PortlandFRS %>% remove_missing() ##AUC Model Running for Adjusted FRS AUC AdjustedModel <- glm(FistulaOddsRatio~PAN_GLANDTEXT+PAN_DUCTSIZE+BMIB, family = binomial(link = "logit"), data = AdjustedFRS) PredictModel=predict(AdjustedModel) PredictModel1=prediction(PredictModel, AdjustedFRS$FistulaOddsRatio) plot(performance(PredictModel1,"tpr","fpr")) ##calculate accuracy of above x=performance(PredictModel1,"acc") max=which.max(slot(x,"y.values")[[1]]) acc=slot(x,"y.values")[[1]][max] acc abline(a=0,b=1) auc=performance(PredictModel1,"auc") unlist(slot(auc,"y.values")) ci.auc(AdjustedFRS$FistulaOddsRatio, PredictModel) ##AUC Model Running for Adjusted FRS AUC PortlandModel <- glm(FistulaOddsRatio~SEX+Pathology+PAN_CHEMO+PAN_GLANDTEXT+PAN_DUCTSIZE+BMIB, family = binomial(link = "logit"), data = PortlandFRS) Pr_model=predict(PortlandModel) Pr_model1=prediction(Pr_model, PortlandFRS$FistulaOddsRatio) plot(performance(Pr_model1,"tpr","fpr",)) %>% abline(a=0,b=1) ##another way to get the AUC and CI PortlandRocObj <- roc(PortlandFRS$FistulaOddsRatio, Pr_model) print(PortlandRocObj$auc) print(ci(PortlandRocObj)) ##calculate accuracy of above x=performance(Pr_model1,"acc") max=which.max(slot(x,"y.values")[[1]]) acc=slot(x,"y.values")[[1]][max] acc abline(a=0,b=1) auc=performance(Pr_model1,"auc") unlist(slot(auc,"y.values")) ci.auc(PortlandFRS$FistulaOddsRatio, Pr_model) #define object to plot rocobj <- roc(AdjustedFRS$FistulaOddsRatio, PredictModel) #create ROC plot ggroc(rocobj) #define object to plot and calculate AUC auc <- round(auc(AdjustedFRS$FistulaOddsRatio, PredictModel),4) #create ROC plot ggroc(rocobj, colour = 'steelblue', size = 2) + ggtitle(paste0('ROC Curve ', '(AUC = ', auc, ')')) ?ggroc ###Obtain more data from the model broom::tidy(ggroc, exponentiate = T, conf.int = T)
FRS Odds Ratio Final with correct CPT Codes
# Important packages to load in library(dplyr) library(gtsummary) library(survival) library(labelled) library(tidyverse) library(broom) library(ggplot2) library(survminer) ####FRSFull with already coded CR-POPF vs No CR-POPF ##Subsetting the data so it's only patients with CR-POPF vs No CR-POPF FRSDemo <- subset(FRSFUll, Fistula.Grade == "CR-POPF" | Fistula.Grade == "No CR-POPF") ###Variables I want in Demographic Table FRSDemotable <- FRSDemo %>% select(PAN_FISTULA, Fistula.Grade, Age, SEX, BMI, RACE_NEW, PAN_GLANDTEXT, PAN_DUCTSIZE, DIABETES, PAN_MALIG_HISTOLOGIC, ASACLAS, DOpertoD, SeriousComplication, AnyComplication ) #Ifelse function to create new column for serious complication and any complication FRSDemo1 <- mutate(FRSDemo, SeriousComplication = ifelse(CDARREST == "Cardiac Arrest Requiring CPR", "Yes", ifelse(CDMI == "Myocardial Infarction", "Yes", ifelse(OUPNEUMO == "Pneumonia", "Yes", ifelse(RENAINSF == "Progressive Renal Insufficiency", "Yes", ifelse(OPRENAFL == "Acute Renal Failure", "Yes", ifelse(PULEMBOL == "Pulmonary Embolism", "Yes", ifelse(OTHDVT == "DVT Requiring Therapy", "Yes", ifelse(RETURNOR == "Yes", "Yes", ifelse(ORGSPCSSI == "Organ/Space SSI", "Yes", ifelse(PRSEPIS == "Yes", "Yes", ifelse(REINTUB == "Unplanned Intubation", "Yes", ifelse(URNINFEC == "Urinary Tract Infection", "Yes", ifelse(DEHIS == "Wound Disruption", "Yes", "No")))))))))))))) ### Ifelse function to create new column for any complication FRSDemo <- mutate(FRSDemo1, AnyComplication = ifelse(CDARREST == "Cardiac Arrest Requiring CPR", "Yes", ifelse(CDMI == "Myocardial Infarction", "Yes", ifelse(OUPNEUMO == "Pneumonia", "Yes", ifelse(RENAINSF == "Progressive Renal Insufficiency", "Yes", ifelse(OPRENAFL == "Acute Renal Failure", "Yes", ifelse(PULEMBOL == "Pulmonary Embolism", "Yes", ifelse(OTHDVT == "DVT Requiring Therapy", "Yes", ifelse(RETURNOR == "Yes", "Yes", ifelse(ORGSPCSSI == "Organ/Space SSI", "Yes", ifelse(PRSEPIS == "Yes", "Yes", ifelse(REINTUB == "Unplanned Intubation", "Yes", ifelse(URNINFEC == "Urinary Tract Infection", "Yes", ifelse(SUPINFEC == "Superficial Incisional SSI", "Yes", ifelse(FAILWEAN == "On Ventilator greater than 48 Hours", "Yes", ifelse(CNSCVA == "Stroke/CVA", "Yes", ifelse(DEHIS == "Wound Disruption", "Yes", "No"))))))))))))))))) ### Recoding mortality FRSDemo$DOpertoD[is.na(FRSDemo$DOpertoD)] <- "No" FRSDemo$DOpertoD[FRSDemo$DOpertoD == 0] <- "Yes" FRSDemo$DOpertoD[FRSDemo$DOpertoD == 1] <- "Yes" FRSDemo$DOpertoD[FRSDemo$DOpertoD == 10] <- "Yes" FRSDemo$DOpertoD[FRSDemo$DOpertoD == 11] <- "Yes" FRSDemo$DOpertoD[FRSDemo$DOpertoD == 12] <- "Yes" FRSDemo$DOpertoD[FRSDemo$DOpertoD == 13] <- "Yes" FRSDemo$DOpertoD[FRSDemo$DOpertoD == 14] <- "Yes" FRSDemo$DOpertoD[FRSDemo$DOpertoD == 15] <- "Yes" FRSDemo$DOpertoD[FRSDemo$DOpertoD == 16] <- "Yes" FRSDemo$DOpertoD[FRSDemo$DOpertoD == 18] <- "Yes" FRSDemo$DOpertoD[FRSDemo$DOpertoD == 19] <- "Yes" FRSDemo$DOpertoD[FRSDemo$DOpertoD == 21] <- "Yes" FRSDemo$DOpertoD[FRSDemo$DOpertoD == 22] <- "Yes" FRSDemo$DOpertoD[FRSDemo$DOpertoD == 23] <- "Yes" FRSDemo$DOpertoD[FRSDemo$DOpertoD == 24] <- "Yes" FRSDemo$DOpertoD[FRSDemo$DOpertoD == 25] <- "Yes" FRSDemo$DOpertoD[FRSDemo$DOpertoD == 26] <- "Yes" FRSDemo$DOpertoD[FRSDemo$DOpertoD == 27] <- "Yes" FRSDemo$DOpertoD[FRSDemo$DOpertoD == 28] <- "Yes" FRSDemo$DOpertoD[FRSDemo$DOpertoD == 29] <- "Yes" FRSDemo$DOpertoD[FRSDemo$DOpertoD == 3] <- "Yes" FRSDemo$DOpertoD[FRSDemo$DOpertoD == 30] <- "Yes" FRSDemo$DOpertoD[FRSDemo$DOpertoD == 4] <- "Yes" FRSDemo$DOpertoD[FRSDemo$DOpertoD == 5] <- "Yes" FRSDemo$DOpertoD[FRSDemo$DOpertoD == 6] <- "Yes" FRSDemo$DOpertoD[FRSDemo$DOpertoD == 7] <- "Yes" FRSDemo$DOpertoD[FRSDemo$DOpertoD == 9] <- "Yes" FRSDemo$DOpertoD[FRSDemo$DOpertoD == 17] <- "Yes" FRSDemo$DOpertoD[FRSDemo$DOpertoD == 2] <- "Yes" FRSDemo$DOpertoD[FRSDemo$DOpertoD == 8] <- "Yes" FRSDemo$DOpertoD[FRSDemo$DOpertoD == 20] <- "Yes" ###Bringing in Panfinal to ensure I'm utilizing the most uptodate grading criteria for CRPOPF (ISGPS) ADDtoFRSDEMO <- read.csv ("panfinal.csv", header = TRUE, sep = "," ) ###Recode to the 4 grades of ISGPS ADDtoFRSDEMO$Fistula.Grade[ADDtoFRSDEMO$Fistula.Grade =="Grade A"] <- "Biochemical Leak" ADDtoFRSDEMO$Fistula.Grade[ADDtoFRSDEMO$Fistula.Grade =="Grade B"] <- "ISGPS Grade B" ADDtoFRSDEMO$Fistula.Grade[ADDtoFRSDEMO$Fistula.Grade =="Grade C"] <- "ISGPS Grade C" ### Removing Unknowns in fistual grade addtofrsdemo plan prior to adding in that column ADDtoFRSDEMO$Fistula.Grade[ADDtoFRSDEMO$Fistula.Grade =="Unknown"] <- NA ADDtoFRSDEMO <-na.omit(ADDtoFRSDEMO) ###move column over addtofrsdemo -> frsdemo FRSDemoNew <- cbind(FRSDemo, FistualGradeNew = ADDtoFRSDEMO$Fistula.Grade) ####recoding FRSDEMo Pan_fistula to include the labeled ISGPS criteria FRSDemo$PAN_FISTULA[FRSDemo$PAN_FISTULA =="Biochemical Leak only"] <- "Biochemical Leak" FRSDemo$PAN_FISTULA[FRSDemo$PAN_FISTULA =="Yes-persistent drainage, drain continued >7 days"] <- "ISGPS Grade B" FRSDemo$PAN_FISTULA[FRSDemo$PAN_FISTULA =="Yes-clinical diagnosis, percutaneous drainage performed"] <- "ISGPS Grade B" FRSDemo$PAN_FISTULA[FRSDemo$PAN_FISTULA =="Yes-persistent drainage, percutaneous drainage performed"] <- "ISGPS Grade B" FRSDemo$PAN_FISTULA[FRSDemo$PAN_FISTULA =="Yes-persistent drainage, NPO-TPN"] <- "ISGPS Grade B" FRSDemo$PAN_FISTULA[FRSDemo$PAN_FISTULA =="Yes-clinical diagnosis, drain continued >7 days"] <- "ISGPS Grade B" FRSDemo$PAN_FISTULA[FRSDemo$PAN_FISTULA =="Yes, Grade B POPF present"] <- "ISGPS Grade B" FRSDemo$PAN_FISTULA[FRSDemo$PAN_FISTULA =="Yes-clinical diagnosis, spontaneous wound drainage"] <- "ISGPS Grade B" FRSDemo$PAN_FISTULA[FRSDemo$PAN_FISTULA =="Yes-clinical diagnosis, NPO-TPN"] <- "ISGPS Grade B" FRSDemo$PAN_FISTULA[FRSDemo$PAN_FISTULA =="Yes-clinical diagnosis, reoperation performed"] <- "ISGPS Grade C" FRSDemo$PAN_FISTULA[FRSDemo$PAN_FISTULA =="Yes, Grade C POPF present"] <- "ISGPS Grade C" FRSDemo$PAN_FISTULA[FRSDemo$PAN_FISTULA =="Yes-persistent drainage, reoperation performed"] <- "ISGPS Grade C" FRSDemo$PAN_FISTULA[FRSDemo$PAN_FISTULA =="No evidence of Biochemical Leak or POPF"] <- "No Fistula" FRSDemo$PAN_FISTULA[FRSDemo$PAN_FISTULA =="No"] <- "No Fistula" #### Labeling columns var_label(FRSDemotable$PAN_FISTULA) <- "ISGPS Criteria" var_label(FRSDemotable$RACE_NEW) <- "Race" var_label(FRSDemotable$ASACLAS) <- "ASA Classification" var_label(FRSDemotable$SEX) <- "Sex" var_label(FRSDemotable$PAN_GLANDTEXT) <- "Gland Texture" var_label(FRSDemotable$PAN_DUCTSIZE) <- "Pancreatic Duct Diameter" var_label(FRSDemotable$DOpertoD) <- "Mortality" var_label(FRSDemotable$DIABETES) <- "Diabetes" var_label(FRSDemotable$SeriousComplication) <- "Serious Complication" var_label(FRSDemotable$AnyComplication) <- "Any Complication" ## Changing any Unknowns/none assigned to NA FRSDemotable[FRSDemotable =="None assigned"] <- NA FRSDemotable[FRSDemotable =="Unknown"] <- NA ###Try removing 5-moribound from the odds ratio FRSDemotable$ASACLAS[FRSDemotable$ASACLAS =="5-Moribund"] <- NA ##Add column cpt code to demotable FRSDemotable <- cbind(FRSDemotable, CPT = FRSDemo$CPT) ###subsetting only pancreaticoduodenectomy FRSDemoTableFinal <- subset(FRSDemotable, CPT == "48153" | CPT == "48154") ###chemoOnly group FRSDemoTableFinal1 <- FRSDemoTableFinal %>% mutate(FRSDemoTableFinal, ChemoOnly = ifelse(PAN_RADIO == "Yes", "No", ifelse(PAN_CHEMO == "Yes", "Yes", "No"))) #Final Step to create demographic table FRSDemoTableFinal1 %>% tbl_summary( by = Fistula.Grade, digits = all_continuous() ~ 2,) %>% add_p(pvalue_fun = ~style_pvalue(.x, digits = 2))%>% bold_p() %>% add_overall() %>% modify_header(label ~ "**Variable**") %>% modify_spanning_header(c("stat_1", "stat_2") ~ "**Clinically Relevant Postoperative Pancreatic Fistula*") %>% bold_labels() #### Coding for Odds Ratio all below FRSOddsRatio <- FRSDemoTableFinal1 %>% mutate(FRSDemoTableFinal1, BMIB = ifelse(BMI >= 30, "Obese", ifelse(BMI <= 30, "Non-Obese", "NA"))) ###Change CRPOPF to an event "1" FRSOddsRatio1 <- FRSOddsRatio1 %>% mutate(FRSOddsRatio1, FistulaOddsRatio = ifelse(Fistula.Grade =="CR-POPF", "1", ifelse(Fistula.Grade =="No CR-POPF", "0", "NA"))) ###Create and odds ratio for DPAC vs other FRSOddsRatio1 <- mutate(FRSOddsRatio, Pathology = ifelse(PAN_MALIG_HISTOLOGIC == "Pancreatic adenocarcinoma", "Pancreatic Adenocarcinoma", "Other")) ### Turning NA to the actual NA's that are ommitted in pathology FRSOddsRatio1$Pathology[FRSOddsRatio1$Pathology =="NA"] <- NA ###fistulaoddsratio as numeric FRSOddsRatio1$FistulaOddsRatio <- as.numeric(FRSOddsRatio1$FistulaOddsRatio) ###Recoding pancreatic duct diameter FRSOddsRatio1$PAN_DUCTSIZE[FRSOddsRatio1$PAN_DUCTSIZE ==">6 mm"] <- ">3 mm" FRSOddsRatio1$PAN_DUCTSIZE[FRSOddsRatio1$PAN_DUCTSIZE =="3-6 mm"] <- ">3 mm" ##Recoding gland texture FRSOddsRatio1$PAN_GLANDTEXT[FRSOddsRatio1$PAN_GLANDTEXT =="Intermediate"] <- NA ###recode Unknown to NA panductoriginal FRSOddsRatio1$PAN_DUCTSIZE[FRSOddsRatio1$PAN_DUCTSIZE =="Unknown"] <- NA ##Univariant Model Seriouscomplication UV <- FRSOddsRatio1 %>% select(FistulaOddsRatio, SEX, PAN_GLANDTEXT, BMIB, PAN_DUCTSIZE, ChemoOnly, PAN_RADIO, Pathology) %>% tbl_uvregression( method = glm, y = FistulaOddsRatio, method.args = list(family = binomial), exponentiate = TRUE, pvalue_fun = ~style_pvalue(.x, digits = 2) ) %>% bold_p(t = 0.10) %>% bold_labels() %>% italicize_levels() ####Multivariant analysis serious complications MVOR <- glm(FistulaOddsRatio ~ SEX + PAN_GLANDTEXT + PAN_DUCTSIZE + BMIB + ChemoOnly + PAN_RADIO + Pathology, data = FRSOddsRatio1, family = binomial("logit"), na.action =na.omit ) broom::tidy(MVOR, exponentiate = T, conf.int = T) FRSNomogram_complete1 <- FRSNomogram_complete %>% remove_missing() predict = predict(MVOR) mutate(predict = predict(MVOR)) FRSNomogram$predict <- predict(MVOR) prob = predict(oneyr_ageadmit,type=c("response")) fit statistics MVORTable <- tbl_regression(MVOR, exponentiate = T, pvalue_fun = ~style_pvalue(.x, digits = 2), ) %>% bold_p(t = 0.10) %>% bold_labels() %>% italicize_levels() tbl_merge( list(UV, MVORTable), tab_spanner = c("**Univariable**", "**Multivariable**") ) %>% bold_labels() %>% italicize_levels()
CRPOPF Fistula Demographic Table (correct CPT Cods)
# Important packages to load in library(dplyr) library(gtsummary) library(survival) library(labelled) library(tidyverse) library(broom) library(ggplot2) library(survminer) ####FRSFull with already coded CR-POPF vs No CR-POPF ##Subsetting the data so it's only patients with CR-POPF vs No CR-POPF FRSDemo <- subset(FRSFUll, Fistula.Grade == "CR-POPF" | Fistula.Grade == "No CR-POPF") ###Variables I want in Demographic Table FRSDemotable <- FRSDemo %>% select(PAN_FISTULA, Fistula.Grade, Age, SEX, BMI, RACE_NEW, PAN_GLANDTEXT, PAN_DUCTSIZE, DIABETES, PAN_MALIG_HISTOLOGIC, ASACLAS, DOpertoD, SeriousComplication, AnyComplication ) #Ifelse function to create new column for serious complication and any complication FRSDemo1 <- mutate(FRSDemo, SeriousComplication = ifelse(CDARREST == "Cardiac Arrest Requiring CPR", "Yes", ifelse(CDMI == "Myocardial Infarction", "Yes", ifelse(OUPNEUMO == "Pneumonia", "Yes", ifelse(RENAINSF == "Progressive Renal Insufficiency", "Yes", ifelse(OPRENAFL == "Acute Renal Failure", "Yes", ifelse(PULEMBOL == "Pulmonary Embolism", "Yes", ifelse(OTHDVT == "DVT Requiring Therapy", "Yes", ifelse(RETURNOR == "Yes", "Yes", ifelse(ORGSPCSSI == "Organ/Space SSI", "Yes", ifelse(PRSEPIS == "Yes", "Yes", ifelse(REINTUB == "Unplanned Intubation", "Yes", ifelse(URNINFEC == "Urinary Tract Infection", "Yes", ifelse(DEHIS == "Wound Disruption", "Yes", "No")))))))))))))) ### Ifelse function to create new column for any complication FRSDemo <- mutate(FRSDemo1, AnyComplication = ifelse(CDARREST == "Cardiac Arrest Requiring CPR", "Yes", ifelse(CDMI == "Myocardial Infarction", "Yes", ifelse(OUPNEUMO == "Pneumonia", "Yes", ifelse(RENAINSF == "Progressive Renal Insufficiency", "Yes", ifelse(OPRENAFL == "Acute Renal Failure", "Yes", ifelse(PULEMBOL == "Pulmonary Embolism", "Yes", ifelse(OTHDVT == "DVT Requiring Therapy", "Yes", ifelse(RETURNOR == "Yes", "Yes", ifelse(ORGSPCSSI == "Organ/Space SSI", "Yes", ifelse(PRSEPIS == "Yes", "Yes", ifelse(REINTUB == "Unplanned Intubation", "Yes", ifelse(URNINFEC == "Urinary Tract Infection", "Yes", ifelse(SUPINFEC == "Superficial Incisional SSI", "Yes", ifelse(FAILWEAN == "On Ventilator greater than 48 Hours", "Yes", ifelse(CNSCVA == "Stroke/CVA", "Yes", ifelse(DEHIS == "Wound Disruption", "Yes", "No"))))))))))))))))) ### Recoding mortality FRSDemo$DOpertoD[is.na(FRSDemo$DOpertoD)] <- "No" FRSDemo$DOpertoD[FRSDemo$DOpertoD == 0] <- "Yes" FRSDemo$DOpertoD[FRSDemo$DOpertoD == 1] <- "Yes" FRSDemo$DOpertoD[FRSDemo$DOpertoD == 10] <- "Yes" FRSDemo$DOpertoD[FRSDemo$DOpertoD == 11] <- "Yes" FRSDemo$DOpertoD[FRSDemo$DOpertoD == 12] <- "Yes" FRSDemo$DOpertoD[FRSDemo$DOpertoD == 13] <- "Yes" FRSDemo$DOpertoD[FRSDemo$DOpertoD == 14] <- "Yes" FRSDemo$DOpertoD[FRSDemo$DOpertoD == 15] <- "Yes" FRSDemo$DOpertoD[FRSDemo$DOpertoD == 16] <- "Yes" FRSDemo$DOpertoD[FRSDemo$DOpertoD == 18] <- "Yes" FRSDemo$DOpertoD[FRSDemo$DOpertoD == 19] <- "Yes" FRSDemo$DOpertoD[FRSDemo$DOpertoD == 21] <- "Yes" FRSDemo$DOpertoD[FRSDemo$DOpertoD == 22] <- "Yes" FRSDemo$DOpertoD[FRSDemo$DOpertoD == 23] <- "Yes" FRSDemo$DOpertoD[FRSDemo$DOpertoD == 24] <- "Yes" FRSDemo$DOpertoD[FRSDemo$DOpertoD == 25] <- "Yes" FRSDemo$DOpertoD[FRSDemo$DOpertoD == 26] <- "Yes" FRSDemo$DOpertoD[FRSDemo$DOpertoD == 27] <- "Yes" FRSDemo$DOpertoD[FRSDemo$DOpertoD == 28] <- "Yes" FRSDemo$DOpertoD[FRSDemo$DOpertoD == 29] <- "Yes" FRSDemo$DOpertoD[FRSDemo$DOpertoD == 3] <- "Yes" FRSDemo$DOpertoD[FRSDemo$DOpertoD == 30] <- "Yes" FRSDemo$DOpertoD[FRSDemo$DOpertoD == 4] <- "Yes" FRSDemo$DOpertoD[FRSDemo$DOpertoD == 5] <- "Yes" FRSDemo$DOpertoD[FRSDemo$DOpertoD == 6] <- "Yes" FRSDemo$DOpertoD[FRSDemo$DOpertoD == 7] <- "Yes" FRSDemo$DOpertoD[FRSDemo$DOpertoD == 9] <- "Yes" FRSDemo$DOpertoD[FRSDemo$DOpertoD == 17] <- "Yes" FRSDemo$DOpertoD[FRSDemo$DOpertoD == 2] <- "Yes" FRSDemo$DOpertoD[FRSDemo$DOpertoD == 8] <- "Yes" FRSDemo$DOpertoD[FRSDemo$DOpertoD == 20] <- "Yes" ###Bringing in Panfinal to ensure I'm utilizing the most uptodate grading criteria for CRPOPF (ISGPS) ADDtoFRSDEMO <- read.csv ("panfinal.csv", header = TRUE, sep = "," ) ###Recode to the 4 grades of ISGPS ADDtoFRSDEMO$Fistula.Grade[ADDtoFRSDEMO$Fistula.Grade =="Grade A"] <- "Biochemical Leak" ADDtoFRSDEMO$Fistula.Grade[ADDtoFRSDEMO$Fistula.Grade =="Grade B"] <- "ISGPS Grade B" ADDtoFRSDEMO$Fistula.Grade[ADDtoFRSDEMO$Fistula.Grade =="Grade C"] <- "ISGPS Grade C" ### Removing Unknowns in fistual grade addtofrsdemo plan prior to adding in that column ADDtoFRSDEMO$Fistula.Grade[ADDtoFRSDEMO$Fistula.Grade =="Unknown"] <- NA ADDtoFRSDEMO <-na.omit(ADDtoFRSDEMO) ###move column over addtofrsdemo -> frsdemo FRSDemoNew <- cbind(FRSDemo, FistualGradeNew = ADDtoFRSDEMO$Fistula.Grade) ####recoding FRSDEMo Pan_fistula to include the labeled ISGPS criteria FRSDemo$PAN_FISTULA[FRSDemo$PAN_FISTULA =="Biochemical Leak only"] <- "Biochemical Leak" FRSDemo$PAN_FISTULA[FRSDemo$PAN_FISTULA =="Yes-persistent drainage, drain continued >7 days"] <- "ISGPS Grade B" FRSDemo$PAN_FISTULA[FRSDemo$PAN_FISTULA =="Yes-clinical diagnosis, percutaneous drainage performed"] <- "ISGPS Grade B" FRSDemo$PAN_FISTULA[FRSDemo$PAN_FISTULA =="Yes-persistent drainage, percutaneous drainage performed"] <- "ISGPS Grade B" FRSDemo$PAN_FISTULA[FRSDemo$PAN_FISTULA =="Yes-persistent drainage, NPO-TPN"] <- "ISGPS Grade B" FRSDemo$PAN_FISTULA[FRSDemo$PAN_FISTULA =="Yes-clinical diagnosis, drain continued >7 days"] <- "ISGPS Grade B" FRSDemo$PAN_FISTULA[FRSDemo$PAN_FISTULA =="Yes, Grade B POPF present"] <- "ISGPS Grade B" FRSDemo$PAN_FISTULA[FRSDemo$PAN_FISTULA =="Yes-clinical diagnosis, spontaneous wound drainage"] <- "ISGPS Grade B" FRSDemo$PAN_FISTULA[FRSDemo$PAN_FISTULA =="Yes-clinical diagnosis, NPO-TPN"] <- "ISGPS Grade B" FRSDemo$PAN_FISTULA[FRSDemo$PAN_FISTULA =="Yes-clinical diagnosis, reoperation performed"] <- "ISGPS Grade C" FRSDemo$PAN_FISTULA[FRSDemo$PAN_FISTULA =="Yes, Grade C POPF present"] <- "ISGPS Grade C" FRSDemo$PAN_FISTULA[FRSDemo$PAN_FISTULA =="Yes-persistent drainage, reoperation performed"] <- "ISGPS Grade C" FRSDemo$PAN_FISTULA[FRSDemo$PAN_FISTULA =="No evidence of Biochemical Leak or POPF"] <- "No Fistula" FRSDemo$PAN_FISTULA[FRSDemo$PAN_FISTULA =="No"] <- "No Fistula" #### Labeling columns var_label(FRSDemotable$PAN_FISTULA) <- "ISGPS Criteria" var_label(FRSDemotable$RACE_NEW) <- "Race" var_label(FRSDemotable$ASACLAS) <- "ASA Classification" var_label(FRSDemotable$SEX) <- "Sex" var_label(FRSDemotable$PAN_GLANDTEXT) <- "Gland Texture" var_label(FRSDemotable$PAN_DUCTSIZE) <- "Pancreatic Duct Diameter" var_label(FRSDemotable$DOpertoD) <- "Mortality" var_label(FRSDemotable$DIABETES) <- "Diabetes" var_label(FRSDemotable$SeriousComplication) <- "Serious Complication" var_label(FRSDemotable$AnyComplication) <- "Any Complication" ## Changing any Unknowns/none assigned to NA FRSDemotable[FRSDemotable =="None assigned"] <- NA FRSDemotable[FRSDemotable =="Unknown"] <- NA ###Try removing 5-moribound from the odds ratio FRSDemotable$ASACLAS[FRSDemotable$ASACLAS =="5-Moribund"] <- NA ##Add column cpt code to demotable FRSDemotable <- cbind(FRSDemotable, CPT = FRSDemo$CPT) ###subsetting only pancreaticoduodenectomy FRSDemoTableFinal <- subset(FRSDemotable, CPT == "48153" | CPT == "48154") ###chemoOnly group FRSDemoTableFinal1 <- FRSDemoTableFinal %>% mutate(FRSDemoTableFinal, ChemoOnly = ifelse(PAN_RADIO == "Yes", "No", ifelse(PAN_CHEMO == "Yes", "Yes", "No"))) #Final Step to create demographic table FRSDemoTableFinal1 %>% tbl_summary( by = Fistula.Grade, digits = all_continuous() ~ 2,) %>% add_p(pvalue_fun = ~style_pvalue(.x, digits = 2))%>% bold_p() %>% add_overall() %>% modify_header(label ~ "**Variable**") %>% modify_spanning_header(c("stat_1", "stat_2") ~ "**Clinically Relevant Postoperative Pancreatic Fistula*") %>% bold_labels() #### Coding for Odds Ratio all below FRSOddsRatio <- FRSDemoTableFinal1 %>% mutate(FRSDemoTableFinal1, BMIB = ifelse(BMI >= 30, "Obese", ifelse(BMI <= 30, "Non-Obese", "NA"))) ###Change CRPOPF to an event "1" FRSOddsRatio1 <- FRSOddsRatio1 %>% mutate(FRSOddsRatio1, FistulaOddsRatio = ifelse(Fistula.Grade =="CR-POPF", "1", ifelse(Fistula.Grade =="No CR-POPF", "0", "NA"))) ###Create and odds ratio for DPAC vs other FRSOddsRatio1 <- mutate(FRSOddsRatio, Pathology = ifelse(PAN_MALIG_HISTOLOGIC == "Pancreatic adenocarcinoma", "Pancreatic Adenocarcinoma", "Other")) ### Turning NA to the actual NA's that are ommitted in pathology FRSOddsRatio1$Pathology[FRSOddsRatio1$Pathology =="NA"] <- NA ###fistulaoddsratio as numeric FRSOddsRatio1$FistulaOddsRatio <- as.numeric(FRSOddsRatio1$FistulaOddsRatio) ###Recoding pancreatic duct diameter FRSOddsRatio1$PAN_DUCTSIZE[FRSOddsRatio1$PAN_DUCTSIZE ==">6 mm"] <- ">3 mm" FRSOddsRatio1$PAN_DUCTSIZE[FRSOddsRatio1$PAN_DUCTSIZE =="3-6 mm"] <- ">3 mm" ##Recoding gland texture FRSOddsRatio1$PAN_GLANDTEXT[FRSOddsRatio1$PAN_GLANDTEXT =="Intermediate"] <- NA ###recode Unknown to NA panductoriginal FRSOddsRatio1$PAN_DUCTSIZE[FRSOddsRatio1$PAN_DUCTSIZE =="Unknown"] <- NA ##Univariant Model Seriouscomplication UV <- FRSOddsRatio1 %>% select(FistulaOddsRatio, SEX, PAN_GLANDTEXT, BMIB, PAN_DUCTSIZE, ChemoOnly, PAN_RADIO, Pathology) %>% tbl_uvregression( method = glm, y = FistulaOddsRatio, method.args = list(family = binomial), exponentiate = TRUE, pvalue_fun = ~style_pvalue(.x, digits = 2) ) %>% bold_p(t = 0.10) %>% bold_labels() %>% italicize_levels() ####Multivariant analysis serious complications MVOR <- glm(FistulaOddsRatio ~ SEX + PAN_GLANDTEXT + PAN_DUCTSIZE + BMIB + ChemoOnly + PAN_RADIO + Pathology, data = FRSOddsRatio1, family = binomial("logit"), na.action =na.omit ) broom::tidy(MVOR, exponentiate = T, conf.int = T) FRSNomogram_complete1 <- FRSNomogram_complete %>% remove_missing() predict = predict(MVOR) mutate(predict = predict(MVOR)) FRSNomogram$predict <- predict(MVOR) prob = predict(oneyr_ageadmit,type=c("response")) fit statistics MVORTable <- tbl_regression(MVOR, exponentiate = T, pvalue_fun = ~style_pvalue(.x, digits = 2), ) %>% bold_p(t = 0.10) %>% bold_labels() %>% italicize_levels() tbl_merge( list(UV, MVORTable), tab_spanner = c("**Univariable**", "**Multivariable**") ) %>% bold_labels() %>% italicize_levels()
FRS Odds Ratio Final
# Important packages to load in library(dplyr) library(gtsummary) library(survival) library(labelled) library(tidyverse) library(broom) library(ggplot2) library(survminer) ####FRSFull with already coded CR-POPF vs No CR-POPF ##Subsetting the data so it's only patients with CR-POPF vs No CR-POPF FRSDemo <- subset(FRSFUll, Fistula.Grade == "CR-POPF" | Fistula.Grade == "No CR-POPF") ###Variables I want in Demographic Table FRSDemotable <- FRSDemo %>% select(PAN_FISTULA, Fistula.Grade, Age, SEX, BMI, RACE_NEW, PAN_GLANDTEXT, PAN_DUCTSIZE, DIABETES, PAN_CHEMO, PAN_RADIO, PAN_MALIG_HISTOLOGIC, ASACLAS, DOpertoD, DPRBILI, SeriousComplication, AnyComplication) FRSChemo <- FRSDemo %>% select(PAN_CHEMO, PAN_RADIO) #Ifelse function to create new column for serious complication and any complication FRSDemo1 <- mutate(FRSDemo, SeriousComplication = ifelse(CDARREST == "Cardiac Arrest Requiring CPR", "Yes", ifelse(CDMI == "Myocardial Infarction", "Yes", ifelse(OUPNEUMO == "Pneumonia", "Yes", ifelse(RENAINSF == "Progressive Renal Insufficiency", "Yes", ifelse(OPRENAFL == "Acute Renal Failure", "Yes", ifelse(PULEMBOL == "Pulmonary Embolism", "Yes", ifelse(OTHDVT == "DVT Requiring Therapy", "Yes", ifelse(RETURNOR == "Yes", "Yes", ifelse(ORGSPCSSI == "Organ/Space SSI", "Yes", ifelse(PRSEPIS == "Yes", "Yes", ifelse(REINTUB == "Unplanned Intubation", "Yes", ifelse(URNINFEC == "Urinary Tract Infection", "Yes", ifelse(DEHIS == "Wound Disruption", "Yes", "No")))))))))))))) ### Ifelse function to create new column for any complication FRSDemo <- mutate(FRSDemo1, AnyComplication = ifelse(CDARREST == "Cardiac Arrest Requiring CPR", "Yes", ifelse(CDMI == "Myocardial Infarction", "Yes", ifelse(OUPNEUMO == "Pneumonia", "Yes", ifelse(RENAINSF == "Progressive Renal Insufficiency", "Yes", ifelse(OPRENAFL == "Acute Renal Failure", "Yes", ifelse(PULEMBOL == "Pulmonary Embolism", "Yes", ifelse(OTHDVT == "DVT Requiring Therapy", "Yes", ifelse(RETURNOR == "Yes", "Yes", ifelse(ORGSPCSSI == "Organ/Space SSI", "Yes", ifelse(PRSEPIS == "Yes", "Yes", ifelse(REINTUB == "Unplanned Intubation", "Yes", ifelse(URNINFEC == "Urinary Tract Infection", "Yes", ifelse(SUPINFEC == "Superficial Incisional SSI", "Yes", ifelse(FAILWEAN == "On Ventilator greater than 48 Hours", "Yes", ifelse(CNSCVA == "Stroke/CVA", "Yes", ifelse(DEHIS == "Wound Disruption", "Yes", "No"))))))))))))))))) ### Recoding mortality FRSDemo$DOpertoD[is.na(FRSDemo$DOpertoD)] <- "No" FRSDemo$DOpertoD[FRSDemo$DOpertoD == 0] <- "Yes" FRSDemo$DOpertoD[FRSDemo$DOpertoD == 1] <- "Yes" FRSDemo$DOpertoD[FRSDemo$DOpertoD == 10] <- "Yes" FRSDemo$DOpertoD[FRSDemo$DOpertoD == 11] <- "Yes" FRSDemo$DOpertoD[FRSDemo$DOpertoD == 12] <- "Yes" FRSDemo$DOpertoD[FRSDemo$DOpertoD == 13] <- "Yes" FRSDemo$DOpertoD[FRSDemo$DOpertoD == 14] <- "Yes" FRSDemo$DOpertoD[FRSDemo$DOpertoD == 15] <- "Yes" FRSDemo$DOpertoD[FRSDemo$DOpertoD == 16] <- "Yes" FRSDemo$DOpertoD[FRSDemo$DOpertoD == 18] <- "Yes" FRSDemo$DOpertoD[FRSDemo$DOpertoD == 19] <- "Yes" FRSDemo$DOpertoD[FRSDemo$DOpertoD == 21] <- "Yes" FRSDemo$DOpertoD[FRSDemo$DOpertoD == 22] <- "Yes" FRSDemo$DOpertoD[FRSDemo$DOpertoD == 23] <- "Yes" FRSDemo$DOpertoD[FRSDemo$DOpertoD == 24] <- "Yes" FRSDemo$DOpertoD[FRSDemo$DOpertoD == 25] <- "Yes" FRSDemo$DOpertoD[FRSDemo$DOpertoD == 26] <- "Yes" FRSDemo$DOpertoD[FRSDemo$DOpertoD == 27] <- "Yes" FRSDemo$DOpertoD[FRSDemo$DOpertoD == 28] <- "Yes" FRSDemo$DOpertoD[FRSDemo$DOpertoD == 29] <- "Yes" FRSDemo$DOpertoD[FRSDemo$DOpertoD == 3] <- "Yes" FRSDemo$DOpertoD[FRSDemo$DOpertoD == 30] <- "Yes" FRSDemo$DOpertoD[FRSDemo$DOpertoD == 4] <- "Yes" FRSDemo$DOpertoD[FRSDemo$DOpertoD == 5] <- "Yes" FRSDemo$DOpertoD[FRSDemo$DOpertoD == 6] <- "Yes" FRSDemo$DOpertoD[FRSDemo$DOpertoD == 7] <- "Yes" FRSDemo$DOpertoD[FRSDemo$DOpertoD == 9] <- "Yes" FRSDemo$DOpertoD[FRSDemo$DOpertoD == 17] <- "Yes" FRSDemo$DOpertoD[FRSDemo$DOpertoD == 2] <- "Yes" FRSDemo$DOpertoD[FRSDemo$DOpertoD == 8] <- "Yes" FRSDemo$DOpertoD[FRSDemo$DOpertoD == 20] <- "Yes" ###Bringing in Panfinal to ensure I'm utilizing the most uptodate grading criteria for CRPOPF (ISGPS) ADDtoFRSDEMO <- read.csv ("panfinal.csv", header = TRUE, sep = "," ) ###Recode to the 4 grades of ISGPS ADDtoFRSDEMO$Fistula.Grade[ADDtoFRSDEMO$Fistula.Grade =="Grade A"] <- "Biochemical Leak" ADDtoFRSDEMO$Fistula.Grade[ADDtoFRSDEMO$Fistula.Grade =="Grade B"] <- "ISGPS Grade B" ADDtoFRSDEMO$Fistula.Grade[ADDtoFRSDEMO$Fistula.Grade =="Grade C"] <- "ISGPS Grade C" ### Removing Unknowns in fistual grade addtofrsdemo plan prior to adding in that column ADDtoFRSDEMO$Fistula.Grade[ADDtoFRSDEMO$Fistula.Grade =="Unknown"] <- NA ADDtoFRSDEMO <-na.omit(ADDtoFRSDEMO) ###move column over addtofrsdemo -> frsdemo FRSDemoNew <- cbind(FRSDemo, FistualGradeNew = ADDtoFRSDEMO$Fistula.Grade) ####recoding FRSDEMo Pan_fistula to include the labeled ISGPS criteria FRSDemo$PAN_FISTULA[FRSDemo$PAN_FISTULA =="Biochemical Leak only"] <- "Biochemical Leak" FRSDemo$PAN_FISTULA[FRSDemo$PAN_FISTULA =="Yes-persistent drainage, drain continued >7 days"] <- "ISGPS Grade B" FRSDemo$PAN_FISTULA[FRSDemo$PAN_FISTULA =="Yes-clinical diagnosis, percutaneous drainage performed"] <- "ISGPS Grade B" FRSDemo$PAN_FISTULA[FRSDemo$PAN_FISTULA =="Yes-persistent drainage, percutaneous drainage performed"] <- "ISGPS Grade B" FRSDemo$PAN_FISTULA[FRSDemo$PAN_FISTULA =="Yes-persistent drainage, NPO-TPN"] <- "ISGPS Grade B" FRSDemo$PAN_FISTULA[FRSDemo$PAN_FISTULA =="Yes-clinical diagnosis, drain continued >7 days"] <- "ISGPS Grade B" FRSDemo$PAN_FISTULA[FRSDemo$PAN_FISTULA =="Yes, Grade B POPF present"] <- "ISGPS Grade B" FRSDemo$PAN_FISTULA[FRSDemo$PAN_FISTULA =="Yes-clinical diagnosis, spontaneous wound drainage"] <- "ISGPS Grade B" FRSDemo$PAN_FISTULA[FRSDemo$PAN_FISTULA =="Yes-clinical diagnosis, NPO-TPN"] <- "ISGPS Grade B" FRSDemo$PAN_FISTULA[FRSDemo$PAN_FISTULA =="Yes-clinical diagnosis, reoperation performed"] <- "ISGPS Grade C" FRSDemo$PAN_FISTULA[FRSDemo$PAN_FISTULA =="Yes, Grade C POPF present"] <- "ISGPS Grade C" FRSDemo$PAN_FISTULA[FRSDemo$PAN_FISTULA =="Yes-persistent drainage, reoperation performed"] <- "ISGPS Grade C" FRSDemo$PAN_FISTULA[FRSDemo$PAN_FISTULA =="No evidence of Biochemical Leak or POPF"] <- "No Fistula" FRSDemo$PAN_FISTULA[FRSDemo$PAN_FISTULA =="No"] <- "No Fistula" #### Labeling columns var_label(FRSDemotable$PAN_FISTULA) <- "ISGPS Criteria" var_label(FRSDemotable$RACE_NEW) <- "Race" var_label(FRSDemotable$ASACLAS) <- "ASA Classification" var_label(FRSDemotable$SEX) <- "Sex" var_label(FRSDemotable$PAN_GLANDTEXT) <- "Gland Texture" var_label(FRSDemotable$PAN_DUCTSIZE) <- "Pancreatic Duct Diameter" var_label(FRSDemotable$DOpertoD) <- "Mortality" var_label(FRSDemotable$DIABETES) <- "Diabetes" var_label(FRSDemotable$SeriousComplication) <- "Serious Complication" var_label(FRSDemotable$AnyComplication) <- "Any Complication" var_label(FRSDemotable$PAN_CHEMO) <- "Preop Chemotherapy" var_label(FRSDemotable$PAN_RADIO) <- "Preop Radiation" var_label(FRSDemotable$PAN_MALIG_HISTOLOGIC) <- "Pathology" var_label(FRSDemotable$DPRBILI) <- "Preop Bilirubin" ## Changing any Unknowns/none assigned to NA FRSDemotable[FRSDemotable =="None assigned"] <- NA FRSDemotable[FRSDemotable =="Unknown"] <- NA ###Try removing 5-moribound from the odds ratio FRSDemotable$ASACLAS[FRSDemotable$ASACLAS =="5-Moribund"] <- NA ###Recoding Pathology FRSDemotable$PAN_MALIG_HISTOLOGIC[FRSDemotable$PAN_MALIG_HISTOLOGIC =="Other type"] <- NA FRSDemotable$PAN_MALIG_HISTOLOGIC[FRSDemotable$PAN_MALIG_HISTOLOGIC =="N/A"] <- NA #Final Step to create demographic table FRSOddsRatio2 %>% tbl_summary( by = ChemoOnly, digits = all_continuous() ~ 2,) %>% add_p(pvalue_fun = ~style_pvalue(.x, digits = 2))%>% bold_p() %>% add_overall() %>% modify_header(label ~ "**Variable**") %>% modify_spanning_header(c("stat_1", "stat_2") ~ "**Chem vs Radiation*") %>% bold_labels() ###Change CRPOPF to an event "1" FRSOddsRatio <- FRSOddsRatio %>% mutate(FRSOddsRatio, FistulaOddsRatio = ifelse(Fistula.Grade =="CR-POPF", "1", ifelse(Fistula.Grade =="No CR-POPF", "0", "NA"))) ###Create and odds ratio for DPAC vs ampullary, duodenal, cystic and islet cell FRSOddsRatio1 <- mutate(FRSOddsRatio, Pathology = ifelse(PAN_MALIG_HISTOLOGIC == "Pancreatic adenocarcinoma", "Pancreatic Adenocarcinoma", "Other")) Maybe add distal choliangio to the above along with ampullary duodenal and cystic ^^^ Also cod duct size to be below and above 3 do something similar with gland texture ### Turning NA to the actual NA's that are ommitted in pathology FRSOddsRatio1$Pathology[FRSOddsRatio1$Pathology =="NA"] <- NA ###fistulaoddsratio as numeric FRSOddsRatio1$FistulaOddsRatio <- as.numeric(FRSOddsRatio1$FistulaOddsRatio) ###Recoding pancreatic duct diameter FRSOddsRatio1$PAN_DUCTSIZE[FRSOddsRatio1$PAN_DUCTSIZE ==">6 mm"] <- ">3 mm" FRSOddsRatio1$PAN_DUCTSIZE[FRSOddsRatio1$PAN_DUCTSIZE =="3-6 mm"] <- ">3 mm" ##Recoding gland texture FRSOddsRatio1$PAN_GLANDTEXT[FRSOddsRatio1$PAN_GLANDTEXT =="Intermediate"] <- NA #### Coding for Odds Ratio all below FRSOddsRatio <- FRSDemotable %>% mutate(FRSDemotable, BMIB = ifelse(BMI >= 30, "Obese", ifelse(BMI <= 30, "Non-Obese", "NA"))) FRSOddsRatio2 <- FRSOddsRatio1 %>% mutate(FRSOddsRatio1, ChemoOnly = ifelse(PAN_RADIO == "Yes", "No", ifelse(PAN_CHEMO == "Yes", "Yes", "No"))) ##Add in Original Duct diameter into FRSODDSRatio2 FRSNomogram <- cbind(FRSOddsRatio2, PanDuctOriginal = FRSDemo$PAN_DUCTSIZE) ###recode Unknown to NA panductoriginal FRSNomogram$PanDuctOriginal[FRSNomogram$PanDuctOriginal =="Unknown"] <- NA ##Univariant Model Seriouscomplication UV <- FRSNomogram %>% select(FistulaOddsRatio, SEX, PAN_GLANDTEXT, BMIB, PanDuctOriginal, ChemoOnly, PAN_RADIO, Pathology) %>% tbl_uvregression( method = glm, y = FistulaOddsRatio, method.args = list(family = binomial), exponentiate = TRUE, pvalue_fun = ~style_pvalue(.x, digits = 2) ) %>% bold_p(t = 0.10) %>% bold_labels() %>% italicize_levels() ####Multivariant analysis serious complications MVOR <- glm(FistulaOddsRatio ~ SEX + PAN_GLANDTEXT + BMIB + PanDuctOriginal + ChemoOnly + PAN_RADIO + Pathology, data = FRSNomogram, family = binomial("logit"), na.action =na.omit ) broom::tidy(MVOR, exponentiate = T, conf.int = T) FRSNomogram_complete1 <- FRSNomogram_complete %>% remove_missing() predict = predict(MVOR) mutate(predict = predict(MVOR)) FRSNomogram$predict <- predict(MVOR) prob = predict(oneyr_ageadmit,type=c("response")) fit statistics MVORTable <- tbl_regression(MVOR, exponentiate = T, pvalue_fun = ~style_pvalue(.x, digits = 2), ) %>% bold_p(t = 0.10) %>% bold_labels() %>% italicize_levels() tbl_merge( list(UV, MVOR), tab_spanner = c("**Univariable**", "**Multivariable**") ) %>% bold_labels() %>% italicize_levels()
FRS Odds Ratio Chemo Only multivariate
# Important packages to load in library(dplyr) library(gtsummary) library(survival) library(labelled) library(tidyverse) library(broom) library(ggplot2) library(survminer) ####FRSFull with already coded CR-POPF vs No CR-POPF ##Subsetting the data so it's only patients with CR-POPF vs No CR-POPF FRSDemo <- subset(FRSFUll, Fistula.Grade == "CR-POPF" | Fistula.Grade == "No CR-POPF") ###Variables I want in Demographic Table FRSDemotable <- FRSDemo %>% select(PAN_FISTULA, Fistula.Grade, Age, SEX, BMI, RACE_NEW, PAN_GLANDTEXT, PAN_DUCTSIZE, DIABETES, PAN_CHEMO, PAN_RADIO, PAN_MALIG_HISTOLOGIC, ASACLAS, DOpertoD, DPRBILI, SeriousComplication, AnyComplication) FRSChemo <- FRSDemo %>% select(PAN_CHEMO, PAN_RADIO) #Ifelse function to create new column for serious complication and any complication FRSDemo1 <- mutate(FRSDemo, SeriousComplication = ifelse(CDARREST == "Cardiac Arrest Requiring CPR", "Yes", ifelse(CDMI == "Myocardial Infarction", "Yes", ifelse(OUPNEUMO == "Pneumonia", "Yes", ifelse(RENAINSF == "Progressive Renal Insufficiency", "Yes", ifelse(OPRENAFL == "Acute Renal Failure", "Yes", ifelse(PULEMBOL == "Pulmonary Embolism", "Yes", ifelse(OTHDVT == "DVT Requiring Therapy", "Yes", ifelse(RETURNOR == "Yes", "Yes", ifelse(ORGSPCSSI == "Organ/Space SSI", "Yes", ifelse(PRSEPIS == "Yes", "Yes", ifelse(REINTUB == "Unplanned Intubation", "Yes", ifelse(URNINFEC == "Urinary Tract Infection", "Yes", ifelse(DEHIS == "Wound Disruption", "Yes", "No")))))))))))))) ### Ifelse function to create new column for any complication FRSDemo <- mutate(FRSDemo1, AnyComplication = ifelse(CDARREST == "Cardiac Arrest Requiring CPR", "Yes", ifelse(CDMI == "Myocardial Infarction", "Yes", ifelse(OUPNEUMO == "Pneumonia", "Yes", ifelse(RENAINSF == "Progressive Renal Insufficiency", "Yes", ifelse(OPRENAFL == "Acute Renal Failure", "Yes", ifelse(PULEMBOL == "Pulmonary Embolism", "Yes", ifelse(OTHDVT == "DVT Requiring Therapy", "Yes", ifelse(RETURNOR == "Yes", "Yes", ifelse(ORGSPCSSI == "Organ/Space SSI", "Yes", ifelse(PRSEPIS == "Yes", "Yes", ifelse(REINTUB == "Unplanned Intubation", "Yes", ifelse(URNINFEC == "Urinary Tract Infection", "Yes", ifelse(SUPINFEC == "Superficial Incisional SSI", "Yes", ifelse(FAILWEAN == "On Ventilator greater than 48 Hours", "Yes", ifelse(CNSCVA == "Stroke/CVA", "Yes", ifelse(DEHIS == "Wound Disruption", "Yes", "No"))))))))))))))))) ### Recoding mortality FRSDemo$DOpertoD[is.na(FRSDemo$DOpertoD)] <- "No" FRSDemo$DOpertoD[FRSDemo$DOpertoD == 0] <- "Yes" FRSDemo$DOpertoD[FRSDemo$DOpertoD == 1] <- "Yes" FRSDemo$DOpertoD[FRSDemo$DOpertoD == 10] <- "Yes" FRSDemo$DOpertoD[FRSDemo$DOpertoD == 11] <- "Yes" FRSDemo$DOpertoD[FRSDemo$DOpertoD == 12] <- "Yes" FRSDemo$DOpertoD[FRSDemo$DOpertoD == 13] <- "Yes" FRSDemo$DOpertoD[FRSDemo$DOpertoD == 14] <- "Yes" FRSDemo$DOpertoD[FRSDemo$DOpertoD == 15] <- "Yes" FRSDemo$DOpertoD[FRSDemo$DOpertoD == 16] <- "Yes" FRSDemo$DOpertoD[FRSDemo$DOpertoD == 18] <- "Yes" FRSDemo$DOpertoD[FRSDemo$DOpertoD == 19] <- "Yes" FRSDemo$DOpertoD[FRSDemo$DOpertoD == 21] <- "Yes" FRSDemo$DOpertoD[FRSDemo$DOpertoD == 22] <- "Yes" FRSDemo$DOpertoD[FRSDemo$DOpertoD == 23] <- "Yes" FRSDemo$DOpertoD[FRSDemo$DOpertoD == 24] <- "Yes" FRSDemo$DOpertoD[FRSDemo$DOpertoD == 25] <- "Yes" FRSDemo$DOpertoD[FRSDemo$DOpertoD == 26] <- "Yes" FRSDemo$DOpertoD[FRSDemo$DOpertoD == 27] <- "Yes" FRSDemo$DOpertoD[FRSDemo$DOpertoD == 28] <- "Yes" FRSDemo$DOpertoD[FRSDemo$DOpertoD == 29] <- "Yes" FRSDemo$DOpertoD[FRSDemo$DOpertoD == 3] <- "Yes" FRSDemo$DOpertoD[FRSDemo$DOpertoD == 30] <- "Yes" FRSDemo$DOpertoD[FRSDemo$DOpertoD == 4] <- "Yes" FRSDemo$DOpertoD[FRSDemo$DOpertoD == 5] <- "Yes" FRSDemo$DOpertoD[FRSDemo$DOpertoD == 6] <- "Yes" FRSDemo$DOpertoD[FRSDemo$DOpertoD == 7] <- "Yes" FRSDemo$DOpertoD[FRSDemo$DOpertoD == 9] <- "Yes" FRSDemo$DOpertoD[FRSDemo$DOpertoD == 17] <- "Yes" FRSDemo$DOpertoD[FRSDemo$DOpertoD == 2] <- "Yes" FRSDemo$DOpertoD[FRSDemo$DOpertoD == 8] <- "Yes" FRSDemo$DOpertoD[FRSDemo$DOpertoD == 20] <- "Yes" ###Bringing in Panfinal to ensure I'm utilizing the most uptodate grading criteria for CRPOPF (ISGPS) ADDtoFRSDEMO <- read.csv ("panfinal.csv", header = TRUE, sep = "," ) ###Recode to the 4 grades of ISGPS ADDtoFRSDEMO$Fistula.Grade[ADDtoFRSDEMO$Fistula.Grade =="Grade A"] <- "Biochemical Leak" ADDtoFRSDEMO$Fistula.Grade[ADDtoFRSDEMO$Fistula.Grade =="Grade B"] <- "ISGPS Grade B" ADDtoFRSDEMO$Fistula.Grade[ADDtoFRSDEMO$Fistula.Grade =="Grade C"] <- "ISGPS Grade C" ### Removing Unknowns in fistual grade addtofrsdemo plan prior to adding in that column ADDtoFRSDEMO$Fistula.Grade[ADDtoFRSDEMO$Fistula.Grade =="Unknown"] <- NA ADDtoFRSDEMO <-na.omit(ADDtoFRSDEMO) ###move column over addtofrsdemo -> frsdemo FRSDemoNew <- cbind(FRSDemo, FistualGradeNew = ADDtoFRSDEMO$Fistula.Grade) ####recoding FRSDEMo Pan_fistula to include the labeled ISGPS criteria FRSDemo$PAN_FISTULA[FRSDemo$PAN_FISTULA =="Biochemical Leak only"] <- "Biochemical Leak" FRSDemo$PAN_FISTULA[FRSDemo$PAN_FISTULA =="Yes-persistent drainage, drain continued >7 days"] <- "ISGPS Grade B" FRSDemo$PAN_FISTULA[FRSDemo$PAN_FISTULA =="Yes-clinical diagnosis, percutaneous drainage performed"] <- "ISGPS Grade B" FRSDemo$PAN_FISTULA[FRSDemo$PAN_FISTULA =="Yes-persistent drainage, percutaneous drainage performed"] <- "ISGPS Grade B" FRSDemo$PAN_FISTULA[FRSDemo$PAN_FISTULA =="Yes-persistent drainage, NPO-TPN"] <- "ISGPS Grade B" FRSDemo$PAN_FISTULA[FRSDemo$PAN_FISTULA =="Yes-clinical diagnosis, drain continued >7 days"] <- "ISGPS Grade B" FRSDemo$PAN_FISTULA[FRSDemo$PAN_FISTULA =="Yes, Grade B POPF present"] <- "ISGPS Grade B" FRSDemo$PAN_FISTULA[FRSDemo$PAN_FISTULA =="Yes-clinical diagnosis, spontaneous wound drainage"] <- "ISGPS Grade B" FRSDemo$PAN_FISTULA[FRSDemo$PAN_FISTULA =="Yes-clinical diagnosis, NPO-TPN"] <- "ISGPS Grade B" FRSDemo$PAN_FISTULA[FRSDemo$PAN_FISTULA =="Yes-clinical diagnosis, reoperation performed"] <- "ISGPS Grade C" FRSDemo$PAN_FISTULA[FRSDemo$PAN_FISTULA =="Yes, Grade C POPF present"] <- "ISGPS Grade C" FRSDemo$PAN_FISTULA[FRSDemo$PAN_FISTULA =="Yes-persistent drainage, reoperation performed"] <- "ISGPS Grade C" FRSDemo$PAN_FISTULA[FRSDemo$PAN_FISTULA =="No evidence of Biochemical Leak or POPF"] <- "No Fistula" FRSDemo$PAN_FISTULA[FRSDemo$PAN_FISTULA =="No"] <- "No Fistula" #### Labeling columns var_label(FRSDemotable$PAN_FISTULA) <- "ISGPS Criteria" var_label(FRSDemotable$RACE_NEW) <- "Race" var_label(FRSDemotable$ASACLAS) <- "ASA Classification" var_label(FRSDemotable$SEX) <- "Sex" var_label(FRSDemotable$PAN_GLANDTEXT) <- "Gland Texture" var_label(FRSDemotable$PAN_DUCTSIZE) <- "Pancreatic Duct Diameter" var_label(FRSDemotable$DOpertoD) <- "Mortality" var_label(FRSDemotable$DIABETES) <- "Diabetes" var_label(FRSDemotable$SeriousComplication) <- "Serious Complication" var_label(FRSDemotable$AnyComplication) <- "Any Complication" var_label(FRSDemotable$PAN_CHEMO) <- "Preop Chemotherapy" var_label(FRSDemotable$PAN_RADIO) <- "Preop Radiation" var_label(FRSDemotable$PAN_MALIG_HISTOLOGIC) <- "Pathology" var_label(FRSDemotable$DPRBILI) <- "Preop Bilirubin" ## Changing any Unknowns/none assigned to NA FRSDemotable[FRSDemotable =="None assigned"] <- NA FRSDemotable[FRSDemotable =="Unknown"] <- NA ###Try removing 5-moribound from the odds ratio FRSDemotable$ASACLAS[FRSDemotable$ASACLAS =="5-Moribund"] <- NA ###Recoding Pathology FRSDemotable$PAN_MALIG_HISTOLOGIC[FRSDemotable$PAN_MALIG_HISTOLOGIC =="Other type"] <- NA FRSDemotable$PAN_MALIG_HISTOLOGIC[FRSDemotable$PAN_MALIG_HISTOLOGIC =="N/A"] <- NA #Final Step to create demographic table FRSOddsRatio2 %>% tbl_summary( by = ChemoOnly, digits = all_continuous() ~ 2,) %>% add_p(pvalue_fun = ~style_pvalue(.x, digits = 2))%>% bold_p() %>% add_overall() %>% modify_header(label ~ "**Variable**") %>% modify_spanning_header(c("stat_1", "stat_2") ~ "**Chem vs Radiation*") %>% bold_labels() #### Coding for Odds Ratio all below FRSOddsRatio <- FRSDemotable %>% mutate(FRSDemotable, BMIB = ifelse(BMI >= 30, "Obese", ifelse(BMI <= 30, "Non-Obese", "NA"))) FRSOddsRatio2 <- FRSOddsRatio1 %>% mutate(FRSOddsRatio1, ChemoOnly = ifelse(PAN_RADIO == "Yes", "No", ifelse(PAN_CHEMO == "Yes", "Yes", "No"))) ###Change CRPOPF to an event "1" FRSOddsRatio <- FRSOddsRatio %>% mutate(FRSOddsRatio, FistulaOddsRatio = ifelse(Fistula.Grade =="CR-POPF", "1", ifelse(Fistula.Grade =="No CR-POPF", "0", "NA"))) ###Create and odds ratio for DPAC vs ampullary, duodenal, cystic and islet cell FRSOddsRatio1 <- mutate(FRSOddsRatio, Pathology = ifelse(PAN_MALIG_HISTOLOGIC == "Pancreatic adenocarcinoma", "Pancreatic Adenocarcinoma", ifelse(PAN_MALIG_HISTOLOGIC == "Ampullary carcinoma", "Ampullary, Duodenal, Cystic", ifelse(PAN_MALIG_HISTOLOGIC == "Cystadenocarcinoma", "Ampullary, Duodenal, Cystic", ifelse(PAN_MALIG_HISTOLOGIC == "Duodenal carcinoma", "Ampullary, Duodenal, Cystic", "NA"))))) Maybe add distal choliangio to the above along with ampullary duodenal and cystic ^^^ Also cod duct size to be below and above 3 do something similar with gland texture ### Turning NA to the actual NA's that are ommitted in pathology FRSOddsRatio1$Pathology[FRSOddsRatio1$Pathology =="NA"] <- NA ###fistulaoddsratio as numeric FRSOddsRatio1$FistulaOddsRatio <- as.numeric(FRSOddsRatio1$FistulaOddsRatio) ###Recoding pancreatic duct diameter FRSOddsRatio1$PAN_DUCTSIZE[FRSOddsRatio1$PAN_DUCTSIZE ==">6 mm"] <- ">3 mm" FRSOddsRatio1$PAN_DUCTSIZE[FRSOddsRatio1$PAN_DUCTSIZE =="3-6 mm"] <- ">3 mm" ##Recoding gland texture FRSOddsRatio1$PAN_GLANDTEXT[FRSOddsRatio1$PAN_GLANDTEXT =="Intermediate"] <- NA ##Univariant Model Seriouscomplication UV <- FRSOddsRatio2 %>% select(FistulaOddsRatio, SEX, PAN_GLANDTEXT, PAN_DUCTSIZE, ChemoOnly, PAN_RADIO, Pathology) %>% tbl_uvregression( method = glm, y = FistulaOddsRatio, method.args = list(family = binomial), exponentiate = TRUE, pvalue_fun = ~style_pvalue(.x, digits = 2) ) %>% bold_p(t = 0.10) %>% bold_labels() %>% italicize_levels() ####Multivariant analysis serious complications MVOR <- glm(FistulaOddsRatio ~ SEX + PAN_GLANDTEXT + PAN_DUCTSIZE + ChemoOnly + PAN_RADIO + Pathology, data = FRSOddsRatio2, family = binomial("logit"), na.action =na.omit ) MVOR <- tbl_regression(MVOR, exponentiate = T, pvalue_fun = ~style_pvalue(.x, digits = 2), ) %>% bold_p(t = 0.10) %>% bold_labels() %>% italicize_levels() tbl_merge( list(UV, MVOR), tab_spanner = c("**Univariable**", "**Multivariable**") ) %>% bold_labels() %>% italicize_levels() ###Subset odds ratio datafram so only fistual patients are on it FRSNomogram <- subset(FRSOddsRatio1, Fistula.Grade == "CR-POPF") ####Nomogram install.packages("PASWR") install.packages("rms") library(PASWR) library(rms) data(titanic3) FRS.data <- datadist(FRSNomogram) options(datadist = 'frs.data') fit <- lrm(formula = Fistula.Grade ~ SEX + Age + DIABETES + PAN_GLANDTEXT + PAN_DUCTSIZE + Pathology, data = FRSNomogram) plot(nomogram(fit, fun = function(x)plogis(x))) sum(FRSOddsRatio2$ChemoOnly = "No")
FRS Odds Ratio Multivariate
# Important packages to load in library(dplyr) library(gtsummary) library(survival) library(labelled) library(tidyverse) library(broom) library(ggplot2) library(survminer) ####FRSFull with already coded CR-POPF vs No CR-POPF ##Subsetting the data so it's only patients with CR-POPF vs No CR-POPF FRSDemo <- subset(FRSFUll, Fistula.Grade == "CR-POPF" | Fistula.Grade == "No CR-POPF") ###Variables I want in Demographic Table FRSDemotable <- FRSDemo %>% select(PAN_FISTULA, Fistula.Grade, Age, SEX, BMI, RACE_NEW, PAN_GLANDTEXT, PAN_DUCTSIZE, DIABETES, PAN_CHEMO, PAN_RADIO, PAN_MALIG_HISTOLOGIC, ASACLAS, DOpertoD, DPRBILI, SeriousComplication, AnyComplication) #Ifelse function to create new column for serious complication and any complication FRSDemo1 <- mutate(FRSDemo, SeriousComplication = ifelse(CDARREST == "Cardiac Arrest Requiring CPR", "Yes", ifelse(CDMI == "Myocardial Infarction", "Yes", ifelse(OUPNEUMO == "Pneumonia", "Yes", ifelse(RENAINSF == "Progressive Renal Insufficiency", "Yes", ifelse(OPRENAFL == "Acute Renal Failure", "Yes", ifelse(PULEMBOL == "Pulmonary Embolism", "Yes", ifelse(OTHDVT == "DVT Requiring Therapy", "Yes", ifelse(RETURNOR == "Yes", "Yes", ifelse(ORGSPCSSI == "Organ/Space SSI", "Yes", ifelse(PRSEPIS == "Yes", "Yes", ifelse(REINTUB == "Unplanned Intubation", "Yes", ifelse(URNINFEC == "Urinary Tract Infection", "Yes", ifelse(DEHIS == "Wound Disruption", "Yes", "No")))))))))))))) ### Ifelse function to create new column for any complication FRSDemo <- mutate(FRSDemo1, AnyComplication = ifelse(CDARREST == "Cardiac Arrest Requiring CPR", "Yes", ifelse(CDMI == "Myocardial Infarction", "Yes", ifelse(OUPNEUMO == "Pneumonia", "Yes", ifelse(RENAINSF == "Progressive Renal Insufficiency", "Yes", ifelse(OPRENAFL == "Acute Renal Failure", "Yes", ifelse(PULEMBOL == "Pulmonary Embolism", "Yes", ifelse(OTHDVT == "DVT Requiring Therapy", "Yes", ifelse(RETURNOR == "Yes", "Yes", ifelse(ORGSPCSSI == "Organ/Space SSI", "Yes", ifelse(PRSEPIS == "Yes", "Yes", ifelse(REINTUB == "Unplanned Intubation", "Yes", ifelse(URNINFEC == "Urinary Tract Infection", "Yes", ifelse(SUPINFEC == "Superficial Incisional SSI", "Yes", ifelse(FAILWEAN == "On Ventilator greater than 48 Hours", "Yes", ifelse(CNSCVA == "Stroke/CVA", "Yes", ifelse(DEHIS == "Wound Disruption", "Yes", "No"))))))))))))))))) ### Recoding mortality FRSDemo$DOpertoD[is.na(FRSDemo$DOpertoD)] <- "No" FRSDemo$DOpertoD[FRSDemo$DOpertoD == 0] <- "Yes" FRSDemo$DOpertoD[FRSDemo$DOpertoD == 1] <- "Yes" FRSDemo$DOpertoD[FRSDemo$DOpertoD == 10] <- "Yes" FRSDemo$DOpertoD[FRSDemo$DOpertoD == 11] <- "Yes" FRSDemo$DOpertoD[FRSDemo$DOpertoD == 12] <- "Yes" FRSDemo$DOpertoD[FRSDemo$DOpertoD == 13] <- "Yes" FRSDemo$DOpertoD[FRSDemo$DOpertoD == 14] <- "Yes" FRSDemo$DOpertoD[FRSDemo$DOpertoD == 15] <- "Yes" FRSDemo$DOpertoD[FRSDemo$DOpertoD == 16] <- "Yes" FRSDemo$DOpertoD[FRSDemo$DOpertoD == 18] <- "Yes" FRSDemo$DOpertoD[FRSDemo$DOpertoD == 19] <- "Yes" FRSDemo$DOpertoD[FRSDemo$DOpertoD == 21] <- "Yes" FRSDemo$DOpertoD[FRSDemo$DOpertoD == 22] <- "Yes" FRSDemo$DOpertoD[FRSDemo$DOpertoD == 23] <- "Yes" FRSDemo$DOpertoD[FRSDemo$DOpertoD == 24] <- "Yes" FRSDemo$DOpertoD[FRSDemo$DOpertoD == 25] <- "Yes" FRSDemo$DOpertoD[FRSDemo$DOpertoD == 26] <- "Yes" FRSDemo$DOpertoD[FRSDemo$DOpertoD == 27] <- "Yes" FRSDemo$DOpertoD[FRSDemo$DOpertoD == 28] <- "Yes" FRSDemo$DOpertoD[FRSDemo$DOpertoD == 29] <- "Yes" FRSDemo$DOpertoD[FRSDemo$DOpertoD == 3] <- "Yes" FRSDemo$DOpertoD[FRSDemo$DOpertoD == 30] <- "Yes" FRSDemo$DOpertoD[FRSDemo$DOpertoD == 4] <- "Yes" FRSDemo$DOpertoD[FRSDemo$DOpertoD == 5] <- "Yes" FRSDemo$DOpertoD[FRSDemo$DOpertoD == 6] <- "Yes" FRSDemo$DOpertoD[FRSDemo$DOpertoD == 7] <- "Yes" FRSDemo$DOpertoD[FRSDemo$DOpertoD == 9] <- "Yes" FRSDemo$DOpertoD[FRSDemo$DOpertoD == 17] <- "Yes" FRSDemo$DOpertoD[FRSDemo$DOpertoD == 2] <- "Yes" FRSDemo$DOpertoD[FRSDemo$DOpertoD == 8] <- "Yes" FRSDemo$DOpertoD[FRSDemo$DOpertoD == 20] <- "Yes" ###Bringing in Panfinal to ensure I'm utilizing the most uptodate grading criteria for CRPOPF (ISGPS) ADDtoFRSDEMO <- read.csv ("panfinal.csv", header = TRUE, sep = "," ) ###Recode to the 4 grades of ISGPS ADDtoFRSDEMO$Fistula.Grade[ADDtoFRSDEMO$Fistula.Grade =="Grade A"] <- "Biochemical Leak" ADDtoFRSDEMO$Fistula.Grade[ADDtoFRSDEMO$Fistula.Grade =="Grade B"] <- "ISGPS Grade B" ADDtoFRSDEMO$Fistula.Grade[ADDtoFRSDEMO$Fistula.Grade =="Grade C"] <- "ISGPS Grade C" ### Removing Unknowns in fistual grade addtofrsdemo plan prior to adding in that column ADDtoFRSDEMO$Fistula.Grade[ADDtoFRSDEMO$Fistula.Grade =="Unknown"] <- NA ADDtoFRSDEMO <-na.omit(ADDtoFRSDEMO) ###move column over addtofrsdemo -> frsdemo FRSDemoNew <- cbind(FRSDemo, FistualGradeNew = ADDtoFRSDEMO$Fistula.Grade) ####recoding FRSDEMo Pan_fistula to include the labeled ISGPS criteria FRSDemo$PAN_FISTULA[FRSDemo$PAN_FISTULA =="Biochemical Leak only"] <- "Biochemical Leak" FRSDemo$PAN_FISTULA[FRSDemo$PAN_FISTULA =="Yes-persistent drainage, drain continued >7 days"] <- "ISGPS Grade B" FRSDemo$PAN_FISTULA[FRSDemo$PAN_FISTULA =="Yes-clinical diagnosis, percutaneous drainage performed"] <- "ISGPS Grade B" FRSDemo$PAN_FISTULA[FRSDemo$PAN_FISTULA =="Yes-persistent drainage, percutaneous drainage performed"] <- "ISGPS Grade B" FRSDemo$PAN_FISTULA[FRSDemo$PAN_FISTULA =="Yes-persistent drainage, NPO-TPN"] <- "ISGPS Grade B" FRSDemo$PAN_FISTULA[FRSDemo$PAN_FISTULA =="Yes-clinical diagnosis, drain continued >7 days"] <- "ISGPS Grade B" FRSDemo$PAN_FISTULA[FRSDemo$PAN_FISTULA =="Yes, Grade B POPF present"] <- "ISGPS Grade B" FRSDemo$PAN_FISTULA[FRSDemo$PAN_FISTULA =="Yes-clinical diagnosis, spontaneous wound drainage"] <- "ISGPS Grade B" FRSDemo$PAN_FISTULA[FRSDemo$PAN_FISTULA =="Yes-clinical diagnosis, NPO-TPN"] <- "ISGPS Grade B" FRSDemo$PAN_FISTULA[FRSDemo$PAN_FISTULA =="Yes-clinical diagnosis, reoperation performed"] <- "ISGPS Grade C" FRSDemo$PAN_FISTULA[FRSDemo$PAN_FISTULA =="Yes, Grade C POPF present"] <- "ISGPS Grade C" FRSDemo$PAN_FISTULA[FRSDemo$PAN_FISTULA =="Yes-persistent drainage, reoperation performed"] <- "ISGPS Grade C" FRSDemo$PAN_FISTULA[FRSDemo$PAN_FISTULA =="No evidence of Biochemical Leak or POPF"] <- "No Fistula" FRSDemo$PAN_FISTULA[FRSDemo$PAN_FISTULA =="No"] <- "No Fistula" #### Labeling columns var_label(FRSDemotable$PAN_FISTULA) <- "ISGPS Criteria" var_label(FRSDemotable$RACE_NEW) <- "Race" var_label(FRSDemotable$ASACLAS) <- "ASA Classification" var_label(FRSDemotable$SEX) <- "Sex" var_label(FRSDemotable$PAN_GLANDTEXT) <- "Gland Texture" var_label(FRSDemotable$PAN_DUCTSIZE) <- "Pancreatic Duct Diameter" var_label(FRSDemotable$DOpertoD) <- "Mortality" var_label(FRSDemotable$DIABETES) <- "Diabetes" var_label(FRSDemotable$SeriousComplication) <- "Serious Complication" var_label(FRSDemotable$AnyComplication) <- "Any Complication" var_label(FRSDemotable$PAN_CHEMO) <- "Preop Chemotherapy" var_label(FRSDemotable$PAN_RADIO) <- "Preop Radiation" var_label(FRSDemotable$PAN_MALIG_HISTOLOGIC) <- "Pathology" var_label(FRSDemotable$DPRBILI) <- "Preop Bilirubin" ## Changing any Unknowns/none assigned to NA FRSDemotable[FRSDemotable =="None assigned"] <- NA FRSDemotable[FRSDemotable =="Unknown"] <- NA ###Try removing 5-moribound from the odds ratio FRSDemotable$ASACLAS[FRSDemotable$ASACLAS =="5-Moribund"] <- NA ###Recoding Pathology FRSDemotable$PAN_MALIG_HISTOLOGIC[FRSDemotable$PAN_MALIG_HISTOLOGIC =="Other type"] <- NA FRSDemotable$PAN_MALIG_HISTOLOGIC[FRSDemotable$PAN_MALIG_HISTOLOGIC =="N/A"] <- NA #Final Step to create demographic table FRSDemotable %>% tbl_summary( by = Fistula.Grade, digits = all_continuous() ~ 2,) %>% add_p(pvalue_fun = ~style_pvalue(.x, digits = 2))%>% bold_p() %>% add_overall() %>% modify_header(label ~ "**Variable**") %>% modify_spanning_header(c("stat_1", "stat_2") ~ "**Clinically Relevant Postoperative Pancreatic Fistula*") %>% bold_labels() #### Coding for Odds Ratio all below FRSOddsRatio <- FRSDemotable %>% mutate(FRSDemotable, BMIB = ifelse(BMI >= 30, "Obese", ifelse(BMI <= 30, "Non-Obese", "NA"))) ###Change CRPOPF to an event "1" FRSOddsRatio <- FRSOddsRatio %>% mutate(FRSOddsRatio, FistulaOddsRatio = ifelse(Fistula.Grade =="CR-POPF", "1", ifelse(Fistula.Grade =="No CR-POPF", "0", "NA"))) ###Create and odds ratio for DPAC vs ampullary, duodenal, cystic and islet cell FRSOddsRatio1 <- mutate(FRSOddsRatio, Pathology = ifelse(PAN_MALIG_HISTOLOGIC == "Pancreatic adenocarcinoma", "Pancreatic Adenocarcinoma", ifelse(PAN_MALIG_HISTOLOGIC == "Ampullary carcinoma", "Ampullary, Duodenal, Cystic", ifelse(PAN_MALIG_HISTOLOGIC == "Cystadenocarcinoma", "Ampullary, Duodenal, Cystic", ifelse(PAN_MALIG_HISTOLOGIC == "Duodenal carcinoma", "Ampullary, Duodenal, Cystic", "NA"))))) Maybe add distal choliangio to the above along with ampullary duodenal and cystic ^^^ Also cod duct size to be below and above 3 do something similar with gland texture ### Turning NA to the actual NA's that are ommitted in pathology FRSOddsRatio1$Pathology[FRSOddsRatio1$Pathology =="NA"] <- NA ###fistulaoddsratio as numeric FRSOddsRatio1$FistulaOddsRatio <- as.numeric(FRSOddsRatio1$FistulaOddsRatio) ###Recoding pancreatic duct diameter FRSOddsRatio1$PAN_DUCTSIZE[FRSOddsRatio1$PAN_DUCTSIZE ==">6 mm"] <- ">3 mm" FRSOddsRatio1$PAN_DUCTSIZE[FRSOddsRatio1$PAN_DUCTSIZE =="3-6 mm"] <- ">3 mm" ##Recoding gland texture FRSOddsRatio1$PAN_GLANDTEXT[FRSOddsRatio1$PAN_GLANDTEXT =="Intermediate"] <- NA ##Univariant Model Seriouscomplication UV <- FRSOddsRatio1 %>% dplyr::select(FistulaOddsRatio, SEX, RACE_NEW, PAN_GLANDTEXT, PAN_DUCTSIZE, DIABETES, PAN_CHEMO, PAN_RADIO, Pathology) %>% tbl_uvregression( method = glm, y = FistulaOddsRatio, method.args = list(family = binomial), exponentiate = TRUE, pvalue_fun = ~style_pvalue(.x, digits = 2) ) %>% bold_p(t = 0.10) %>% bold_labels() %>% italicize_levels() ####Multivariant analysis serious complications MVOR <- glm(FistulaOddsRatio ~ SEX + RACE_NEW + PAN_GLANDTEXT + PAN_DUCTSIZE + DIABETES + PAN_CHEMO + PAN_RADIO + Pathology, data = FRSOddsRatio1, family = binomial("logit"), na.action =na.omit ) MVOR <- tbl_regression(MVOR, exponentiate = T, pvalue_fun = ~style_pvalue(.x, digits = 2), ) %>% bold_p(t = 0.10) %>% bold_labels() %>% italicize_levels() tbl_merge( list(UV, MVOR), tab_spanner = c("**Univariable**", "**Multivariable**") ) %>% bold_labels() %>% italicize_levels() ###Subset odds ratio datafram so only fistual patients are on it FRSNomogram <- subset(FRSOddsRatio1, Fistula.Grade == "CR-POPF") ####Nomogram install.packages("PASWR") install.packages("rms") library(PASWR) library(rms) data(titanic3) FRS.data <- datadist(FRSNomogram) options(datadist = 'frs.data') fit <- lrm(formula = Fistula.Grade ~ SEX + Age + DIABETES + PAN_GLANDTEXT + PAN_DUCTSIZE + Pathology, data = FRSNomogram) plot(nomogram(fit, fun = function(x)plogis(x)))
CRPOP FRS Odds Ratio
# Important packages to load in library(dplyr) library(gtsummary) library(survival) library(labelled) library(tidyverse) library(broom) library(ggplot2) library(survminer) ####FRSFull with already coded CR-POPF vs No CR-POPF ##Subsetting the data so it's only patients with CR-POPF vs No CR-POPF FRSDemo <- subset(FRSFUll, Fistula.Grade == "CR-POPF" | Fistula.Grade == "No CR-POPF") ###Variables I want in Demographic Table FRSDemotable <- FRSDemo %>% select(PAN_FISTULA, Fistula.Grade, Age, SEX, BMI, RACE_NEW, PAN_GLANDTEXT, PAN_DUCTSIZE, DIABETES, PAN_CHEMO, PAN_RADIO, PAN_MALIG_HISTOLOGIC, ASACLAS, DOpertoD, DPRBILI, SeriousComplication, AnyComplication) #Ifelse function to create new column for serious complication and any complication FRSDemo1 <- mutate(FRSDemo, SeriousComplication = ifelse(CDARREST == "Cardiac Arrest Requiring CPR", "Yes", ifelse(CDMI == "Myocardial Infarction", "Yes", ifelse(OUPNEUMO == "Pneumonia", "Yes", ifelse(RENAINSF == "Progressive Renal Insufficiency", "Yes", ifelse(OPRENAFL == "Acute Renal Failure", "Yes", ifelse(PULEMBOL == "Pulmonary Embolism", "Yes", ifelse(OTHDVT == "DVT Requiring Therapy", "Yes", ifelse(RETURNOR == "Yes", "Yes", ifelse(ORGSPCSSI == "Organ/Space SSI", "Yes", ifelse(PRSEPIS == "Yes", "Yes", ifelse(REINTUB == "Unplanned Intubation", "Yes", ifelse(URNINFEC == "Urinary Tract Infection", "Yes", ifelse(DEHIS == "Wound Disruption", "Yes", "No")))))))))))))) ### Ifelse function to create new column for any complication FRSDemo <- mutate(FRSDemo1, AnyComplication = ifelse(CDARREST == "Cardiac Arrest Requiring CPR", "Yes", ifelse(CDMI == "Myocardial Infarction", "Yes", ifelse(OUPNEUMO == "Pneumonia", "Yes", ifelse(RENAINSF == "Progressive Renal Insufficiency", "Yes", ifelse(OPRENAFL == "Acute Renal Failure", "Yes", ifelse(PULEMBOL == "Pulmonary Embolism", "Yes", ifelse(OTHDVT == "DVT Requiring Therapy", "Yes", ifelse(RETURNOR == "Yes", "Yes", ifelse(ORGSPCSSI == "Organ/Space SSI", "Yes", ifelse(PRSEPIS == "Yes", "Yes", ifelse(REINTUB == "Unplanned Intubation", "Yes", ifelse(URNINFEC == "Urinary Tract Infection", "Yes", ifelse(SUPINFEC == "Superficial Incisional SSI", "Yes", ifelse(FAILWEAN == "On Ventilator greater than 48 Hours", "Yes", ifelse(CNSCVA == "Stroke/CVA", "Yes", ifelse(DEHIS == "Wound Disruption", "Yes", "No"))))))))))))))))) ### Recoding mortality FRSDemo$DOpertoD[is.na(FRSDemo$DOpertoD)] <- "No" FRSDemo$DOpertoD[FRSDemo$DOpertoD == 0] <- "Yes" FRSDemo$DOpertoD[FRSDemo$DOpertoD == 1] <- "Yes" FRSDemo$DOpertoD[FRSDemo$DOpertoD == 10] <- "Yes" FRSDemo$DOpertoD[FRSDemo$DOpertoD == 11] <- "Yes" FRSDemo$DOpertoD[FRSDemo$DOpertoD == 12] <- "Yes" FRSDemo$DOpertoD[FRSDemo$DOpertoD == 13] <- "Yes" FRSDemo$DOpertoD[FRSDemo$DOpertoD == 14] <- "Yes" FRSDemo$DOpertoD[FRSDemo$DOpertoD == 15] <- "Yes" FRSDemo$DOpertoD[FRSDemo$DOpertoD == 16] <- "Yes" FRSDemo$DOpertoD[FRSDemo$DOpertoD == 18] <- "Yes" FRSDemo$DOpertoD[FRSDemo$DOpertoD == 19] <- "Yes" FRSDemo$DOpertoD[FRSDemo$DOpertoD == 21] <- "Yes" FRSDemo$DOpertoD[FRSDemo$DOpertoD == 22] <- "Yes" FRSDemo$DOpertoD[FRSDemo$DOpertoD == 23] <- "Yes" FRSDemo$DOpertoD[FRSDemo$DOpertoD == 24] <- "Yes" FRSDemo$DOpertoD[FRSDemo$DOpertoD == 25] <- "Yes" FRSDemo$DOpertoD[FRSDemo$DOpertoD == 26] <- "Yes" FRSDemo$DOpertoD[FRSDemo$DOpertoD == 27] <- "Yes" FRSDemo$DOpertoD[FRSDemo$DOpertoD == 28] <- "Yes" FRSDemo$DOpertoD[FRSDemo$DOpertoD == 29] <- "Yes" FRSDemo$DOpertoD[FRSDemo$DOpertoD == 3] <- "Yes" FRSDemo$DOpertoD[FRSDemo$DOpertoD == 30] <- "Yes" FRSDemo$DOpertoD[FRSDemo$DOpertoD == 4] <- "Yes" FRSDemo$DOpertoD[FRSDemo$DOpertoD == 5] <- "Yes" FRSDemo$DOpertoD[FRSDemo$DOpertoD == 6] <- "Yes" FRSDemo$DOpertoD[FRSDemo$DOpertoD == 7] <- "Yes" FRSDemo$DOpertoD[FRSDemo$DOpertoD == 9] <- "Yes" FRSDemo$DOpertoD[FRSDemo$DOpertoD == 17] <- "Yes" FRSDemo$DOpertoD[FRSDemo$DOpertoD == 2] <- "Yes" FRSDemo$DOpertoD[FRSDemo$DOpertoD == 8] <- "Yes" FRSDemo$DOpertoD[FRSDemo$DOpertoD == 20] <- "Yes" ###Bringing in Panfinal to ensure I'm utilizing the most uptodate grading criteria for CRPOPF (ISGPS) ADDtoFRSDEMO <- read.csv ("panfinal.csv", header = TRUE, sep = "," ) ###Recode to the 4 grades of ISGPS ADDtoFRSDEMO$Fistula.Grade[ADDtoFRSDEMO$Fistula.Grade =="Grade A"] <- "Biochemical Leak" ADDtoFRSDEMO$Fistula.Grade[ADDtoFRSDEMO$Fistula.Grade =="Grade B"] <- "ISGPS Grade B" ADDtoFRSDEMO$Fistula.Grade[ADDtoFRSDEMO$Fistula.Grade =="Grade C"] <- "ISGPS Grade C" ### Removing Unknowns in fistual grade addtofrsdemo plan prior to adding in that column ADDtoFRSDEMO$Fistula.Grade[ADDtoFRSDEMO$Fistula.Grade =="Unknown"] <- NA ADDtoFRSDEMO <-na.omit(ADDtoFRSDEMO) ###move column over addtofrsdemo -> frsdemo FRSDemoNew <- cbind(FRSDemo, FistualGradeNew = ADDtoFRSDEMO$Fistula.Grade) ####recoding FRSDEMo Pan_fistula to include the labeled ISGPS criteria FRSDemo$PAN_FISTULA[FRSDemo$PAN_FISTULA =="Biochemical Leak only"] <- "Biochemical Leak" FRSDemo$PAN_FISTULA[FRSDemo$PAN_FISTULA =="Yes-persistent drainage, drain continued >7 days"] <- "ISGPS Grade B" FRSDemo$PAN_FISTULA[FRSDemo$PAN_FISTULA =="Yes-clinical diagnosis, percutaneous drainage performed"] <- "ISGPS Grade B" FRSDemo$PAN_FISTULA[FRSDemo$PAN_FISTULA =="Yes-persistent drainage, percutaneous drainage performed"] <- "ISGPS Grade B" FRSDemo$PAN_FISTULA[FRSDemo$PAN_FISTULA =="Yes-persistent drainage, NPO-TPN"] <- "ISGPS Grade B" FRSDemo$PAN_FISTULA[FRSDemo$PAN_FISTULA =="Yes-clinical diagnosis, drain continued >7 days"] <- "ISGPS Grade B" FRSDemo$PAN_FISTULA[FRSDemo$PAN_FISTULA =="Yes, Grade B POPF present"] <- "ISGPS Grade B" FRSDemo$PAN_FISTULA[FRSDemo$PAN_FISTULA =="Yes-clinical diagnosis, spontaneous wound drainage"] <- "ISGPS Grade B" FRSDemo$PAN_FISTULA[FRSDemo$PAN_FISTULA =="Yes-clinical diagnosis, NPO-TPN"] <- "ISGPS Grade B" FRSDemo$PAN_FISTULA[FRSDemo$PAN_FISTULA =="Yes-clinical diagnosis, reoperation performed"] <- "ISGPS Grade C" FRSDemo$PAN_FISTULA[FRSDemo$PAN_FISTULA =="Yes, Grade C POPF present"] <- "ISGPS Grade C" FRSDemo$PAN_FISTULA[FRSDemo$PAN_FISTULA =="Yes-persistent drainage, reoperation performed"] <- "ISGPS Grade C" FRSDemo$PAN_FISTULA[FRSDemo$PAN_FISTULA =="No evidence of Biochemical Leak or POPF"] <- "No Fistula" FRSDemo$PAN_FISTULA[FRSDemo$PAN_FISTULA =="No"] <- "No Fistula" #### Labeling columns var_label(FRSDemotable$PAN_FISTULA) <- "ISGPS Criteria" var_label(FRSDemotable$RACE_NEW) <- "Race" var_label(FRSDemotable$ASACLAS) <- "ASA Classification" var_label(FRSDemotable$SEX) <- "Sex" var_label(FRSDemotable$PAN_GLANDTEXT) <- "Gland Texture" var_label(FRSDemotable$PAN_DUCTSIZE) <- "Pancreatic Duct Diameter" var_label(FRSDemotable$DOpertoD) <- "Mortality" var_label(FRSDemotable$DIABETES) <- "Diabetes" var_label(FRSDemotable$SeriousComplication) <- "Serious Complication" var_label(FRSDemotable$AnyComplication) <- "Any Complication" var_label(FRSDemotable$PAN_CHEMO) <- "Preop Chemotherapy" var_label(FRSDemotable$PAN_RADIO) <- "Preop Radiation" var_label(FRSDemotable$PAN_MALIG_HISTOLOGIC) <- "Pathology" var_label(FRSDemotable$DPRBILI) <- "Preop Bilirubin" ## Changing any Unknowns/none assigned to NA FRSDemotable[FRSDemotable =="None assigned"] <- NA FRSDemotable[FRSDemotable =="Unknown"] <- NA ###Try removing 5-moribound from the odds ratio FRSDemotable$ASACLAS[FRSDemotable$ASACLAS =="5-Moribund"] <- NA ###Recoding Pathology FRSDemotable$PAN_MALIG_HISTOLOGIC[FRSDemotable$PAN_MALIG_HISTOLOGIC =="Other type"] <- NA FRSDemotable$PAN_MALIG_HISTOLOGIC[FRSDemotable$PAN_MALIG_HISTOLOGIC =="N/A"] <- NA #Final Step to create demographic table FRSDemotable %>% tbl_summary( by = Fistula.Grade, digits = all_continuous() ~ 2,) %>% add_p(pvalue_fun = ~style_pvalue(.x, digits = 2))%>% bold_p() %>% add_overall() %>% modify_header(label ~ "**Variable**") %>% modify_spanning_header(c("stat_1", "stat_2") ~ "**Clinically Relevant Postoperative Pancreatic Fistula*") %>% bold_labels() #### Coding for Odds Ratio all below FRSOddsRatio <- FRSDemotable %>% mutate(FRSDemotable, BMIB = ifelse(BMI >= 30, "Obese", ifelse(BMI <= 30, "Non-Obese", "NA"))) ###Change CRPOPF to an event "1" FRSOddsRatio <- FRSOddsRatio %>% mutate(FRSOddsRatio, FistulaOddsRatio = ifelse(Fistula.Grade =="CR-POPF", "1", ifelse(Fistula.Grade =="No CR-POPF", "0", "NA"))) ###Create and odds ratio for DPAC vs ampullary, duodenal, cystic and islet cell FRSOddsRatio1 <- mutate(FRSOddsRatio, Pathology = ifelse(PAN_MALIG_HISTOLOGIC == "Pancreatic adenocarcinoma", "Pancreatic Adenocarcinoma", ifelse(PAN_MALIG_HISTOLOGIC == "Ampullary carcinoma", "Ampullary, Duodenal, Cystic", ifelse(PAN_MALIG_HISTOLOGIC == "Cystadenocarcinoma", "Ampullary, Duodenal, Cystic", ifelse(PAN_MALIG_HISTOLOGIC == "Duodenal carcinoma", "Ampullary, Duodenal, Cystic", "NA"))))) Maybe add distal choliangio to the above along with ampullary duodenal and cystic ^^^ Also cod duct size to be below and above 3 do something similar with gland texture ### Turning NA to the actual NA's that are ommitted in pathology FRSOddsRatio1$Pathology[FRSOddsRatio1$Pathology =="NA"] <- NA ###fistulaoddsratio as numeric FRSOddsRatio1$FistulaOddsRatio <- as.numeric(FRSOddsRatio1$FistulaOddsRatio) ###Recoding pancreatic duct diameter FRSOddsRatio1$PAN_DUCTSIZE[FRSOddsRatio1$PAN_DUCTSIZE ==">6 mm"] <- ">3 mm" FRSOddsRatio1$PAN_DUCTSIZE[FRSOddsRatio1$PAN_DUCTSIZE =="3-6 mm"] <- ">3 mm" ##Recoding gland texture FRSOddsRatio1$PAN_GLANDTEXT[FRSOddsRatio1$PAN_GLANDTEXT =="Intermediate"] <- NA ##Univariant Model Seriouscomplication UV <- FRSOddsRatio1 %>% dplyr::select(FistulaOddsRatio, SEX, RACE_NEW, PAN_GLANDTEXT, PAN_DUCTSIZE, DIABETES, PAN_CHEMO, PAN_RADIO, Pathology) %>% tbl_uvregression( method = glm, y = FistulaOddsRatio, method.args = list(family = binomial), exponentiate = TRUE, pvalue_fun = ~style_pvalue(.x, digits = 2) ) %>% bold_p(t = 0.10) %>% bold_labels() %>% italicize_levels() ####Multivariant analysis serious complications MVOR <- glm(SeriousComplication1 ~ PAN_APPROACH + SEX + BMIB + ASACLAS + BMI, data = SeriousComplicationOR, family = binomial("logit"), na.action =na.omit ) MVOR <- tbl_regression(MVOR, exponentiate = T, pvalue_fun = ~style_pvalue(.x, digits = 2), ) %>% bold_p(t = 0.10) %>% bold_labels() %>% italicize_levels() tbl_merge( list(UV, MVOR), tab_spanner = c("**Univariable**", "**Multivariable**") ) %>% bold_labels() %>% italicize_levels()
CRPOPF Fistula Demographic Table (Nomogram)
# Important packages to load in library(dplyr) library(gtsummary) library(survival) library(labelled) library(tidyverse) library(broom) library(ggplot2) library(survminer) ####FRSFull with already coded CR-POPF vs No CR-POPF ##Subsetting the data so it's only patients with CR-POPF vs No CR-POPF FRSDemo <- subset(FRSFUll, Fistula.Grade == "CR-POPF" | Fistula.Grade == "No CR-POPF") ###Variables I want in Demographic Table FRSDemotable <- FRSDemo %>% select(PAN_FISTULA, Fistula.Grade, Age, SEX, BMI, RACE_NEW, PAN_GLANDTEXT, PAN_DUCTSIZE, DIABETES, PAN_MALIG_HISTOLOGIC, ASACLAS, DOpertoD, SeriousComplication, AnyComplication ) #Ifelse function to create new column for serious complication and any complication FRSDemo1 <- mutate(FRSDemo, SeriousComplication = ifelse(CDARREST == "Cardiac Arrest Requiring CPR", "Yes", ifelse(CDMI == "Myocardial Infarction", "Yes", ifelse(OUPNEUMO == "Pneumonia", "Yes", ifelse(RENAINSF == "Progressive Renal Insufficiency", "Yes", ifelse(OPRENAFL == "Acute Renal Failure", "Yes", ifelse(PULEMBOL == "Pulmonary Embolism", "Yes", ifelse(OTHDVT == "DVT Requiring Therapy", "Yes", ifelse(RETURNOR == "Yes", "Yes", ifelse(ORGSPCSSI == "Organ/Space SSI", "Yes", ifelse(PRSEPIS == "Yes", "Yes", ifelse(REINTUB == "Unplanned Intubation", "Yes", ifelse(URNINFEC == "Urinary Tract Infection", "Yes", ifelse(DEHIS == "Wound Disruption", "Yes", "No")))))))))))))) ### Ifelse function to create new column for any complication FRSDemo <- mutate(FRSDemo1, AnyComplication = ifelse(CDARREST == "Cardiac Arrest Requiring CPR", "Yes", ifelse(CDMI == "Myocardial Infarction", "Yes", ifelse(OUPNEUMO == "Pneumonia", "Yes", ifelse(RENAINSF == "Progressive Renal Insufficiency", "Yes", ifelse(OPRENAFL == "Acute Renal Failure", "Yes", ifelse(PULEMBOL == "Pulmonary Embolism", "Yes", ifelse(OTHDVT == "DVT Requiring Therapy", "Yes", ifelse(RETURNOR == "Yes", "Yes", ifelse(ORGSPCSSI == "Organ/Space SSI", "Yes", ifelse(PRSEPIS == "Yes", "Yes", ifelse(REINTUB == "Unplanned Intubation", "Yes", ifelse(URNINFEC == "Urinary Tract Infection", "Yes", ifelse(SUPINFEC == "Superficial Incisional SSI", "Yes", ifelse(FAILWEAN == "On Ventilator greater than 48 Hours", "Yes", ifelse(CNSCVA == "Stroke/CVA", "Yes", ifelse(DEHIS == "Wound Disruption", "Yes", "No"))))))))))))))))) ### Recoding mortality FRSDemo$DOpertoD[is.na(FRSDemo$DOpertoD)] <- "No" FRSDemo$DOpertoD[FRSDemo$DOpertoD == 0] <- "Yes" FRSDemo$DOpertoD[FRSDemo$DOpertoD == 1] <- "Yes" FRSDemo$DOpertoD[FRSDemo$DOpertoD == 10] <- "Yes" FRSDemo$DOpertoD[FRSDemo$DOpertoD == 11] <- "Yes" FRSDemo$DOpertoD[FRSDemo$DOpertoD == 12] <- "Yes" FRSDemo$DOpertoD[FRSDemo$DOpertoD == 13] <- "Yes" FRSDemo$DOpertoD[FRSDemo$DOpertoD == 14] <- "Yes" FRSDemo$DOpertoD[FRSDemo$DOpertoD == 15] <- "Yes" FRSDemo$DOpertoD[FRSDemo$DOpertoD == 16] <- "Yes" FRSDemo$DOpertoD[FRSDemo$DOpertoD == 18] <- "Yes" FRSDemo$DOpertoD[FRSDemo$DOpertoD == 19] <- "Yes" FRSDemo$DOpertoD[FRSDemo$DOpertoD == 21] <- "Yes" FRSDemo$DOpertoD[FRSDemo$DOpertoD == 22] <- "Yes" FRSDemo$DOpertoD[FRSDemo$DOpertoD == 23] <- "Yes" FRSDemo$DOpertoD[FRSDemo$DOpertoD == 24] <- "Yes" FRSDemo$DOpertoD[FRSDemo$DOpertoD == 25] <- "Yes" FRSDemo$DOpertoD[FRSDemo$DOpertoD == 26] <- "Yes" FRSDemo$DOpertoD[FRSDemo$DOpertoD == 27] <- "Yes" FRSDemo$DOpertoD[FRSDemo$DOpertoD == 28] <- "Yes" FRSDemo$DOpertoD[FRSDemo$DOpertoD == 29] <- "Yes" FRSDemo$DOpertoD[FRSDemo$DOpertoD == 3] <- "Yes" FRSDemo$DOpertoD[FRSDemo$DOpertoD == 30] <- "Yes" FRSDemo$DOpertoD[FRSDemo$DOpertoD == 4] <- "Yes" FRSDemo$DOpertoD[FRSDemo$DOpertoD == 5] <- "Yes" FRSDemo$DOpertoD[FRSDemo$DOpertoD == 6] <- "Yes" FRSDemo$DOpertoD[FRSDemo$DOpertoD == 7] <- "Yes" FRSDemo$DOpertoD[FRSDemo$DOpertoD == 9] <- "Yes" FRSDemo$DOpertoD[FRSDemo$DOpertoD == 17] <- "Yes" FRSDemo$DOpertoD[FRSDemo$DOpertoD == 2] <- "Yes" FRSDemo$DOpertoD[FRSDemo$DOpertoD == 8] <- "Yes" FRSDemo$DOpertoD[FRSDemo$DOpertoD == 20] <- "Yes" ###Bringing in Panfinal to ensure I'm utilizing the most uptodate grading criteria for CRPOPF (ISGPS) ADDtoFRSDEMO <- read.csv ("panfinal.csv", header = TRUE, sep = "," ) ###Recode to the 4 grades of ISGPS ADDtoFRSDEMO$Fistula.Grade[ADDtoFRSDEMO$Fistula.Grade =="Grade A"] <- "Biochemical Leak" ADDtoFRSDEMO$Fistula.Grade[ADDtoFRSDEMO$Fistula.Grade =="Grade B"] <- "ISGPS Grade B" ADDtoFRSDEMO$Fistula.Grade[ADDtoFRSDEMO$Fistula.Grade =="Grade C"] <- "ISGPS Grade C" ### Removing Unknowns in fistual grade addtofrsdemo plan prior to adding in that column ADDtoFRSDEMO$Fistula.Grade[ADDtoFRSDEMO$Fistula.Grade =="Unknown"] <- NA ADDtoFRSDEMO <-na.omit(ADDtoFRSDEMO) ###move column over addtofrsdemo -> frsdemo FRSDemoNew <- cbind(FRSDemo, FistualGradeNew = ADDtoFRSDEMO$Fistula.Grade) ####recoding FRSDEMo Pan_fistula to include the labeled ISGPS criteria FRSDemo$PAN_FISTULA[FRSDemo$PAN_FISTULA =="Biochemical Leak only"] <- "Biochemical Leak" FRSDemo$PAN_FISTULA[FRSDemo$PAN_FISTULA =="Yes-persistent drainage, drain continued >7 days"] <- "ISGPS Grade B" FRSDemo$PAN_FISTULA[FRSDemo$PAN_FISTULA =="Yes-clinical diagnosis, percutaneous drainage performed"] <- "ISGPS Grade B" FRSDemo$PAN_FISTULA[FRSDemo$PAN_FISTULA =="Yes-persistent drainage, percutaneous drainage performed"] <- "ISGPS Grade B" FRSDemo$PAN_FISTULA[FRSDemo$PAN_FISTULA =="Yes-persistent drainage, NPO-TPN"] <- "ISGPS Grade B" FRSDemo$PAN_FISTULA[FRSDemo$PAN_FISTULA =="Yes-clinical diagnosis, drain continued >7 days"] <- "ISGPS Grade B" FRSDemo$PAN_FISTULA[FRSDemo$PAN_FISTULA =="Yes, Grade B POPF present"] <- "ISGPS Grade B" FRSDemo$PAN_FISTULA[FRSDemo$PAN_FISTULA =="Yes-clinical diagnosis, spontaneous wound drainage"] <- "ISGPS Grade B" FRSDemo$PAN_FISTULA[FRSDemo$PAN_FISTULA =="Yes-clinical diagnosis, NPO-TPN"] <- "ISGPS Grade B" FRSDemo$PAN_FISTULA[FRSDemo$PAN_FISTULA =="Yes-clinical diagnosis, reoperation performed"] <- "ISGPS Grade C" FRSDemo$PAN_FISTULA[FRSDemo$PAN_FISTULA =="Yes, Grade C POPF present"] <- "ISGPS Grade C" FRSDemo$PAN_FISTULA[FRSDemo$PAN_FISTULA =="Yes-persistent drainage, reoperation performed"] <- "ISGPS Grade C" FRSDemo$PAN_FISTULA[FRSDemo$PAN_FISTULA =="No evidence of Biochemical Leak or POPF"] <- "No Fistula" FRSDemo$PAN_FISTULA[FRSDemo$PAN_FISTULA =="No"] <- "No Fistula" #### Labeling columns var_label(FRSDemotable$PAN_FISTULA) <- "ISGPS Criteria" var_label(FRSDemotable$RACE_NEW) <- "Race" var_label(FRSDemotable$ASACLAS) <- "ASA Classification" var_label(FRSDemotable$SEX) <- "Sex" var_label(FRSDemotable$PAN_GLANDTEXT) <- "Gland Texture" var_label(FRSDemotable$PAN_DUCTSIZE) <- "Pancreatic Duct Diameter" var_label(FRSDemotable$DOpertoD) <- "Mortality" var_label(FRSDemotable$DIABETES) <- "Diabetes" var_label(FRSDemotable$SeriousComplication) <- "Serious Complication" var_label(FRSDemotable$AnyComplication) <- "Any Complication" ## Changing any Unknowns/none assigned to NA FRSDemotable[FRSDemotable =="None assigned"] <- NA FRSDemotable[FRSDemotable =="Unknown"] <- NA ###Try removing 5-moribound from the odds ratio FRSDemotable$ASACLAS[FRSDemotable$ASACLAS =="5-Moribund"] <- NA #Final Step to create demographic table FRSDemotable %>% tbl_summary( by = Fistula.Grade, digits = all_continuous() ~ 2,) %>% add_p(pvalue_fun = ~style_pvalue(.x, digits = 2))%>% bold_p() %>% add_overall() %>% modify_header(label ~ "**Variable**") %>% modify_spanning_header(c("stat_1", "stat_2") ~ "**Clinically Relevant Postoperative Pancreatic Fistula*") %>% bold_labels()
MIS vs MIS Converted to Open Demographic Table serious & Any complication
# Important packages to load in library(dplyr) library(gtsummary) library(survival) library(labelled) library(tidyverse) library(broom) library(ggplot2) library(survminer) ### Intention to Treat MIS vs Open ## Importing data in to Rstudio below Importin csv getwd() NSQIPShortTermOutcomes <- read.csv ("Panfinal.csv", header = TRUE, sep = "," ) Final Code: ##Creating BMI column from heigh, weight NSQIPShortTermOutcomes$BMI <- (NSQIPShortTermOutcomes$WEIGHT * 703) / (NSQIPShortTermOutcomes$HEIGHT * NSQIPShortTermOutcomes$HEIGHT) ### Recoding MIS vs MIS converted to open NSQIPShortTermOutcomes$PAN_APPROACH[NSQIPShortTermOutcomes$PAN_APPROACH =="Open (planned)"] <- "Open" NSQIPShortTermOutcomes$PAN_APPROACH[NSQIPShortTermOutcomes$PAN_APPROACH =="NOTES w/ unplanned conversion to open"] <- "MIS" NSQIPShortTermOutcomes$PAN_APPROACH[NSQIPShortTermOutcomes$PAN_APPROACH =="Laparoscopic"] <- "MIS" NSQIPShortTermOutcomes$PAN_APPROACH[NSQIPShortTermOutcomes$PAN_APPROACH =="Laparoscopic w/ open assist"] <- "MIS" NSQIPShortTermOutcomes$PAN_APPROACH[NSQIPShortTermOutcomes$PAN_APPROACH =="Laparoscopic w/ unplanned conversion to open"] <- "MIS Converted to Open" NSQIPShortTermOutcomes$PAN_APPROACH[NSQIPShortTermOutcomes$PAN_APPROACH =="Robotic"] <- "MIS" NSQIPShortTermOutcomes$PAN_APPROACH[NSQIPShortTermOutcomes$PAN_APPROACH =="Robotic w/ unplanned conversion to open"] <- "MIS Converted to Open" NSQIPShortTermOutcomes$PAN_APPROACH[NSQIPShortTermOutcomes$PAN_APPROACH =="Robotic w/ open assist"] <- "MIS" NSQIPShortTermOutcomes$PAN_APPROACH[NSQIPShortTermOutcomes$PAN_APPROACH =="Other"] <- NA NSQIPShortTermOutcomes$PAN_APPROACH[NSQIPShortTermOutcomes$PAN_APPROACH =="Other MIS approach"] <- "MIS" NSQIPShortTermOutcomes$PAN_APPROACH[NSQIPShortTermOutcomes$PAN_APPROACH =="Other MIS approach w/ open assist"] <- "MIS" NSQIPShortTermOutcomes$PAN_APPROACH[NSQIPShortTermOutcomes$PAN_APPROACH =="Other MIS approach w/ unplanned conversion to open"] <- "MIS Converted to Open" Other MIS approach w/ unplanned conversion to open NSQIPShortTermOutcomes$PAN_APPROACH[NSQIPShortTermOutcomes$PAN_APPROACH =="Hybrid"] <- NA NSQIPShortTermOutcomes$PAN_APPROACH[NSQIPShortTermOutcomes$PAN_APPROACH =="Hybrid w/ open assist"] <- NA NSQIPShortTermOutcomes$PAN_APPROACH[NSQIPShortTermOutcomes$PAN_APPROACH =="Hybrid w/ unplanned conversion to open"] <- NA NSQIPShortTermOutcomes$PAN_APPROACH[NSQIPShortTermOutcomes$PAN_APPROACH =="Unknown"] <- NA #### Labeling columns var_label(IntentiontotreatFinal$SEX) <- "Sex" var_label(IntentiontotreatFinal$RACE_NEW) <- "Race" var_label(IntentiontotreatFinal$ASACLAS) <- "ASA Classification" var_label(IntentiontotreatFinal$Fistula.Grade) <- "Fistula" var_label(IntentiontotreatFinal$OPTIME) <- "Total operation time" var_label(IntentiontotreatFinal$OUPNEUMO) <- "Number of Pneumonia Occurrences" var_label(IntentiontotreatFinal$DOpertoD) <- "Mortality" var_label(IntentiontotreatFinal$TOTHLOS) <- "Length of total hospital stay" var_label(IntentiontotreatFinal$OUPNEUMO) <- "Occurrences Pneumonia" var_label(IntentiontotreatFinal$PULEMBOL) <- "Occurrences Pulmonary Embolism" var_label(IntentiontotreatFinal$WNDINFD) <- " Occurrences Deep Incisional SSI" var_label(IntentiontotreatFinal$STILLINHOSP) <- "Still in Hospital > 30 Days" var_label(IntentiontotreatFinal$REOPERATION1) <- "Unplanned Reoperation 1" var_label(IntentiontotreatFinal$OTHSYSEP) <- "Occurrences Sepsis" var_label(IntentiontotreatFinal$SeriousComplication) <- "Serious Complication" var_label(IntentiontotreatFinal$AnyComplication) <- "Any Complication" ##Subsetting the datafram by literally anything MISVSCONVERSIONDemotable <- subset(NSQIPShortTermOutcomes, PAN_APPROACH == "MIS" | PAN_APPROACH == "MIS Converted to Open") NSQIPShortTermOutcomesBeforeSubset <- subset(NSQIPShortTermOutcomes, CPT == "48140" | CPT == "48145") MISITTDemoTable1$PAN_APPROACH[MISITTDemoTable1$PAN_APPROACH =="MIS Converted to Open"] <- "Intention to Treat MIS" MISITTDemoTable1$PAN_APPROACH[MISITTDemoTable1$PAN_APPROACH =="MIS"] <- "Intention to Treat MIS" NSQIPShortTermOutcomes$PRSEPIS[NSQIPShortTermOutcomes$PRSEPIS == "SIRS"] <- "Yes" NSQIPShortTermOutcomes$PRSEPIS[NSQIPShortTermOutcomes$PRSEPIS == "Septic Shock"] <- "Yes" NSQIPShortTermOutcomes$PRSEPIS[NSQIPShortTermOutcomes$PRSEPIS == "Sepsis"] <- "Yes" NSQIPShortTermOutcomes$ASACLAS[NSQIPShortTermOutcomes$ASACLAS =="None assigned"] <- "Unknown" NSQIPDemographicTable1 <- table(NSQIPDemographicTable$PAN_APPROACH, NSQIPDemographicTable$ASACLAS) ###Recoding Variables in DopertoD numbers > yes and any NA's to No NSQIPShortTermOutcomes[NSQIPShortTermOutcomes$DOpertoD =="NA",]$DOpertoD <- "No" NSQIPShortTermOutcomes$DOpertoD[NSQIPShortTermOutcomes$DOpertoD ==NA] <- "No" NSQIPShortTermOutcomes$DOpertoD <- as.character(NSQIPShortTermOutcomes$DOpertoD) NSQIPShortTermOutcomes$DOpertoD[is.na(NSQIPShortTermOutcomes$DOpertoD)] <- "No" #Ifelse function to create new column for serious complication and any complication MISVSConversion <- mutate(MISVSCONVERSIONDemotable, SeriousComplication = ifelse(CDARREST == "Cardiac Arrest Requiring CPR", "Yes", ifelse(CDMI == "Myocardial Infarction", "Yes", ifelse(OUPNEUMO == "Pneumonia", "Yes", ifelse(RENAINSF == "Progressive Renal Insufficiency", "Yes", ifelse(OPRENAFL == "Acute Renal Failure", "Yes", ifelse(PULEMBOL == "Pulmonary Embolism", "Yes", ifelse(OTHDVT == "DVT Requiring Therapy", "Yes", ifelse(RETURNOR == "Yes", "Yes", ifelse(ORGSPCSSI == "Organ/Space SSI", "Yes", ifelse(PRSEPIS == "Yes", "Yes", ifelse(REINTUB == "Unplanned Intubation", "Yes", ifelse(URNINFEC == "Urinary Tract Infection", "Yes", ifelse(DEHIS == "Wound Disruption", "Yes", "No")))))))))))))) ### Ifelse function to create new column for any complication MISVSConversion1 <- mutate(MISVSConversion, AnyComplication = ifelse(CDARREST == "Cardiac Arrest Requiring CPR", "Yes", ifelse(CDMI == "Myocardial Infarction", "Yes", ifelse(OUPNEUMO == "Pneumonia", "Yes", ifelse(RENAINSF == "Progressive Renal Insufficiency", "Yes", ifelse(OPRENAFL == "Acute Renal Failure", "Yes", ifelse(PULEMBOL == "Pulmonary Embolism", "Yes", ifelse(OTHDVT == "DVT Requiring Therapy", "Yes", ifelse(RETURNOR == "Yes", "Yes", ifelse(ORGSPCSSI == "Organ/Space SSI", "Yes", ifelse(PRSEPIS == "Yes", "Yes", ifelse(REINTUB == "Unplanned Intubation", "Yes", ifelse(URNINFEC == "Urinary Tract Infection", "Yes", ifelse(SUPINFEC == "Superficial Incisional SSI", "Yes", ifelse(FAILWEAN == "On Ventilator greater than 48 Hours", "Yes", ifelse(CNSCVA == "Stroke/CVA", "Yes", ifelse(DEHIS == "Wound Disruption", "Yes", "No"))))))))))))))))) print(NSQIPShortTermOutcomes$OUPNEUMO) #### Subsetting cleaned data from one dataframe to a new dataframe MISvsConversionDemotableFinal <- MISVSConversion1 %>% select(PAN_APPROACH, Age, SEX, BMI, RACE_NEW, ASACLAS, DOpertoD, Fistula.Grade, OPTIME, TOTHLOS, CDARREST, CDMI, NRENAINSF, OPRENAFL, OTHDVT, OUPNEUMO, PULEMBOL, WNDINFD, URNINFEC, DEHIS, STILLINHOSP, REOPERATION1, RETURNOR, REINTUB, ORGSPCSSI, OTHSYSEP, PRSEPIS, FAILWEAN, CNSCVA, SeriousComplication, AnyComplication) ## Changing any Unknowns/none assigned to NA IntentiontotreatFinal[IntentiontotreatFinal =="None assigned"] <- NA IntentiontotreatFinal[IntentiontotreatFinal =="Unknown"] <- NA ## Changing any Unknowns/none assigned to NA MISvsConversionDemotableFinal[MISvsConversionDemotableFinal =="None assigned"] <- NA MISvsConversionDemotableFinal[MISvsConversionDemotableFinal =="Unknown"] <- NA #Final Step to create demographic table MISvsConversionDemotableFinal %>% tbl_summary( by = PAN_APPROACH, digits = all_continuous() ~ 2,) %>% add_p(pvalue_fun = ~style_pvalue(.x, digits = 2))%>% bold_p() %>% add_overall() %>% modify_header(label ~ "**Variable**") %>% modify_spanning_header(c("stat_1", "stat_2") ~ "**NSQIP Short Term Outcomes**") %>% bold_labels() #Ifelse function to create new column for serious complication and any complication MISVSConversion <- mutate(MISVSCONVERSIONDemotable1, SeriousComplication = ifelse(CDARREST == "Cardiac Arrest Requiring CPR", "Yes", ifelse(CDMI == "Myocardial Infarction", "Yes", ifelse(OUPNEUMO == "Pneumonia", "Yes", ifelse(RENAINSF == "Progressive Renal Insufficiency", "Yes", ifelse(OPRENAFL == "Acute Renal Failure", "Yes", ifelse(PULEMBOL == "Pulmonary Embolism", "Yes", ifelse(OTHDVT == "DVT Requiring Therapy", "Yes", ifelse(RETURNOR == "Yes", "Yes", ifelse(ORGSPCSSI == "Organ/Space SSI", "Yes", ifelse(PRSEPIS == "Yes", "Yes", ifelse(REINTUB == "Unplanned Intubation", "Yes", ifelse(URNINFEC == "Urinary Tract Infection", "Yes", ifelse(DEHIS == "Wound Disruption", "Yes", "No")))))))))))))) ### Ifelse function to create new column for any complication MISVSConversion1 <- mutate(MISITTDemoTable, AnyComplication = ifelse(CDARREST == "Cardiac Arrest Requiring CPR", "Yes", ifelse(CDMI == "Myocardial Infarction", "Yes", ifelse(OUPNEUMO == "Pneumonia", "Yes", ifelse(RENAINSF == "Progressive Renal Insufficiency", "Yes", ifelse(OPRENAFL == "Acute Renal Failure", "Yes", ifelse(PULEMBOL == "Pulmonary Embolism", "Yes", ifelse(OTHDVT == "DVT Requiring Therapy", "Yes", ifelse(RETURNOR == "Yes", "Yes", ifelse(ORGSPCSSI == "Organ/Space SSI", "Yes", ifelse(PRSEPIS == "Yes", "Yes", ifelse(REINTUB == "Unplanned Intubation", "Yes", ifelse(URNINFEC == "Urinary Tract Infection", "Yes", ifelse(SUPINFEC == "Superficial Incisional SSI", "Yes", ifelse(FAILWEAN == "On Ventilator greater than 48 Hours", "Yes", ifelse(CNSCVA == "Stroke/CVA", "Yes", ifelse(DEHIS == "Wound Disruption", "Yes", "No")))))))))))))))))
Neomulti agent vs Preop Xrt Demographic Table
# Important packages to load in library(dplyr) library(gtsummary) library(survival) library(labelled) library(tidyverse) library(broom) library(ggplot2) library(survminer) ### Intention to Treat MIS vs Open ## Importing data in to Rstudio below Importin csv getwd() PreopNeoPaper <- read.csv ("PreoppaperFinal.csv", header = TRUE, sep = "," ) #### Subsetting cleaned data from one dataframe to a new dataframe PreopNeoPaperDemotable <- PreopNeoPaper %>% select(Single.vs.Multi.Agent, AGE, SEX, RACE.2, INSURANCE_STATUS.2, MED_INC_QUAR_12, NO_HSD_QUAR_12, Population.density, Charlson.Deyo.Score, TNM_CLIN_T, TNM_CLIN_N, TNM_PATH_T, TNM_PATH_N, ANALYTIC_STAGE_GROUP, GRADE.2, RX_SUMM_SURG_PRIM_SITE.2.2, Margins, Downstaging, DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS.2) PreopXRTOddsratio <- PreopNeoPaper %>% select(Single.vs.Multi.Agent, AGE, SEX, RACE.2, INSURANCE_STATUS.2, MED_INC_QUAR_12, NO_HSD_QUAR_12, Population.density, Charlson.Deyo.Score, TNM_CLIN_T, TNM_CLIN_N, TNM_PATH_T, TNM_PATH_N, ANALYTIC_STAGE_GROUP, GRADE.2, RX_SUMM_SURG_PRIM_SITE.2.2, Margins, Downstaging, DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS.2) ### Preopneopaperdemotable changing columns singlevsmultiagent from numbers back to characters PreopNeoPaperDemotable$Single.vs.Multi.Agent[PreopNeoPaperDemotable$Single.vs.Multi.Agent == 1 ] <- "Preop XRT" PreopNeoPaperDemotable$Single.vs.Multi.Agent[PreopNeoPaperDemotable$Single.vs.Multi.Agent ==0] <- "Neo Multiagent Chemo" PreopNeoPaperDemotable$Single.vs.Multi.Agent <- as.character(PreopNeoPaperDemotable$Single.vs.Multi.Agent) #Final Step to create demographic table PreopNeoPaperDemotable %>% tbl_summary( by = Single.vs.Multi.Agent, digits = all_continuous() ~ 2,) %>% add_p(pvalue_fun = ~style_pvalue(.x, digits = 2))%>% bold_p() %>% add_overall() %>% modify_header(label ~ "**Variables**") %>% modify_spanning_header(c("stat_0", "stat_1") ~ "**Neo Multiagent vs Preop XRT**") %>% bold_labels() ### Recoding No High School degree from blanks to unknown PreopNeoPaper$NO_HSD_QUAR_12[PreopNeoPaper$NO_HSD_QUAR_12 ==""] <- "Unknown" ##Recoding Data within TNM Clin T PreopNeoPaper$TNM_CLIN_T[PreopNeoPaper$TNM_CLIN_T ==""] <- "Unknown" PreopNeoPaper$TNM_CLIN_T[PreopNeoPaper$TNM_CLIN_T =="c0"] <- "Unknown" PreopNeoPaper$TNM_CLIN_T[PreopNeoPaper$TNM_CLIN_T == "cX"] <- "Unknown" ##Recoding Data within TNM Clin N PreopNeoPaper$TNM_CLIN_N[PreopNeoPaper$TNM_CLIN_N ==""] <- "Unknown" PreopNeoPaper$TNM_CLIN_N[PreopNeoPaper$TNM_CLIN_N == "cX"] <- "Unknown" ##Recoding Data within TNM Path T PreopNeoPaper$TNM_PATH_T[PreopNeoPaper$TNM_PATH_T ==""] <- "Unknown" PreopNeoPaper$TNM_PATH_T[PreopNeoPaper$TNM_PATH_T =="pIS"] <- "Unknown" PreopNeoPaper$TNM_PATH_T[PreopNeoPaper$TNM_PATH_T == "pX"] <- "Unknown" ##Recoding Data within TNM Path N PreopNeoPaper$TNM_PATH_N[PreopNeoPaper$TNM_PATH_N ==""] <- "Unknown" PreopNeoPaper$TNM_PATH_N[PreopNeoPaper$TNM_PATH_N =="pX"] <- "Unknown" ##Recoding Analytical Stages removing Stage IV patients PreopNeoPaper$ANALYTIC_STAGE_GROUP[PreopNeoPaper$ANALYTIC_STAGE_GROUP == "AJCC Stage Group unknown"] <- "Unknown" ##Recoding income PreopNeoPaper$MED_INC_QUAR_12[PreopNeoPaper$MED_INC_QUAR_12 == ""] <- "Unknown" ###Labeling Columns for MISvsMISConversionNCDBDemographicTable var_label(PreopNeoPaperDemotable$DX_LASTCONTACT_DEATH_MONTHS) <- "Median Survival" var_label(PreopNeoPaperDemotable$PUF_VITAL_STATUS.2) <- "Vital Status" ##View the data print(PreopNeoPaper$Single.vs.Multi.Agent) #Recode Preop XRT = 1 NeoAdjuvant multiagent= 0 PreopNeoPaper$Single.vs.Multi.Agent[PreopNeoPaper$Single.vs.Multi.Agent == "Pre Op XRT" ] <- 1 PreopNeoPaper$Single.vs.Multi.Agent[PreopNeoPaper$Single.vs.Multi.Agent =="PreOp Multiagent"] <- 0 ###Recode preop XRT and Neoadjuvant column back to original PreopXRTOddsratio$Single.vs.Multi.Agent[PreopXRTOddsratio$Single.vs.Multi.Agent == 1 ] <- "Pre Op XRT" PreopXRTOddsratio$Single.vs.Multi.Agent[PreopXRTOddsratio$Single.vs.Multi.Agent == 0 ] <- "PreOp Multiagent" ###Create New columns for preopxrtoddsratio and neoadjuvant multiagent Neoadjoddsratio <- PreopXRTOddsratio %>% mutate(PreopXRTOddsratio, NeoMultiAgent = ifelse(Single.vs.Multi.Agent == 1, 2, ifelse(Single.vs.Multi.Agent == 0 , 1, 100))) ## Neoadjoddsratio change 2 to become the nonevent Neoadjoddsratio$NeoMultiAgent[Neoadjoddsratio$NeoMultiAgent == 2] <- 0 ###Make Singlevsmultiagent column numeric PreopNeoPaper$Single.vs.Multi.Agent <- as.numeric(PreopNeoPaper$Single.vs.Multi.Agent) ### Preopxrtoddsratio recoding age to a <75 and >75, and 51-75 PreopXRTOddsratioB <- PreopXRTOddsratio %>% mutate(PreopXRTOddsratio, AgeB = ifelse(AGE > 75, ">75", ifelse(AGE < 51 , "<51", "51-75"))) #### recoding Unknowns to NA PreopxrtoddsratioB PreopXRTOddsratioB$INSURANCE_STATUS.2[PreopXRTOddsratioB$INSURANCE_STATUS.2 =="Unknown"] <- NA PreopXRTOddsratioB$MED_INC_QUAR_12[PreopXRTOddsratioB$MED_INC_QUAR_12 =="Unknown"] <- NA PreopXRTOddsratioB$NO_HSD_QUAR_12[PreopXRTOddsratioB$NO_HSD_QUAR_12 =="Unknown"] <- NA PreopXRTOddsratioB$Population.density[PreopXRTOddsratioB$Population.density =="Unknown"] <- NA PreopXRTOddsratioB$TNM_CLIN_T[PreopXRTOddsratioB$TNM_CLIN_T =="Unknown"] <- NA PreopXRTOddsratioB$TNM_CLIN_N[PreopXRTOddsratioB$TNM_CLIN_N =="Unknown"] <- NA PreopXRTOddsratioB$TNM_PATH_N[PreopXRTOddsratioB$TNM_PATH_N =="Unknown"] <- NA PreopXRTOddsratioB$ANALYTIC_STAGE_GROUP[PreopXRTOddsratioB$ANALYTIC_STAGE_GROUP =="Unknown"] <- NA PreopXRTOddsratioB$Margins[PreopXRTOddsratioB$Margins =="Unknown"] <- NA PreopXRTOddsratioB$GRADE.2[PreopXRTOddsratioB$GRADE.2 =="Unknown"] <- NA PreopXRTOddsratioB$Downstaging[PreopXRTOddsratioB$Downstaging =="Unknown"] <- NA #### recoding Unknowns to NA Neoadjoddsratio Neoadjoddsratio$INSURANCE_STATUS.2[Neoadjoddsratio$INSURANCE_STATUS.2 =="Unknown"] <- NA Neoadjoddsratio$MED_INC_QUAR_12[Neoadjoddsratio$MED_INC_QUAR_12 =="Unknown"] <- NA Neoadjoddsratio$NO_HSD_QUAR_12[Neoadjoddsratio$NO_HSD_QUAR_12 =="Unknown"] <- NA Neoadjoddsratio$Population.density[Neoadjoddsratio$Population.density =="Unknown"] <- NA Neoadjoddsratio$TNM_CLIN_T[Neoadjoddsratio$TNM_CLIN_T =="Unknown"] <- NA Neoadjoddsratio$TNM_CLIN_N[Neoadjoddsratio$TNM_CLIN_N =="Unknown"] <- NA Neoadjoddsratio$TNM_PATH_N[Neoadjoddsratio$TNM_PATH_N =="Unknown"] <- NA Neoadjoddsratio$ANALYTIC_STAGE_GROUP[Neoadjoddsratio$ANALYTIC_STAGE_GROUP =="Unknown"] <- NA Neoadjoddsratio$Margins[Neoadjoddsratio$Margins =="Unknown"] <- NA Neoadjoddsratio$GRADE.2[Neoadjoddsratio$GRADE.2 =="Unknown"] <- NA Neoadjoddsratio$Downstaging[Neoadjoddsratio$Downstaging =="Unknown"] <- NA ##Univariant Model PreopxrtdOddsratio UnivariantModel <- PreopXRTOddsratioB %>% select(Single.vs.Multi.Agent, AgeB, RACE.2, INSURANCE_STATUS.2, MED_INC_QUAR_12, NO_HSD_QUAR_12, Population.density, Charlson.Deyo.Score, TNM_CLIN_T, TNM_CLIN_N, TNM_PATH_T, TNM_PATH_N, ANALYTIC_STAGE_GROUP, Margins, GRADE.2, RX_SUMM_SURG_PRIM_SITE.2.2, Downstaging) %>% tbl_uvregression( method = glm, y = Single.vs.Multi.Agent, method.args = list(family = binomial), exponentiate = TRUE, pvalue_fun = ~style_pvalue(.x, digits = 2) ) %>% bold_p(t = 0.10) %>% bold_labels() %>% italicize_levels() ####Univariant Model Neomultiagent UnivariantModel <- Neoadjoddsratio %>% select(NeoMultiAgent, AgeB, RACE.2, INSURANCE_STATUS.2, MED_INC_QUAR_12, NO_HSD_QUAR_12, Population.density, Charlson.Deyo.Score, TNM_CLIN_T, TNM_CLIN_N, TNM_PATH_T, TNM_PATH_N, ANALYTIC_STAGE_GROUP, Margins, GRADE.2, RX_SUMM_SURG_PRIM_SITE.2.2, Downstaging) %>% tbl_uvregression( method = glm, y = NeoMultiAgent, method.args = list(family = binomial), exponentiate = TRUE, pvalue_fun = ~style_pvalue(.x, digits = 2) ) %>% bold_p(t = 0.10) %>% bold_labels() %>% italicize_levels() ####Multivariant analysis preopxrt MVOR <- glm(Single.vs.Multi.Agent ~ AgeB + RACE.2 + INSURANCE_STATUS.2 + MED_INC_QUAR_12 + NO_HSD_QUAR_12 + Population.density + Charlson.Deyo.Score + TNM_CLIN_T + TNM_PATH_T + TNM_PATH_N + ANALYTIC_STAGE_GROUP + Margins + Downstaging, data = PreopXRTOddsratioB, family = binomial("logit"), na.action =na.omit ) ###mutlivariant neomultiageent MVOR <- glm(NeoMultiAgent ~ AgeB + RACE.2 + INSURANCE_STATUS.2 + MED_INC_QUAR_12 + NO_HSD_QUAR_12 + Population.density + Charlson.Deyo.Score + TNM_CLIN_T + TNM_PATH_T + TNM_PATH_N + ANALYTIC_STAGE_GROUP + Margins + Downstaging, data = Neoadjoddsratio, family = binomial("logit"), na.action =na.omit ) MVOR <- tbl_regression(MVOR, exponentiate = T, pvalue_fun = ~style_pvalue(.x, digits = 2), ) %>% bold_p(t = 0.10) %>% bold_labels() %>% italicize_levels() tbl_merge( list(UnivariantModel, MVOR), tab_spanner = c("**Univariable**", "**Multivariable**") ) %>% bold_labels() %>% italicize_levels()
MIS vs Open Survival Analysis NCDB Data
# Important packages to load in library(dplyr) library(gtsummary) library(survival) library(labelled) library(tidyverse) library(broom) library(ggplot2) library(survminer) ### Intention to Treat MIS vs Open ## Importing data in to Rstudio below Importin csv getwd() NCDBOriginalData <- read.csv ("mohamed_ncdb.csv", header = TRUE, sep = "," ) ### Viewing the variables in each column print(NCDBOriginalData$RX_SUMM_SURG_PRIM_SITE.2.2) print(NCDBDistalPancreatectomy$RX_HOSP_SURG_APPR_2010) print(NCDBDistalPancreatectomy$ANALYTIC_STAGE_GROUP) print(NCDBDistalPancreatectomy$GRADE) ## Subsetting distal pancreatectomies NCDBDistalPancreatectomy <- subset(NCDBOriginalData, RX_SUMM_SURG_PRIM_SITE.2.2 == "Partial pancreatectomy, distal") ### Recoding MIS vs MIS converted to open NCDBDistalPancreatectomy$RX_HOSP_SURG_APPR_2010[NCDBDistalPancreatectomy$RX_HOSP_SURG_APPR_2010 =="Open or approach unspecified"] <- "Open" NCDBDistalPancreatectomy$RX_HOSP_SURG_APPR_2010[NCDBDistalPancreatectomy$RX_HOSP_SURG_APPR_2010 =="Laparoscopic"] <- "MIS" NCDBDistalPancreatectomy$RX_HOSP_SURG_APPR_2010[NCDBDistalPancreatectomy$RX_HOSP_SURG_APPR_2010 =="Laparoscopic converted to open"] <- "MIS Converted to open" NCDBDistalPancreatectomy$RX_HOSP_SURG_APPR_2010[NCDBDistalPancreatectomy$RX_HOSP_SURG_APPR_2010 =="Robotic assisted"] <- "MIS" ##Recoding Data within Columns Facility Location NCDBDistalPancreatectomy$FACILITY_LOCATION_CD[NCDBDistalPancreatectomy$FACILITY_LOCATION_CD =="New England"] <- "NorthEast" NCDBDistalPancreatectomy$FACILITY_LOCATION_CD[NCDBDistalPancreatectomy$FACILITY_LOCATION_CD =="New England"] <- "NorthEast" NCDBDistalPancreatectomy$FACILITY_LOCATION_CD[NCDBDistalPancreatectomy$FACILITY_LOCATION_CD =="Middle Atlantic"] <- "NorthEast" NCDBDistalPancreatectomy$FACILITY_LOCATION_CD[NCDBDistalPancreatectomy$FACILITY_LOCATION_CD =="New England"] <- "NorthEast" NCDBDistalPancreatectomy$FACILITY_LOCATION_CD[NCDBDistalPancreatectomy$FACILITY_LOCATION_CD =="New England"] <- "NorthEast" NCDBDistalPancreatectomy$FACILITY_LOCATION_CD[NCDBDistalPancreatectomy$FACILITY_LOCATION_CD =="East North Central"] <- "Midwest" NCDBDistalPancreatectomy$FACILITY_LOCATION_CD[NCDBDistalPancreatectomy$FACILITY_LOCATION_CD =="East South Central"] <- "South" NCDBDistalPancreatectomy$FACILITY_LOCATION_CD[NCDBDistalPancreatectomy$FACILITY_LOCATION_CD =="Mountain"] <- "West" NCDBDistalPancreatectomy$FACILITY_LOCATION_CD[NCDBDistalPancreatectomy$FACILITY_LOCATION_CD =="South Atlantic"] <- "South" NCDBDistalPancreatectomy$FACILITY_LOCATION_CD[NCDBDistalPancreatectomy$FACILITY_LOCATION_CD =="West South Central"] <- "South" NCDBDistalPancreatectomy$FACILITY_LOCATION_CD[NCDBDistalPancreatectomy$FACILITY_LOCATION_CD =="West North Central"] <- "Midwest" NCDBDistalPancreatectomy$FACILITY_LOCATION_CD[NCDBDistalPancreatectomy$FACILITY_LOCATION_CD =="Pacific"] <- "West" NCDBDistalPancreatectomy$FACILITY_LOCATION_CD[NCDBDistalPancreatectomy$FACILITY_LOCATION_CD ==""] <- NA print(NCDBDistalPancreatectomy$FACILITY_LOCATION_CD) ###Recoding Data within income NCDBDistalPancreatectomy$MED_INC_QUAR_12[NCDBDistalPancreatectomy$MED_INC_QUAR_12 ==""] <- NA ###recoding data within no_hsd_quar_12 NCDBDistalPancreatectomy$NO_HSD_QUAR_12[NCDBDistalPancreatectomy$NO_HSD_QUAR_12 ==""] <- NA ##Recoding Data within Columns Population Density NCDBDistalPancreatectomy$UR_CD_13[NCDBDistalPancreatectomy$UR_CD_13 =="Urban population of 2,500 to 19,999, adjacent to a metro area"] <- "Urban" NCDBDistalPancreatectomy$UR_CD_13[NCDBDistalPancreatectomy$UR_CD_13 =="Counties in metro areas of 250,000 to 1 million population"] <- "Metro" NCDBDistalPancreatectomy$UR_CD_13[NCDBDistalPancreatectomy$UR_CD_13 =="Counties in metro areas of 1 million population or more"] <- "Metro" NCDBDemographicTable$UR_CD_13[NCDBDemographicTable$UR_CD_13 =="Completely rural or less than 2,500 urban population, not adjacent to a metro area"] <- "Rural" NCDBDistalPancreatectomy$UR_CD_13[NCDBDistalPancreatectomy$UR_CD_13 =="Counties in metro areas of fewer than 250,000 population"] <- "Metro" NCDBDistalPancreatectomy$UR_CD_13[NCDBDistalPancreatectomy$UR_CD_13 =="Urban population of 2,500 to 19,999, not adjacent to a metro area"] <- "Urban" NCDBDistalPancreatectomy$UR_CD_13[NCDBDistalPancreatectomy$UR_CD_13 =="Completely rural or less than 2,500 urban population, adjacent to a metro area"] <- "Rural" NCDBDistalPancreatectomy$UR_CD_13[NCDBDistalPancreatectomy$UR_CD_13 =="Urban population of 20,000 or more not adjacent to a metro area"] <- "Urban" NCDBDistalPancreatectomy$UR_CD_13[NCDBDistalPancreatectomy$UR_CD_13 =="Completely rural or less than 2,500 urban population, not adjacent to a metro area"] <- "Urban" NCDBDistalPancreatectomy$UR_CD_13[NCDBDistalPancreatectomy$UR_CD_13 ==""] <- NA ## recoding data within columns vital status NCDBDistalPancreatectomy$PUF_VITAL_STATUS[NCDBDistalPancreatectomy$PUF_VITAL_STATUS ==""] <- NA ##Recoding Analytical Stages removing Stage IV patients NCDBDistalPancreatectomy$ANALYTIC_STAGE_GROUP[NCDBDistalPancreatectomy$ANALYTIC_STAGE_GROUP == "Stage IV"] <- NA NCDBDistalPancreatectomy$ANALYTIC_STAGE_GROUP[NCDBDistalPancreatectomy$ANALYTIC_STAGE_GROUP == "AJCC Stage Group unknown"] <- "Unknown" NCDBDistalPancreatectomy$ANALYTIC_STAGE_GROUP[NCDBDistalPancreatectomy$ANALYTIC_STAGE_GROUP == "AJCC Staging not applicable"] <- "Unknown" NCDBDistalPancreatectomy$ANALYTIC_STAGE_GROUP[NCDBDistalPancreatectomy$ANALYTIC_STAGE_GROUP == "Unknown"] <- NA ### Recoding data in Tumor Grade Column NCDBDistalPancreatectomy$GRADE[NCDBDistalPancreatectomy$GRADE =="Cell type not determined, not stated or not applicable, unknown primaries, high grade dysplasia"] <- "Unknown" NCDBDistalPancreatectomy$GRADE[NCDBDistalPancreatectomy$GRADE =="Undifferentiated, anaplastic"] <- "Undifferentiated" NCDBDistalPancreatectomy$GRADE[NCDBDistalPancreatectomy$GRADE =="Moderately differentiated, moderately well differentiated, intermediate differentiation"] <- "Moderately differentiated" NCDBDistalPancreatectomy$GRADE[NCDBDistalPancreatectomy$GRADE =="Well differentiated, differentiated, NOS"] <- "Well differentiated" ###recode the surgical approach and make MIS converted to Open the same as MIS just before subsetting MIS and Open into new dataframe NCDBDistalPancreatectomy$RX_HOSP_SURG_APPR_2010[NCDBDistalPancreatectomy$RX_HOSP_SURG_APPR_2010 =="MIS Converted to open"] <- "MIS" ###Subsetting MIS vs Conversion to MIS vs Open into one Dataframe ITTMISvsOpenNCDB <- subset(NCDBDistalPancreatectomy, RX_HOSP_SURG_APPR_2010 == "MIS" | RX_HOSP_SURG_APPR_2010 == "Mis Converted to open" | RX_HOSP_SURG_APPR_2010 == "Open") ##Subsetting MIS vs Conversion to MIS MISvsConversionNCDB <- subset(NCDBDistalPancreatectomy, RX_HOSP_SURG_APPR_2010 == "MIS" | RX_HOSP_SURG_APPR_2010 == "MIS Converted to open") #### Subsetting cleaned data from one dataframe to a new dataframe MISvsMISConversionNCDBDemographicTable <- MISvsConversionNCDB %>% select(RX_HOSP_SURG_APPR_2010, AGE, SEX, RACE.2, INSURANCE_STATUS.2, FACILITY_LOCATION_CD, MED_INC_QUAR_12, NO_HSD_QUAR_12, UR_CD_13, CDCC_TOTAL_BEST, ANALYTIC_STAGE_GROUP, GRADE, DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS) MISvsConversionvsOpenNCDBDemoTable <- ITTMISvsOpenNCDB %>% select(RX_HOSP_SURG_APPR_2010, AGE, SEX, RACE.2, INSURANCE_STATUS.2, FACILITY_LOCATION_CD, MED_INC_QUAR_12, NO_HSD_QUAR_12, UR_CD_13, CDCC_TOTAL_BEST, ANALYTIC_STAGE_GROUP, GRADE, DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS) ###Labeling Columns for MISvsCOnversionVsopenNCDBDemotable var_label(MISvsConversionvsOpenNCDBDemoTable$AGE) <- "Age" var_label(MISvsConversionvsOpenNCDBDemoTable$SEX) <- "Sex" var_label(MISvsConversionvsOpenNCDBDemoTable$RACE.2) <- "Race" var_label(MISvsConversionvsOpenNCDBDemoTable$SMOKE) <- "Smoker" var_label(MISvsConversionvsOpenNCDBDemoTable$INSURANCE_STATUS.2) <- "Insurance Status" var_label(MISvsConversionvsOpenNCDBDemoTable$FACILITY_LOCATION_CD) <- "Region" var_label(MISvsConversionvsOpenNCDBDemoTable$MED_INC_QUAR_12) <- "Income" var_label(MISvsConversionvsOpenNCDBDemoTable$NO_HSD_QUAR_12) <- "No High School Degree" var_label(MISvsConversionvsOpenNCDBDemoTable$CDCC_TOTAL_BEST) <- "Charlson-Deyo Disability Score" var_label(MISvsConversionvsOpenNCDBDemoTable$UR_CD_13) <- "Population" var_label(MISvsConversionvsOpenNCDBDemoTable$RX_HOSP_SURG_APPR_2010) <- "Surgery" var_label(MISvsConversionvsOpenNCDBDemoTable$ANALYTIC_STAGE_GROUP) <- "Staging" var_label(MISvsConversionvsOpenNCDBDemoTable$GRADE) <- "Tumor Grade" var_label(MISvsConversionvsOpenNCDBDemoTable$DX_LASTCONTACT_DEATH_MONTHS) <- "Median Survival" var_label(MISvsConversionvsOpenNCDBDemoTable$PUF_VITAL_STATUS) <- "Vital Status" ###Labeling Columns for MISvsMISConversionNCDBDemographicTable var_label(MISvsMISConversionNCDBDemographicTable$AGE) <- "Age" var_label(MISvsMISConversionNCDBDemographicTable$SEX) <- "Sex" var_label(MISvsMISConversionNCDBDemographicTable$RACE.2) <- "Race" var_label(MISvsMISConversionNCDBDemographicTable$SMOKE) <- "Smoker" var_label(MISvsMISConversionNCDBDemographicTable$INSURANCE_STATUS.2) <- "Insurance Status" var_label(MISvsMISConversionNCDBDemographicTable$FACILITY_LOCATION_CD) <- "Region" var_label(MISvsMISConversionNCDBDemographicTable$MED_INC_QUAR_12) <- "Income" var_label(MISvsMISConversionNCDBDemographicTable$NO_HSD_QUAR_12) <- "No High School Degree" var_label(MISvsMISConversionNCDBDemographicTable$CDCC_TOTAL_BEST) <- "Charlson-Deyo Disability Score" var_label(MISvsMISConversionNCDBDemographicTable$UR_CD_13) <- "Population" var_label(MISvsMISConversionNCDBDemographicTable$RX_HOSP_SURG_APPR_2010) <- "Surgery" var_label(MISvsMISConversionNCDBDemographicTable$ANALYTIC_STAGE_GROUP) <- "Staging" var_label(MISvsMISConversionNCDBDemographicTable$GRADE) <- "Tumor Grade" var_label(MISvsMISConversionNCDBDemographicTable$DX_LASTCONTACT_DEATH_MONTHS) <- "Median Survival" var_label(MISvsMISConversionNCDBDemographicTable$PUF_VITAL_STATUS) <- "Vital Status" ##As.factor misvsmisconversionncdbdemographictable MISvsMISConversionNCDBDemographicTable <- as.factor(MISvsMISConversionNCDBDemographicTable) #Final Step to create demographic table MISvsConversionvsOpenNCDBDemoTable %>% tbl_summary( by = RX_HOSP_SURG_APPR_2010, digits = all_continuous() ~ 2,) %>% add_p(pvalue_fun = ~style_pvalue(.x, digits = 2))%>% bold_p() %>% add_overall() %>% modify_header(label ~ "**Variables**") %>% modify_spanning_header(c("stat_0", "stat_1") ~ "**NCDB Long Term Outcomes**") %>% bold_labels() ###No high school degree blanks to NA's MISvsConversionvsOpenNCDBDemoTable$NO_HSD_QUAR_12[MISvsConversionvsOpenNCDBDemoTable$NO_HSD_QUAR_12 ==""] <- NA #####Survival Analysis Ensure that vital status is labeled as 1= Alive and 2=Death MISvsConversionvsOpenNCDBDemoTable$PUF_VITAL_STATUS[MISvsConversionvsOpenNCDBDemoTable$PUF_VITAL_STATUS == "Dead"] <- 2 MISvsConversionvsOpenNCDBDemoTable$PUF_VITAL_STATUS[MISvsConversionvsOpenNCDBDemoTable$PUF_VITAL_STATUS == "Alive"] <- 1 ###Subset the data so it's Only "Open" patients & only prior to survival analysis OpenSurvivalAnalysis <- subset(MISvsConversionvsOpenNCDBDemoTable, RX_HOSP_SURG_APPR_2010 == "Open") ###pufvitalstatus should be numeric MISvsConversionvsOpenNCDBDemoTable$PUF_VITAL_STATUS <- as.numeric(MISvsConversionvsOpenNCDBDemoTable$PUF_VITAL_STATUS) ### Univariant Survival Neoadj UVSurv <- MISvsConversionvsOpenNCDBDemoTable %>% select(RX_HOSP_SURG_APPR_2010, RACE.2, INSURANCE_STATUS.2, FACILITY_LOCATION_CD, MED_INC_QUAR_12, NO_HSD_QUAR_12, ANALYTIC_STAGE_GROUP, GRADE, DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS) %>% tbl_uvregression( method = coxph, y = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS), exponentiate = TRUE) %>% bold_p(t = 0.10) %>% bold_labels() %>% italicize_levels() ###Multivariant survival Neoadj MVSurv <- coxph(Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS) ~ RX_HOSP_SURG_APPR_2010 + RACE.2 + INSURANCE_STATUS.2 + FACILITY_LOCATION_CD + MED_INC_QUAR_12 + NO_HSD_QUAR_12 + ANALYTIC_STAGE_GROUP + GRADE, data = MISvsConversionvsOpenNCDBDemoTable ) %>% tbl_regression(exponentiate = T ) %>% bold_p(t = 0.10) %>% bold_labels() %>% italicize_levels() ###Merged Neo Univariant and Multivariant tbl_merge( list(UVSurv, MVSurv), tab_spanner = c("**Univariable**", "**Multivariable**") ) %>% bold_labels() %>% italicize_levels()
Return to the OR Odds Ratio MIS vs Open
# Important packages to load in library(dplyr) library(gtsummary) library(survival) library(labelled) library(tidyverse) library(broom) library(ggplot2) library(survminer) ### Intention to Treat MIS vs Open ## Importing data in to Rstudio below Importin csv getwd() NSQIPShortTermOutcomes <- read.csv ("Panfinal.csv", header = TRUE, sep = "," ) Final Code: ##Creating BMI column from heigh, weight NSQIPShortTermOutcomes$BMI <- (NSQIPShortTermOutcomes$WEIGHT * 703) / (NSQIPShortTermOutcomes$HEIGHT * NSQIPShortTermOutcomes$HEIGHT) #### Labeling columns var_label(IntentiontotreatFinal$SEX) <- "Sex" var_label(IntentiontotreatFinal$RACE_NEW) <- "Race" var_label(IntentiontotreatFinal$ASACLAS) <- "ASA Classification" var_label(IntentiontotreatFinal$Fistula.Grade) <- "Fistula" var_label(IntentiontotreatFinal$OPTIME) <- "Total operation time" var_label(IntentiontotreatFinal$OUPNEUMO) <- "Number of Pneumonia Occurrences" var_label(IntentiontotreatFinal$DOpertoD) <- "Mortality" var_label(IntentiontotreatFinal$TOTHLOS) <- "Length of total hospital stay" var_label(IntentiontotreatFinal$OUPNEUMO) <- "Occurrences Pneumonia" var_label(IntentiontotreatFinal$PULEMBOL) <- "Occurrences Pulmonary Embolism" var_label(IntentiontotreatFinal$WNDINFD) <- " Occurrences Deep Incisional SSI" var_label(IntentiontotreatFinal$STILLINHOSP) <- "Still in Hospital > 30 Days" var_label(IntentiontotreatFinal$REOPERATION1) <- "Unplanned Reoperation 1" var_label(IntentiontotreatFinal$OTHSYSEP) <- "Occurrences Sepsis" var_label(IntentiontotreatFinal$SeriousComplication) <- "Serious Complication" var_label(IntentiontotreatFinal$AnyComplication) <- "Any Complication" ##Subsetting the datafram by literally anything MISVSCONVERSIONDemotable <- subset(NSQIPDemographicTable, PAN_APPROACH == "MIS" | PAN_APPROACH == "MIS Converted to Open") FRSFUll <- subset(FRSFUll, CPT == "48140" | CPT == "48145") MISITTDemoTable1$PAN_APPROACH[MISITTDemoTable1$PAN_APPROACH =="MIS Converted to Open"] <- "Intention to Treat MIS" MISITTDemoTable1$PAN_APPROACH[MISITTDemoTable1$PAN_APPROACH =="MIS"] <- "Intention to Treat MIS" NSQIPShortTermOutcomes$PRSEPIS[NSQIPShortTermOutcomes$PRSEPIS == "SIRS"] <- "Yes" NSQIPShortTermOutcomes$PRSEPIS[NSQIPShortTermOutcomes$PRSEPIS == "Septic Shock"] <- "Yes" NSQIPShortTermOutcomes$PRSEPIS[NSQIPShortTermOutcomes$PRSEPIS == "Sepsis"] <- "Yes" NSQIPShortTermOutcomes$ASACLAS[NSQIPShortTermOutcomes$ASACLAS =="None assigned"] <- "Unknown" NSQIPDemographicTable1 <- table(NSQIPDemographicTable$PAN_APPROACH, NSQIPDemographicTable$ASACLAS) ###Recoding Variables in DopertoD numbers > yes and any NA's to No NSQIPShortTermOutcomes[NSQIPShortTermOutcomes$DOpertoD =="NA",]$DOpertoD <- "No" NSQIPShortTermOutcomes$DOpertoD[NSQIPShortTermOutcomes$DOpertoD ==NA] <- "No" NSQIPShortTermOutcomes$DOpertoD <- as.character(NSQIPShortTermOutcomes$DOpertoD) NSQIPShortTermOutcomes$DOpertoD[is.na(NSQIPShortTermOutcomes$DOpertoD)] <- "No" #Ifelse function to create new column for serious complication and any complication MISITTDemoTable <- mutate(NSQIPShortTermOutcomes, SeriousComplication = ifelse(CDARREST == "Cardiac Arrest Requiring CPR", "Yes", ifelse(CDMI == "Myocardial Infarction", "Yes", ifelse(OUPNEUMO == "Pneumonia", "Yes", ifelse(RENAINSF == "Progressive Renal Insufficiency", "Yes", ifelse(OPRENAFL == "Acute Renal Failure", "Yes", ifelse(PULEMBOL == "Pulmonary Embolism", "Yes", ifelse(OTHDVT == "DVT Requiring Therapy", "Yes", ifelse(RETURNOR == "Yes", "Yes", ifelse(ORGSPCSSI == "Organ/Space SSI", "Yes", ifelse(PRSEPIS == "Yes", "Yes", ifelse(REINTUB == "Unplanned Intubation", "Yes", ifelse(URNINFEC == "Urinary Tract Infection", "Yes", ifelse(DEHIS == "Wound Disruption", "Yes", "No")))))))))))))) ### Ifelse function to create new column for any complication MISITTDemoTable1 <- MISITTDemoTable %>% mutate(MISITTDemoTable, AnyComplication = ifelse(CDARREST == "Cardiac Arrest Requiring CPR", "Yes", ifelse(CDMI == "Myocardial Infarction", "Yes", ifelse(OUPNEUMO == "Pneumonia", "Yes", ifelse(RENAINSF == "Progressive Renal Insufficiency", "Yes", ifelse(OPRENAFL == "Acute Renal Failure", "Yes", ifelse(PULEMBOL == "Pulmonary Embolism", "Yes", ifelse(OTHDVT == "DVT Requiring Therapy", "Yes", ifelse(RETURNOR == "Yes", "Yes", ifelse(ORGSPCSSI == "Organ/Space SSI", "Yes", ifelse(PRSEPIS == "Yes", "Yes", ifelse(REINTUB == "Unplanned Intubation", "Yes", ifelse(URNINFEC == "Urinary Tract Infection", "Yes", ifelse(SUPINFEC == "Superficial Incisional SSI", "Yes", ifelse(FAILWEAN == "On Ventilator greater than 48 Hours", "Yes", ifelse(CNSCVA == "Stroke/CVA", "Yes", ifelse(DEHIS == "Wound Disruption", "Yes", "No"))))))))))))))))) print(NSQIPShortTermOutcomes$OUPNEUMO) #### Subsetting cleaned data from one dataframe to a new dataframe IntentiontotreatFinal <- MISITTDemoTable1 %>% select(PAN_APPROACH, Age, SEX, BMI, RACE_NEW, ASACLAS, DOpertoD, Fistula.Grade, OPTIME, TOTHLOS, CDARREST, CDMI, NRENAINSF, OPRENAFL, OTHDVT, OUPNEUMO, PULEMBOL, WNDINFD, URNINFEC, DEHIS, STILLINHOSP, REOPERATION1, RETURNOR, REINTUB, ORGSPCSSI, OTHSYSEP, PRSEPIS, FAILWEAN, CNSCVA, SeriousComplication, AnyComplication) ## Changing any Unknowns/none assigned to NA IntentiontotreatFinal[IntentiontotreatFinal =="None assigned"] <- NA IntentiontotreatFinal[IntentiontotreatFinal =="Unknown"] <- NA #Final Step to create demographic table IntentiontotreatFinal %>% tbl_summary( by = PAN_APPROACH, digits = all_continuous() ~ 2,) %>% add_p(pvalue_fun = ~style_pvalue(.x, digits = 2))%>% bold_p() %>% add_overall() %>% modify_header(label ~ "**Variable**") %>% modify_spanning_header(c("stat_1", "stat_2") ~ "**NSQIP Short Term Outcomes**") %>% bold_labels() ##Creating New Column for Age breakdown IntentiontotreatFinal <- IntentiontotreatFinal %>% mutate(IntentiontotreatFinal, BMIB = ifelse(BMI >= 30, "Obese", ifelse(BMI <= 30, "Non-Obese", "NA"))) ###Create New columns for preopxrtoddsratio and neoadjuvant multiagent ITTMortOR <- IntentiontotreatFinal %>% mutate(IntentiontotreatFinal, Mortality = ifelse(DOpertoD =="Yes", "1", ifelse(DOpertoD =="No", "0", "NA"))) ### Mortality --> numeric in the ITTMORTOR column before running logistic regression ITTMortOR$Mortality <- as.numeric(ITTMortOR$Mortality) ###Try removing 5-moribound from the odds ratio ITTMortOR$ASACLAS[ITTMortOR$ASACLAS =="5-Moribund"] <- NA ##Univariant Model MISvsITT mortality UVMortalityOR <- ITTMortOR %>% select(PAN_APPROACH, Mortality, SEX, BMIB, RACE_NEW, ASACLAS) %>% tbl_uvregression( method = glm, y = Mortality, method.args = list(family = binomial), exponentiate = TRUE, pvalue_fun = ~style_pvalue(.x, digits = 2) ) %>% bold_p(t = 0.10) %>% bold_labels() %>% italicize_levels() ####Multivariant analysis MISvsITTmortality MVOR <- glm(Mortality ~ PAN_APPROACH + SEX + ASACLAS, data = ITTMortOR, family = binomial("logit"), na.action =na.omit ) MVOR <- tbl_regression(MVOR, exponentiate = T, pvalue_fun = ~style_pvalue(.x, digits = 2), ) %>% bold_p(t = 0.10) %>% bold_labels() %>% italicize_levels() tbl_merge( list(UVMortalityOR, MVOR), tab_spanner = c("**Univariable**", "**Multivariable**") ) %>% bold_labels() %>% italicize_levels() ####Intention to Treat changing BMI to actually have a column with that creates a obese cutoff ###Creating dataframe where event is serious complication for open patients SeriousComplicationOR <- IntentiontotreatFinal %>% mutate(IntentiontotreatFinal, SeriousComplication1 = ifelse(SeriousComplication =="Yes", "1", ifelse(SeriousComplication =="No", "0", "NA"))) ### Mortality --> numeric in the ITTMORTOR column before running logistic regression SeriousComplicationOR$SeriousComplication1 <- as.numeric(SeriousComplicationOR$SeriousComplication1) ###Creating dataframe where event is any complication for open patients AnyComplicationOR <- IntentiontotreatFinal %>% mutate(IntentiontotreatFinal, Anycomplication1 = ifelse(AnyComplication =="Yes", "1", ifelse(AnyComplication =="No", "0", "NA"))) ### Mortality --> numeric in the ITTMORTOR column before running logistic regression AnyComplicationOR$Anycomplication1 <- as.numeric(AnyComplicationOR$Anycomplication1) ###Creating dataframe where event is Return to OR for open patients ReturntoOROddsRatio <- IntentiontotreatFinal %>% mutate(IntentiontotreatFinal, ReturntoOR1 = ifelse(RETURNOR =="Yes", "1", ifelse(RETURNOR =="No", "0", "NA"))) ### Mortality --> numeric in the ITTMORTOR column before running logistic regression ReturntoOROddsRatio$ReturntoOR1 <- as.numeric(ReturntoOROddsRatio$ReturntoOR1) ###Try removing 5-moribound from the odds ratio IntentiontotreatFinal$ASACLAS[IntentiontotreatFinal$ASACLAS =="5-Moribund"] <- NA ##Univariant Model Seriouscomplication UV <- SeriousComplicationOR %>% select(PAN_APPROACH, SeriousComplication1, SEX, BMIB, RACE_NEW, ASACLAS) %>% tbl_uvregression( method = glm, y = SeriousComplication1, method.args = list(family = binomial), exponentiate = TRUE, pvalue_fun = ~style_pvalue(.x, digits = 2) ) %>% bold_p(t = 0.10) %>% bold_labels() %>% italicize_levels() ####Multivariant analysis serious complications MVOR <- glm(SeriousComplication1 ~ PAN_APPROACH + SEX + BMIB + ASACLAS + BMI, data = SeriousComplicationOR, family = binomial("logit"), na.action =na.omit ) MVOR <- tbl_regression(MVOR, exponentiate = T, pvalue_fun = ~style_pvalue(.x, digits = 2), ) %>% bold_p(t = 0.10) %>% bold_labels() %>% italicize_levels() tbl_merge( list(UV, MVOR), tab_spanner = c("**Univariable**", "**Multivariable**") ) %>% bold_labels() %>% italicize_levels() ##Univariant Model Seriouscomplication UV <- AnyComplicationOR %>% select(PAN_APPROACH, Anycomplication1, SEX, BMIB, RACE_NEW, ASACLAS) %>% tbl_uvregression( method = glm, y = Anycomplication1, method.args = list(family = binomial), exponentiate = TRUE, pvalue_fun = ~style_pvalue(.x, digits = 2) ) %>% bold_p(t = 0.10) %>% bold_labels() %>% italicize_levels() ####Multivariant analysis Any complications MVOR <- glm(Anycomplication1 ~ PAN_APPROACH + SEX + ASACLAS + BMIB, data = AnyComplicationOR, family = binomial("logit"), na.action =na.omit ) MVOR <- tbl_regression(MVOR, exponentiate = T, pvalue_fun = ~style_pvalue(.x, digits = 2), ) %>% bold_p(t = 0.10) %>% bold_labels() %>% italicize_levels() tbl_merge( list(UV, MVOR), tab_spanner = c("**Univariable**", "**Multivariable**") ) %>% bold_labels() %>% italicize_levels() ##Univariant Model ReturntoOR UV <- ReturntoOROddsRatio %>% select(PAN_APPROACH, ReturntoOR1, SEX, BMIB, RACE_NEW, ASACLAS) %>% tbl_uvregression( method = glm, y = ReturntoOR1, method.args = list(family = binomial), exponentiate = TRUE, pvalue_fun = ~style_pvalue(.x, digits = 2) ) %>% bold_p(t = 0.10) %>% bold_labels() %>% italicize_levels() ####Multivariant analysis returntoOR MVOR <- glm(ReturntoOR1 ~ PAN_APPROACH + SEX + ASACLAS + RACE_NEW, data = ReturntoOROddsRatio, family = binomial("logit"), na.action =na.omit ) MVOR <- tbl_regression(MVOR, exponentiate = T, pvalue_fun = ~style_pvalue(.x, digits = 2), ) %>% bold_p(t = 0.10) %>% bold_labels() %>% italicize_levels() tbl_merge( list(UV, MVOR), tab_spanner = c("**Univariable**", "**Multivariable**") ) %>% bold_labels() %>% italicize_levels()
Any Complication Odds Ratio MIS vs Open
# Important packages to load in library(dplyr) library(gtsummary) library(survival) library(labelled) library(tidyverse) library(broom) library(ggplot2) library(survminer) ### Intention to Treat MIS vs Open ## Importing data in to Rstudio below Importin csv getwd() NSQIPShortTermOutcomes <- read.csv ("Panfinal.csv", header = TRUE, sep = "," ) Final Code: ##Creating BMI column from heigh, weight NSQIPShortTermOutcomes$BMI <- (NSQIPShortTermOutcomes$WEIGHT * 703) / (NSQIPShortTermOutcomes$HEIGHT * NSQIPShortTermOutcomes$HEIGHT) #### Labeling columns var_label(IntentiontotreatFinal$SEX) <- "Sex" var_label(IntentiontotreatFinal$RACE_NEW) <- "Race" var_label(IntentiontotreatFinal$ASACLAS) <- "ASA Classification" var_label(IntentiontotreatFinal$Fistula.Grade) <- "Fistula" var_label(IntentiontotreatFinal$OPTIME) <- "Total operation time" var_label(IntentiontotreatFinal$OUPNEUMO) <- "Number of Pneumonia Occurrences" var_label(IntentiontotreatFinal$DOpertoD) <- "Mortality" var_label(IntentiontotreatFinal$TOTHLOS) <- "Length of total hospital stay" var_label(IntentiontotreatFinal$OUPNEUMO) <- "Occurrences Pneumonia" var_label(IntentiontotreatFinal$PULEMBOL) <- "Occurrences Pulmonary Embolism" var_label(IntentiontotreatFinal$WNDINFD) <- " Occurrences Deep Incisional SSI" var_label(IntentiontotreatFinal$STILLINHOSP) <- "Still in Hospital > 30 Days" var_label(IntentiontotreatFinal$REOPERATION1) <- "Unplanned Reoperation 1" var_label(IntentiontotreatFinal$OTHSYSEP) <- "Occurrences Sepsis" var_label(IntentiontotreatFinal$SeriousComplication) <- "Serious Complication" var_label(IntentiontotreatFinal$AnyComplication) <- "Any Complication" ##Subsetting the datafram by literally anything MISVSCONVERSIONDemotable <- subset(NSQIPDemographicTable, PAN_APPROACH == "MIS" | PAN_APPROACH == "MIS Converted to Open") FRSFUll <- subset(FRSFUll, CPT == "48140" | CPT == "48145") MISITTDemoTable1$PAN_APPROACH[MISITTDemoTable1$PAN_APPROACH =="MIS Converted to Open"] <- "Intention to Treat MIS" MISITTDemoTable1$PAN_APPROACH[MISITTDemoTable1$PAN_APPROACH =="MIS"] <- "Intention to Treat MIS" NSQIPShortTermOutcomes$PRSEPIS[NSQIPShortTermOutcomes$PRSEPIS == "SIRS"] <- "Yes" NSQIPShortTermOutcomes$PRSEPIS[NSQIPShortTermOutcomes$PRSEPIS == "Septic Shock"] <- "Yes" NSQIPShortTermOutcomes$PRSEPIS[NSQIPShortTermOutcomes$PRSEPIS == "Sepsis"] <- "Yes" NSQIPShortTermOutcomes$ASACLAS[NSQIPShortTermOutcomes$ASACLAS =="None assigned"] <- "Unknown" NSQIPDemographicTable1 <- table(NSQIPDemographicTable$PAN_APPROACH, NSQIPDemographicTable$ASACLAS) ###Recoding Variables in DopertoD numbers > yes and any NA's to No NSQIPShortTermOutcomes[NSQIPShortTermOutcomes$DOpertoD =="NA",]$DOpertoD <- "No" NSQIPShortTermOutcomes$DOpertoD[NSQIPShortTermOutcomes$DOpertoD ==NA] <- "No" NSQIPShortTermOutcomes$DOpertoD <- as.character(NSQIPShortTermOutcomes$DOpertoD) NSQIPShortTermOutcomes$DOpertoD[is.na(NSQIPShortTermOutcomes$DOpertoD)] <- "No" #Ifelse function to create new column for serious complication and any complication MISITTDemoTable <- mutate(NSQIPShortTermOutcomes, SeriousComplication = ifelse(CDARREST == "Cardiac Arrest Requiring CPR", "Yes", ifelse(CDMI == "Myocardial Infarction", "Yes", ifelse(OUPNEUMO == "Pneumonia", "Yes", ifelse(RENAINSF == "Progressive Renal Insufficiency", "Yes", ifelse(OPRENAFL == "Acute Renal Failure", "Yes", ifelse(PULEMBOL == "Pulmonary Embolism", "Yes", ifelse(OTHDVT == "DVT Requiring Therapy", "Yes", ifelse(RETURNOR == "Yes", "Yes", ifelse(ORGSPCSSI == "Organ/Space SSI", "Yes", ifelse(PRSEPIS == "Yes", "Yes", ifelse(REINTUB == "Unplanned Intubation", "Yes", ifelse(URNINFEC == "Urinary Tract Infection", "Yes", ifelse(DEHIS == "Wound Disruption", "Yes", "No")))))))))))))) ### Ifelse function to create new column for any complication MISITTDemoTable1 <- MISITTDemoTable %>% mutate(MISITTDemoTable, AnyComplication = ifelse(CDARREST == "Cardiac Arrest Requiring CPR", "Yes", ifelse(CDMI == "Myocardial Infarction", "Yes", ifelse(OUPNEUMO == "Pneumonia", "Yes", ifelse(RENAINSF == "Progressive Renal Insufficiency", "Yes", ifelse(OPRENAFL == "Acute Renal Failure", "Yes", ifelse(PULEMBOL == "Pulmonary Embolism", "Yes", ifelse(OTHDVT == "DVT Requiring Therapy", "Yes", ifelse(RETURNOR == "Yes", "Yes", ifelse(ORGSPCSSI == "Organ/Space SSI", "Yes", ifelse(PRSEPIS == "Yes", "Yes", ifelse(REINTUB == "Unplanned Intubation", "Yes", ifelse(URNINFEC == "Urinary Tract Infection", "Yes", ifelse(SUPINFEC == "Superficial Incisional SSI", "Yes", ifelse(FAILWEAN == "On Ventilator greater than 48 Hours", "Yes", ifelse(CNSCVA == "Stroke/CVA", "Yes", ifelse(DEHIS == "Wound Disruption", "Yes", "No"))))))))))))))))) print(NSQIPShortTermOutcomes$OUPNEUMO) #### Subsetting cleaned data from one dataframe to a new dataframe IntentiontotreatFinal <- MISITTDemoTable1 %>% select(PAN_APPROACH, Age, SEX, BMI, RACE_NEW, ASACLAS, DOpertoD, Fistula.Grade, OPTIME, TOTHLOS, CDARREST, CDMI, NRENAINSF, OPRENAFL, OTHDVT, OUPNEUMO, PULEMBOL, WNDINFD, URNINFEC, DEHIS, STILLINHOSP, REOPERATION1, RETURNOR, REINTUB, ORGSPCSSI, OTHSYSEP, PRSEPIS, FAILWEAN, CNSCVA, SeriousComplication, AnyComplication) ## Changing any Unknowns/none assigned to NA IntentiontotreatFinal[IntentiontotreatFinal =="None assigned"] <- NA IntentiontotreatFinal[IntentiontotreatFinal =="Unknown"] <- NA #Final Step to create demographic table IntentiontotreatFinal %>% tbl_summary( by = PAN_APPROACH, digits = all_continuous() ~ 2,) %>% add_p(pvalue_fun = ~style_pvalue(.x, digits = 2))%>% bold_p() %>% add_overall() %>% modify_header(label ~ "**Variable**") %>% modify_spanning_header(c("stat_1", "stat_2") ~ "**NSQIP Short Term Outcomes**") %>% bold_labels() ##Creating New Column for Age breakdown IntentiontotreatFinal <- IntentiontotreatFinal %>% mutate(IntentiontotreatFinal, BMIB = ifelse(BMI >= 30, "Obese", ifelse(BMI <= 30, "Non-Obese", "NA"))) ###Create New columns for preopxrtoddsratio and neoadjuvant multiagent ITTMortOR <- IntentiontotreatFinal %>% mutate(IntentiontotreatFinal, Mortality = ifelse(DOpertoD =="Yes", "1", ifelse(DOpertoD =="No", "0", "NA"))) ### Mortality --> numeric in the ITTMORTOR column before running logistic regression ITTMortOR$Mortality <- as.numeric(ITTMortOR$Mortality) ###Try removing 5-moribound from the odds ratio ITTMortOR$ASACLAS[ITTMortOR$ASACLAS =="5-Moribund"] <- NA ##Univariant Model MISvsITT mortality UVMortalityOR <- ITTMortOR %>% select(PAN_APPROACH, Mortality, SEX, BMIB, RACE_NEW, ASACLAS) %>% tbl_uvregression( method = glm, y = Mortality, method.args = list(family = binomial), exponentiate = TRUE, pvalue_fun = ~style_pvalue(.x, digits = 2) ) %>% bold_p(t = 0.10) %>% bold_labels() %>% italicize_levels() ####Multivariant analysis MISvsITTmortality MVOR <- glm(Mortality ~ PAN_APPROACH + SEX + ASACLAS, data = ITTMortOR, family = binomial("logit"), na.action =na.omit ) MVOR <- tbl_regression(MVOR, exponentiate = T, pvalue_fun = ~style_pvalue(.x, digits = 2), ) %>% bold_p(t = 0.10) %>% bold_labels() %>% italicize_levels() tbl_merge( list(UVMortalityOR, MVOR), tab_spanner = c("**Univariable**", "**Multivariable**") ) %>% bold_labels() %>% italicize_levels() ####Intention to Treat changing BMI to actually have a column with that creates a obese cutoff ###Creating dataframe where event is serious complication for open patients SeriousComplicationOR <- IntentiontotreatFinal %>% mutate(IntentiontotreatFinal, SeriousComplication1 = ifelse(SeriousComplication =="Yes", "1", ifelse(SeriousComplication =="No", "0", "NA"))) ### Mortality --> numeric in the ITTMORTOR column before running logistic regression SeriousComplicationOR$SeriousComplication1 <- as.numeric(SeriousComplicationOR$SeriousComplication1) ###Creating dataframe where event is any complication for open patients AnyComplicationOR <- IntentiontotreatFinal %>% mutate(IntentiontotreatFinal, Anycomplication1 = ifelse(AnyComplication =="Yes", "1", ifelse(AnyComplication =="No", "0", "NA"))) ### Mortality --> numeric in the ITTMORTOR column before running logistic regression AnyComplicationOR$Anycomplication1 <- as.numeric(AnyComplicationOR$Anycomplication1) ###Creating dataframe where event is Return to OR for open patients ReturntoOROddsRatio <- IntentiontotreatFinal %>% mutate(IntentiontotreatFinal, ReturntoOR1 = ifelse(RETURNOR =="Yes", "1", ifelse(RETURNOR =="No", "0", "NA"))) ### Mortality --> numeric in the ITTMORTOR column before running logistic regression ReturntoOROddsRatio$ReturntoOR1 <- as.numeric(ReturntoOROddsRatio$ReturntoOR1) ###Try removing 5-moribound from the odds ratio IntentiontotreatFinal$ASACLAS[IntentiontotreatFinal$ASACLAS =="5-Moribund"] <- NA ##Univariant Model Seriouscomplication UV <- SeriousComplicationOR %>% select(PAN_APPROACH, SeriousComplication1, SEX, BMIB, RACE_NEW, ASACLAS) %>% tbl_uvregression( method = glm, y = SeriousComplication1, method.args = list(family = binomial), exponentiate = TRUE, pvalue_fun = ~style_pvalue(.x, digits = 2) ) %>% bold_p(t = 0.10) %>% bold_labels() %>% italicize_levels() ####Multivariant analysis serious complications MVOR <- glm(SeriousComplication1 ~ PAN_APPROACH + SEX + BMIB + ASACLAS + BMI, data = SeriousComplicationOR, family = binomial("logit"), na.action =na.omit ) MVOR <- tbl_regression(MVOR, exponentiate = T, pvalue_fun = ~style_pvalue(.x, digits = 2), ) %>% bold_p(t = 0.10) %>% bold_labels() %>% italicize_levels() tbl_merge( list(UV, MVOR), tab_spanner = c("**Univariable**", "**Multivariable**") ) %>% bold_labels() %>% italicize_levels() ##Univariant Model Seriouscomplication UV <- AnyComplicationOR %>% select(PAN_APPROACH, Anycomplication1, SEX, BMIB, RACE_NEW, ASACLAS) %>% tbl_uvregression( method = glm, y = Anycomplication1, method.args = list(family = binomial), exponentiate = TRUE, pvalue_fun = ~style_pvalue(.x, digits = 2) ) %>% bold_p(t = 0.10) %>% bold_labels() %>% italicize_levels() ####Multivariant analysis Any complications MVOR <- glm(Anycomplication1 ~ PAN_APPROACH + SEX + ASACLAS + BMIB, data = AnyComplicationOR, family = binomial("logit"), na.action =na.omit ) MVOR <- tbl_regression(MVOR, exponentiate = T, pvalue_fun = ~style_pvalue(.x, digits = 2), ) %>% bold_p(t = 0.10) %>% bold_labels() %>% italicize_levels() tbl_merge( list(UV, MVOR), tab_spanner = c("**Univariable**", "**Multivariable**") ) %>% bold_labels() %>% italicize_levels() ##Univariant Model ReturntoOR UV <- ReturntoOROddsRatio %>% select(PAN_APPROACH, ReturntoOR1, SEX, BMI, RACE_NEW, ASACLAS) %>% tbl_uvregression( method = glm, y = ReturntoOR1, method.args = list(family = binomial), exponentiate = TRUE, pvalue_fun = ~style_pvalue(.x, digits = 2) ) %>% bold_p(t = 0.10) %>% bold_labels() %>% italicize_levels() ####Multivariant analysis returntoOR MVOR <- glm(ReturntoOR1 ~ PAN_APPROACH + SEX + ASACLAS + RACE_NEW + BMI, data = ReturntoOROddsRatio, family = binomial("logit"), na.action =na.omit ) MVOR <- tbl_regression(MVOR, exponentiate = T, pvalue_fun = ~style_pvalue(.x, digits = 2), ) %>% bold_p(t = 0.10) %>% bold_labels() %>% italicize_levels() tbl_merge( list(UV, MVOR), tab_spanner = c("**Univariable**", "**Multivariable**") ) %>% bold_labels() %>% italicize_levels()
Serious Complication Odds Ratio MIS vs Open
# Important packages to load in library(dplyr) library(gtsummary) library(survival) library(labelled) library(tidyverse) library(broom) library(ggplot2) library(survminer) ### Intention to Treat MIS vs Open ## Importing data in to Rstudio below Importin csv getwd() NSQIPShortTermOutcomes <- read.csv ("Panfinal.csv", header = TRUE, sep = "," ) Final Code: ##Creating BMI column from heigh, weight NSQIPShortTermOutcomes$BMI <- (NSQIPShortTermOutcomes$WEIGHT * 703) / (NSQIPShortTermOutcomes$HEIGHT * NSQIPShortTermOutcomes$HEIGHT) #### Labeling columns var_label(IntentiontotreatFinal$SEX) <- "Sex" var_label(IntentiontotreatFinal$RACE_NEW) <- "Race" var_label(IntentiontotreatFinal$ASACLAS) <- "ASA Classification" var_label(IntentiontotreatFinal$Fistula.Grade) <- "Fistula" var_label(IntentiontotreatFinal$OPTIME) <- "Total operation time" var_label(IntentiontotreatFinal$OUPNEUMO) <- "Number of Pneumonia Occurrences" var_label(IntentiontotreatFinal$DOpertoD) <- "Mortality" var_label(IntentiontotreatFinal$TOTHLOS) <- "Length of total hospital stay" var_label(IntentiontotreatFinal$OUPNEUMO) <- "Occurrences Pneumonia" var_label(IntentiontotreatFinal$PULEMBOL) <- "Occurrences Pulmonary Embolism" var_label(IntentiontotreatFinal$WNDINFD) <- " Occurrences Deep Incisional SSI" var_label(IntentiontotreatFinal$STILLINHOSP) <- "Still in Hospital > 30 Days" var_label(IntentiontotreatFinal$REOPERATION1) <- "Unplanned Reoperation 1" var_label(IntentiontotreatFinal$OTHSYSEP) <- "Occurrences Sepsis" var_label(IntentiontotreatFinal$SeriousComplication) <- "Serious Complication" var_label(IntentiontotreatFinal$AnyComplication) <- "Any Complication" ##Subsetting the datafram by literally anything MISVSCONVERSIONDemotable <- subset(NSQIPDemographicTable, PAN_APPROACH == "MIS" | PAN_APPROACH == "MIS Converted to Open") FRSFUll <- subset(FRSFUll, CPT == "48140" | CPT == "48145") MISITTDemoTable1$PAN_APPROACH[MISITTDemoTable1$PAN_APPROACH =="MIS Converted to Open"] <- "Intention to Treat MIS" MISITTDemoTable1$PAN_APPROACH[MISITTDemoTable1$PAN_APPROACH =="MIS"] <- "Intention to Treat MIS" NSQIPShortTermOutcomes$PRSEPIS[NSQIPShortTermOutcomes$PRSEPIS == "SIRS"] <- "Yes" NSQIPShortTermOutcomes$PRSEPIS[NSQIPShortTermOutcomes$PRSEPIS == "Septic Shock"] <- "Yes" NSQIPShortTermOutcomes$PRSEPIS[NSQIPShortTermOutcomes$PRSEPIS == "Sepsis"] <- "Yes" NSQIPShortTermOutcomes$ASACLAS[NSQIPShortTermOutcomes$ASACLAS =="None assigned"] <- "Unknown" NSQIPDemographicTable1 <- table(NSQIPDemographicTable$PAN_APPROACH, NSQIPDemographicTable$ASACLAS) ###Recoding Variables in DopertoD numbers > yes and any NA's to No NSQIPShortTermOutcomes[NSQIPShortTermOutcomes$DOpertoD =="NA",]$DOpertoD <- "No" NSQIPShortTermOutcomes$DOpertoD[NSQIPShortTermOutcomes$DOpertoD ==NA] <- "No" NSQIPShortTermOutcomes$DOpertoD <- as.character(NSQIPShortTermOutcomes$DOpertoD) NSQIPShortTermOutcomes$DOpertoD[is.na(NSQIPShortTermOutcomes$DOpertoD)] <- "No" #Ifelse function to create new column for serious complication and any complication MISITTDemoTable <- mutate(NSQIPShortTermOutcomes, SeriousComplication = ifelse(CDARREST == "Cardiac Arrest Requiring CPR", "Yes", ifelse(CDMI == "Myocardial Infarction", "Yes", ifelse(OUPNEUMO == "Pneumonia", "Yes", ifelse(RENAINSF == "Progressive Renal Insufficiency", "Yes", ifelse(OPRENAFL == "Acute Renal Failure", "Yes", ifelse(PULEMBOL == "Pulmonary Embolism", "Yes", ifelse(OTHDVT == "DVT Requiring Therapy", "Yes", ifelse(RETURNOR == "Yes", "Yes", ifelse(ORGSPCSSI == "Organ/Space SSI", "Yes", ifelse(PRSEPIS == "Yes", "Yes", ifelse(REINTUB == "Unplanned Intubation", "Yes", ifelse(URNINFEC == "Urinary Tract Infection", "Yes", ifelse(DEHIS == "Wound Disruption", "Yes", "No")))))))))))))) ### Ifelse function to create new column for any complication MISITTDemoTable1 <- MISITTDemoTable %>% mutate(MISITTDemoTable, AnyComplication = ifelse(CDARREST == "Cardiac Arrest Requiring CPR", "Yes", ifelse(CDMI == "Myocardial Infarction", "Yes", ifelse(OUPNEUMO == "Pneumonia", "Yes", ifelse(RENAINSF == "Progressive Renal Insufficiency", "Yes", ifelse(OPRENAFL == "Acute Renal Failure", "Yes", ifelse(PULEMBOL == "Pulmonary Embolism", "Yes", ifelse(OTHDVT == "DVT Requiring Therapy", "Yes", ifelse(RETURNOR == "Yes", "Yes", ifelse(ORGSPCSSI == "Organ/Space SSI", "Yes", ifelse(PRSEPIS == "Yes", "Yes", ifelse(REINTUB == "Unplanned Intubation", "Yes", ifelse(URNINFEC == "Urinary Tract Infection", "Yes", ifelse(SUPINFEC == "Superficial Incisional SSI", "Yes", ifelse(FAILWEAN == "On Ventilator greater than 48 Hours", "Yes", ifelse(CNSCVA == "Stroke/CVA", "Yes", ifelse(DEHIS == "Wound Disruption", "Yes", "No"))))))))))))))))) print(NSQIPShortTermOutcomes$OUPNEUMO) #### Subsetting cleaned data from one dataframe to a new dataframe IntentiontotreatFinal <- MISITTDemoTable1 %>% select(PAN_APPROACH, Age, SEX, BMI, RACE_NEW, ASACLAS, DOpertoD, Fistula.Grade, OPTIME, TOTHLOS, CDARREST, CDMI, NRENAINSF, OPRENAFL, OTHDVT, OUPNEUMO, PULEMBOL, WNDINFD, URNINFEC, DEHIS, STILLINHOSP, REOPERATION1, RETURNOR, REINTUB, ORGSPCSSI, OTHSYSEP, PRSEPIS, FAILWEAN, CNSCVA, SeriousComplication, AnyComplication) ## Changing any Unknowns/none assigned to NA IntentiontotreatFinal[IntentiontotreatFinal =="None assigned"] <- NA IntentiontotreatFinal[IntentiontotreatFinal =="Unknown"] <- NA #Final Step to create demographic table IntentiontotreatFinal %>% tbl_summary( by = PAN_APPROACH, digits = all_continuous() ~ 2,) %>% add_p(pvalue_fun = ~style_pvalue(.x, digits = 2))%>% bold_p() %>% add_overall() %>% modify_header(label ~ "**Variable**") %>% modify_spanning_header(c("stat_1", "stat_2") ~ "**NSQIP Short Term Outcomes**") %>% bold_labels() ##Creating New Column for Age breakdown IntentiontotreatFinal <- IntentiontotreatFinal %>% mutate(IntentiontotreatFinal, BMIB = ifelse(BMI >= 30, "Obese", ifelse(BMI <= 30, "Non-Obese", "NA"))) ###Create New columns for preopxrtoddsratio and neoadjuvant multiagent ITTMortOR <- IntentiontotreatFinal %>% mutate(IntentiontotreatFinal, Mortality = ifelse(DOpertoD =="Yes", "1", ifelse(DOpertoD =="No", "0", "NA"))) ### Mortality --> numeric in the ITTMORTOR column before running logistic regression ITTMortOR$Mortality <- as.numeric(ITTMortOR$Mortality) ###Try removing 5-moribound from the odds ratio ITTMortOR$ASACLAS[ITTMortOR$ASACLAS =="5-Moribund"] <- NA ##Univariant Model MISvsITT mortality UVMortalityOR <- ITTMortOR %>% select(PAN_APPROACH, Mortality, SEX, BMIB, RACE_NEW, ASACLAS) %>% tbl_uvregression( method = glm, y = Mortality, method.args = list(family = binomial), exponentiate = TRUE, pvalue_fun = ~style_pvalue(.x, digits = 2) ) %>% bold_p(t = 0.10) %>% bold_labels() %>% italicize_levels() ####Multivariant analysis MISvsITTmortality MVOR <- glm(Mortality ~ PAN_APPROACH + SEX + ASACLAS, data = ITTMortOR, family = binomial("logit"), na.action =na.omit ) MVOR <- tbl_regression(MVOR, exponentiate = T, pvalue_fun = ~style_pvalue(.x, digits = 2), ) %>% bold_p(t = 0.10) %>% bold_labels() %>% italicize_levels() tbl_merge( list(UVMortalityOR, MVOR), tab_spanner = c("**Univariable**", "**Multivariable**") ) %>% bold_labels() %>% italicize_levels() ####Intention to Treat changing BMI to actually have a column with that creates a obese cutoff ###Creating dataframe where event is serious complication for open patients SeriousComplicationOR <- IntentiontotreatFinal %>% mutate(IntentiontotreatFinal, SeriousComplication1 = ifelse(SeriousComplication =="Yes", "1", ifelse(SeriousComplication =="No", "0", "NA"))) ### Mortality --> numeric in the ITTMORTOR column before running logistic regression SeriousComplicationOR$SeriousComplication1 <- as.numeric(SeriousComplicationOR$SeriousComplication1) ###Creating dataframe where event is any complication for open patients AnyComplicationOR <- IntentiontotreatFinal %>% mutate(IntentiontotreatFinal, Anycomplication1 = ifelse(AnyComplication =="Yes", "1", ifelse(AnyComplication =="No", "0", "NA"))) ### Mortality --> numeric in the ITTMORTOR column before running logistic regression AnyComplicationOR$Anycomplication1 <- as.numeric(AnyComplicationOR$Anycomplication1) ###Creating dataframe where event is Return to OR for open patients ReturntoOROddsRatio <- IntentiontotreatFinal %>% mutate(IntentiontotreatFinal, ReturntoOR1 = ifelse(RETURNOR =="Yes", "1", ifelse(RETURNOR =="No", "0", "NA"))) ### Mortality --> numeric in the ITTMORTOR column before running logistic regression ReturntoOROddsRatio$ReturntoOR1 <- as.numeric(ReturntoOROddsRatio$ReturntoOR1) ###Try removing 5-moribound from the odds ratio IntentiontotreatFinal$ASACLAS[IntentiontotreatFinal$ASACLAS =="5-Moribund"] <- NA ##Univariant Model Seriouscomplication UV <- SeriousComplicationOR %>% select(PAN_APPROACH, SeriousComplication1, SEX, BMIB, RACE_NEW, ASACLAS) %>% tbl_uvregression( method = glm, y = SeriousComplication1, method.args = list(family = binomial), exponentiate = TRUE, pvalue_fun = ~style_pvalue(.x, digits = 2) ) %>% bold_p(t = 0.10) %>% bold_labels() %>% italicize_levels() ####Multivariant analysis serious complications MVOR <- glm(SeriousComplication1 ~ PAN_APPROACH + SEX + BMIB + ASACLAS + BMI, data = SeriousComplicationOR, family = binomial("logit"), na.action =na.omit ) MVOR <- tbl_regression(MVOR, exponentiate = T, pvalue_fun = ~style_pvalue(.x, digits = 2), ) %>% bold_p(t = 0.10) %>% bold_labels() %>% italicize_levels() tbl_merge( list(UV, MVOR), tab_spanner = c("**Univariable**", "**Multivariable**") ) %>% bold_labels() %>% italicize_levels() ##Univariant Model Seriouscomplication UV <- AnyComplicationOR %>% select(PAN_APPROACH, Anycomplication1, SEX, BMI, RACE_NEW, ASACLAS) %>% tbl_uvregression( method = glm, y = Anycomplication1, method.args = list(family = binomial), exponentiate = TRUE, pvalue_fun = ~style_pvalue(.x, digits = 2) ) %>% bold_p(t = 0.10) %>% bold_labels() %>% italicize_levels() ####Multivariant analysis Any complications MVOR <- glm(Anycomplication1 ~ PAN_APPROACH + SEX + ASACLAS + BMI, data = AnyComplicationOR, family = binomial("logit"), na.action =na.omit ) MVOR <- tbl_regression(MVOR, exponentiate = T, pvalue_fun = ~style_pvalue(.x, digits = 2), ) %>% bold_p(t = 0.10) %>% bold_labels() %>% italicize_levels() tbl_merge( list(UV, MVOR), tab_spanner = c("**Univariable**", "**Multivariable**") ) %>% bold_labels() %>% italicize_levels() ##Univariant Model ReturntoOR UV <- ReturntoOROddsRatio %>% select(PAN_APPROACH, ReturntoOR1, SEX, BMI, RACE_NEW, ASACLAS) %>% tbl_uvregression( method = glm, y = ReturntoOR1, method.args = list(family = binomial), exponentiate = TRUE, pvalue_fun = ~style_pvalue(.x, digits = 2) ) %>% bold_p(t = 0.10) %>% bold_labels() %>% italicize_levels() ####Multivariant analysis returntoOR MVOR <- glm(ReturntoOR1 ~ PAN_APPROACH + SEX + ASACLAS + RACE_NEW + BMI, data = ReturntoOROddsRatio, family = binomial("logit"), na.action =na.omit ) MVOR <- tbl_regression(MVOR, exponentiate = T, pvalue_fun = ~style_pvalue(.x, digits = 2), ) %>% bold_p(t = 0.10) %>% bold_labels() %>% italicize_levels() tbl_merge( list(UV, MVOR), tab_spanner = c("**Univariable**", "**Multivariable**") ) %>% bold_labels() %>% italicize_levels()
ITT MIS vs Open Odds Ratio Mortality
# Important packages to load in library(dplyr) library(gtsummary) library(survival) library(labelled) library(tidyverse) library(broom) library(ggplot2) library(survminer) ### Intention to Treat MIS vs Open ## Importing data in to Rstudio below Importin csv getwd() NSQIPShortTermOutcomes <- read.csv ("Panfinal.csv", header = TRUE, sep = "," ) Final Code: ##Creating BMI column from heigh, weight NSQIPShortTermOutcomes$BMI <- (NSQIPShortTermOutcomes$WEIGHT * 703) / (NSQIPShortTermOutcomes$HEIGHT * NSQIPShortTermOutcomes$HEIGHT) #### Labeling columns var_label(IntentiontotreatFinal$SEX) <- "Sex" var_label(IntentiontotreatFinal$RACE_NEW) <- "Race" var_label(IntentiontotreatFinal$ASACLAS) <- "ASA Classification" var_label(IntentiontotreatFinal$Fistula.Grade) <- "Fistula" var_label(IntentiontotreatFinal$OPTIME) <- "Total operation time" var_label(IntentiontotreatFinal$OUPNEUMO) <- "Number of Pneumonia Occurrences" var_label(IntentiontotreatFinal$DOpertoD) <- "Mortality" var_label(IntentiontotreatFinal$TOTHLOS) <- "Length of total hospital stay" var_label(IntentiontotreatFinal$OUPNEUMO) <- "Occurrences Pneumonia" var_label(IntentiontotreatFinal$PULEMBOL) <- "Occurrences Pulmonary Embolism" var_label(IntentiontotreatFinal$WNDINFD) <- " Occurrences Deep Incisional SSI" var_label(IntentiontotreatFinal$STILLINHOSP) <- "Still in Hospital > 30 Days" var_label(IntentiontotreatFinal$REOPERATION1) <- "Unplanned Reoperation 1" var_label(IntentiontotreatFinal$OTHSYSEP) <- "Occurrences Sepsis" var_label(IntentiontotreatFinal$SeriousComplication) <- "Serious Complication" var_label(IntentiontotreatFinal$AnyComplication) <- "Any Complication" ##Subsetting the datafram by literally anything MISVSCONVERSIONDemotable <- subset(NSQIPDemographicTable, PAN_APPROACH == "MIS" | PAN_APPROACH == "MIS Converted to Open") FRSFUll <- subset(FRSFUll, CPT == "48140" | CPT == "48145") MISITTDemoTable1$PAN_APPROACH[MISITTDemoTable1$PAN_APPROACH =="MIS Converted to Open"] <- "Intention to Treat MIS" MISITTDemoTable1$PAN_APPROACH[MISITTDemoTable1$PAN_APPROACH =="MIS"] <- "Intention to Treat MIS" NSQIPShortTermOutcomes$PRSEPIS[NSQIPShortTermOutcomes$PRSEPIS == "SIRS"] <- "Yes" NSQIPShortTermOutcomes$PRSEPIS[NSQIPShortTermOutcomes$PRSEPIS == "Septic Shock"] <- "Yes" NSQIPShortTermOutcomes$PRSEPIS[NSQIPShortTermOutcomes$PRSEPIS == "Sepsis"] <- "Yes" NSQIPShortTermOutcomes$ASACLAS[NSQIPShortTermOutcomes$ASACLAS =="None assigned"] <- "Unknown" NSQIPDemographicTable1 <- table(NSQIPDemographicTable$PAN_APPROACH, NSQIPDemographicTable$ASACLAS) ###Recoding Variables in DopertoD numbers > yes and any NA's to No NSQIPShortTermOutcomes[NSQIPShortTermOutcomes$DOpertoD =="NA",]$DOpertoD <- "No" NSQIPShortTermOutcomes$DOpertoD[NSQIPShortTermOutcomes$DOpertoD ==NA] <- "No" NSQIPShortTermOutcomes$DOpertoD <- as.character(NSQIPShortTermOutcomes$DOpertoD) NSQIPShortTermOutcomes$DOpertoD[is.na(NSQIPShortTermOutcomes$DOpertoD)] <- "No" #Ifelse function to create new column for serious complication and any complication MISITTDemoTable <- mutate(NSQIPShortTermOutcomes, SeriousComplication = ifelse(CDARREST == "Cardiac Arrest Requiring CPR", "Yes", ifelse(CDMI == "Myocardial Infarction", "Yes", ifelse(OUPNEUMO == "Pneumonia", "Yes", ifelse(RENAINSF == "Progressive Renal Insufficiency", "Yes", ifelse(OPRENAFL == "Acute Renal Failure", "Yes", ifelse(PULEMBOL == "Pulmonary Embolism", "Yes", ifelse(OTHDVT == "DVT Requiring Therapy", "Yes", ifelse(RETURNOR == "Yes", "Yes", ifelse(ORGSPCSSI == "Organ/Space SSI", "Yes", ifelse(PRSEPIS == "Yes", "Yes", ifelse(REINTUB == "Unplanned Intubation", "Yes", ifelse(URNINFEC == "Urinary Tract Infection", "Yes", ifelse(DEHIS == "Wound Disruption", "Yes", "No")))))))))))))) ### Ifelse function to create new column for any complication MISITTDemoTable1 <- MISITTDemoTable %>% mutate(MISITTDemoTable, AnyComplication = ifelse(CDARREST == "Cardiac Arrest Requiring CPR", "Yes", ifelse(CDMI == "Myocardial Infarction", "Yes", ifelse(OUPNEUMO == "Pneumonia", "Yes", ifelse(RENAINSF == "Progressive Renal Insufficiency", "Yes", ifelse(OPRENAFL == "Acute Renal Failure", "Yes", ifelse(PULEMBOL == "Pulmonary Embolism", "Yes", ifelse(OTHDVT == "DVT Requiring Therapy", "Yes", ifelse(RETURNOR == "Yes", "Yes", ifelse(ORGSPCSSI == "Organ/Space SSI", "Yes", ifelse(PRSEPIS == "Yes", "Yes", ifelse(REINTUB == "Unplanned Intubation", "Yes", ifelse(URNINFEC == "Urinary Tract Infection", "Yes", ifelse(SUPINFEC == "Superficial Incisional SSI", "Yes", ifelse(FAILWEAN == "On Ventilator greater than 48 Hours", "Yes", ifelse(CNSCVA == "Stroke/CVA", "Yes", ifelse(DEHIS == "Wound Disruption", "Yes", "No"))))))))))))))))) print(NSQIPShortTermOutcomes$OUPNEUMO) #### Subsetting cleaned data from one dataframe to a new dataframe IntentiontotreatFinal <- MISITTDemoTable1 %>% select(PAN_APPROACH, Age, SEX, BMI, RACE_NEW, ASACLAS, DOpertoD, Fistula.Grade, OPTIME, TOTHLOS, CDARREST, CDMI, NRENAINSF, OPRENAFL, OTHDVT, OUPNEUMO, PULEMBOL, WNDINFD, URNINFEC, DEHIS, STILLINHOSP, REOPERATION1, RETURNOR, REINTUB, ORGSPCSSI, OTHSYSEP, PRSEPIS, FAILWEAN, CNSCVA, SeriousComplication, AnyComplication) ## Changing any Unknowns/none assigned to NA IntentiontotreatFinal[IntentiontotreatFinal =="None assigned"] <- NA IntentiontotreatFinal[IntentiontotreatFinal =="Unknown"] <- NA #Final Step to create demographic table IntentiontotreatFinal %>% tbl_summary( by = PAN_APPROACH, digits = all_continuous() ~ 2,) %>% add_p(pvalue_fun = ~style_pvalue(.x, digits = 2))%>% bold_p() %>% add_overall() %>% modify_header(label ~ "**Variable**") %>% modify_spanning_header(c("stat_1", "stat_2") ~ "**NSQIP Short Term Outcomes**") %>% bold_labels() ##Creating New Column for Age breakdown IntentiontotreatFinal <- IntentiontotreatFinal %>% mutate(IntentiontotreatFinal, BMIB = ifelse(BMI >= 30, "Obese", ifelse(BMI <= 30, "Non-Obese", "NA"))) ###Create New columns for preopxrtoddsratio and neoadjuvant multiagent ITTMortOR <- IntentiontotreatFinal %>% mutate(IntentiontotreatFinal, Mortality = ifelse(DOpertoD =="Yes", "1", ifelse(DOpertoD =="No", "0", "NA"))) ### Mortality --> numeric in the ITTMORTOR column before running logistic regression ITTMortOR$Mortality <- as.numeric(ITTMortOR$Mortality) ###Try removing 5-moribound from the odds ratio ITTMortOR$ASACLAS[ITTMortOR$ASACLAS =="5-Moribund"] <- NA ##Univariant Model MISvsITT mortality UVMortalityOR <- ITTMortOR %>% select(PAN_APPROACH, Mortality, SEX, BMIB, RACE_NEW, ASACLAS) %>% tbl_uvregression( method = glm, y = Mortality, method.args = list(family = binomial), exponentiate = TRUE, pvalue_fun = ~style_pvalue(.x, digits = 2) ) %>% bold_p(t = 0.10) %>% bold_labels() %>% italicize_levels() ####Multivariant analysis MISvsITTmortality MVOR <- glm(Mortality ~ PAN_APPROACH + SEX + ASACLAS, data = ITTMortOR, family = binomial("logit"), na.action =na.omit ) MVOR <- tbl_regression(MVOR, exponentiate = T, pvalue_fun = ~style_pvalue(.x, digits = 2), ) %>% bold_p(t = 0.10) %>% bold_labels() %>% italicize_levels() tbl_merge( list(UVMortalityOR, MVOR), tab_spanner = c("**Univariable**", "**Multivariable**") ) %>% bold_labels() %>% italicize_levels()
Intention to Treat MIS vs Open Demo table with Serious Complication or any complication
# Important packages to load in library(dplyr) library(gtsummary) library(survival) library(labelled) library(tidyverse) library(broom) library(ggplot2) library(survminer) ### Intention to Treat MIS vs Open ## Importing data in to Rstudio below Importin csv getwd() NSQIPShortTermOutcomes <- read.csv ("Panfinal.csv", header = TRUE, sep = "," ) Final Code: ##Creating BMI column from heigh, weight NSQIPShortTermOutcomes$BMI <- (NSQIPShortTermOutcomes$WEIGHT * 703) / (NSQIPShortTermOutcomes$HEIGHT * NSQIPShortTermOutcomes$HEIGHT) #### Labeling columns var_label(IntentiontotreatFinal$SEX) <- "Sex" var_label(IntentiontotreatFinal$RACE_NEW) <- "Race" var_label(IntentiontotreatFinal$ASACLAS) <- "ASA Classification" var_label(IntentiontotreatFinal$Fistula.Grade) <- "Fistula" var_label(IntentiontotreatFinal$OPTIME) <- "Total operation time" var_label(IntentiontotreatFinal$OUPNEUMO) <- "Number of Pneumonia Occurrences" var_label(IntentiontotreatFinal$DOpertoD) <- "Mortality" var_label(IntentiontotreatFinal$TOTHLOS) <- "Length of total hospital stay" var_label(IntentiontotreatFinal$OUPNEUMO) <- "Occurrences Pneumonia" var_label(IntentiontotreatFinal$PULEMBOL) <- "Occurrences Pulmonary Embolism" var_label(IntentiontotreatFinal$WNDINFD) <- " Occurrences Deep Incisional SSI" var_label(IntentiontotreatFinal$STILLINHOSP) <- "Still in Hospital > 30 Days" var_label(IntentiontotreatFinal$REOPERATION1) <- "Unplanned Reoperation 1" var_label(IntentiontotreatFinal$OTHSYSEP) <- "Occurrences Sepsis" var_label(IntentiontotreatFinal$SeriousComplication) <- "Serious Complication" var_label(IntentiontotreatFinal$AnyComplication) <- "Any Complication" ##Subsetting the datafram by literally anything MISVSCONVERSIONDemotable <- subset(NSQIPDemographicTable, PAN_APPROACH == "MIS" | PAN_APPROACH == "MIS Converted to Open") FRSFUll <- subset(FRSFUll, CPT == "48140" | CPT == "48145") MISITTDemoTable1$PAN_APPROACH[MISITTDemoTable1$PAN_APPROACH =="MIS Converted to Open"] <- "Intention to Treat MIS" MISITTDemoTable1$PAN_APPROACH[MISITTDemoTable1$PAN_APPROACH =="MIS"] <- "Intention to Treat MIS" NSQIPShortTermOutcomes$PRSEPIS[NSQIPShortTermOutcomes$PRSEPIS == "SIRS"] <- "Yes" NSQIPShortTermOutcomes$PRSEPIS[NSQIPShortTermOutcomes$PRSEPIS == "Septic Shock"] <- "Yes" NSQIPShortTermOutcomes$PRSEPIS[NSQIPShortTermOutcomes$PRSEPIS == "Sepsis"] <- "Yes" NSQIPShortTermOutcomes$ASACLAS[NSQIPShortTermOutcomes$ASACLAS =="None assigned"] <- "Unknown" NSQIPDemographicTable1 <- table(NSQIPDemographicTable$PAN_APPROACH, NSQIPDemographicTable$ASACLAS) ###Recoding Variables in DopertoD numbers > yes and any NA's to No NSQIPShortTermOutcomes[NSQIPShortTermOutcomes$DOpertoD =="NA",]$DOpertoD <- "No" NSQIPShortTermOutcomes$DOpertoD[NSQIPShortTermOutcomes$DOpertoD ==NA] <- "No" NSQIPShortTermOutcomes$DOpertoD <- as.character(NSQIPShortTermOutcomes$DOpertoD) NSQIPShortTermOutcomes$DOpertoD[is.na(NSQIPShortTermOutcomes$DOpertoD)] <- "No" #Ifelse function to create new column for serious complication and any complication MISITTDemoTable <- mutate(NSQIPShortTermOutcomes, SeriousComplication = ifelse(CDARREST == "Cardiac Arrest Requiring CPR", "Yes", ifelse(CDMI == "Myocardial Infarction", "Yes", ifelse(OUPNEUMO == "Pneumonia", "Yes", ifelse(RENAINSF == "Progressive Renal Insufficiency", "Yes", ifelse(OPRENAFL == "Acute Renal Failure", "Yes", ifelse(PULEMBOL == "Pulmonary Embolism", "Yes", ifelse(OTHDVT == "DVT Requiring Therapy", "Yes", ifelse(RETURNOR == "Yes", "Yes", ifelse(ORGSPCSSI == "Organ/Space SSI", "Yes", ifelse(PRSEPIS == "Yes", "Yes", ifelse(REINTUB == "Unplanned Intubation", "Yes", ifelse(URNINFEC == "Urinary Tract Infection", "Yes", ifelse(DEHIS == "Wound Disruption", "Yes", "No")))))))))))))) ### Ifelse function to create new column for any complication MISITTDemoTable1 <- MISITTDemoTable %>% mutate(MISITTDemoTable, AnyComplication = ifelse(CDARREST == "Cardiac Arrest Requiring CPR", "Yes", ifelse(CDMI == "Myocardial Infarction", "Yes", ifelse(OUPNEUMO == "Pneumonia", "Yes", ifelse(RENAINSF == "Progressive Renal Insufficiency", "Yes", ifelse(OPRENAFL == "Acute Renal Failure", "Yes", ifelse(PULEMBOL == "Pulmonary Embolism", "Yes", ifelse(OTHDVT == "DVT Requiring Therapy", "Yes", ifelse(RETURNOR == "Yes", "Yes", ifelse(ORGSPCSSI == "Organ/Space SSI", "Yes", ifelse(PRSEPIS == "Yes", "Yes", ifelse(REINTUB == "Unplanned Intubation", "Yes", ifelse(URNINFEC == "Urinary Tract Infection", "Yes", ifelse(SUPINFEC == "Superficial Incisional SSI", "Yes", ifelse(FAILWEAN == "On Ventilator greater than 48 Hours", "Yes", ifelse(CNSCVA == "Stroke/CVA", "Yes", ifelse(DEHIS == "Wound Disruption", "Yes", "No"))))))))))))))))) print(NSQIPShortTermOutcomes$OUPNEUMO) #### Subsetting cleaned data from one dataframe to a new dataframe IntentiontotreatFinal <- MISITTDemoTable1 %>% select(PAN_APPROACH, Age, SEX, BMI, RACE_NEW, ASACLAS, DOpertoD, Fistula.Grade, OPTIME, TOTHLOS, CDARREST, CDMI, NRENAINSF, OPRENAFL, OTHDVT, OUPNEUMO, PULEMBOL, WNDINFD, URNINFEC, DEHIS, STILLINHOSP, REOPERATION1, RETURNOR, REINTUB, ORGSPCSSI, OTHSYSEP, PRSEPIS, FAILWEAN, CNSCVA, SeriousComplication, AnyComplication) ## Changing any Unknowns/none assigned to NA IntentiontotreatFinal[IntentiontotreatFinal =="None assigned"] <- NA IntentiontotreatFinal[IntentiontotreatFinal =="Unknown"] <- NA #Final Step to create demographic table IntentiontotreatFinal %>% tbl_summary( by = PAN_APPROACH, digits = all_continuous() ~ 2,) %>% add_p(pvalue_fun = ~style_pvalue(.x, digits = 2))%>% bold_p() %>% add_overall() %>% modify_header(label ~ "**Variable**") %>% modify_spanning_header(c("stat_1", "stat_2") ~ "**NSQIP Short Term Outcomes**") %>% bold_labels()
PreopXRT Subsetted group Univariant & Multivariant Survival Analysis
# Important packages to load in library(dplyr) library(gtsummary) library(survival) library(labelled) library(tidyverse) library(broom) library(ggplot2) library(survminer) ### Intention to Treat MIS vs Open ## Importing data in to Rstudio below Importin csv getwd() PreopNeoPaper <- read.csv ("PreoppaperFinal.csv", header = TRUE, sep = "," ) #### Subsetting cleaned data from one dataframe to a new dataframe PreopNeoPaperDemotable <- PreopNeoPaper %>% select(Single.vs.Multi.Agent, AGE, SEX, RACE.2, INSURANCE_STATUS.2, MED_INC_QUAR_12, NO_HSD_QUAR_12, Population.density, Charlson.Deyo.Score, TNM_CLIN_T, TNM_CLIN_N, TNM_PATH_T, TNM_PATH_N, ANALYTIC_STAGE_GROUP, GRADE.2, RX_SUMM_SURG_PRIM_SITE.2.2, Margins, Downstaging, DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS.2) PreopXRTOddsratio <- PreopNeoPaper %>% select(Single.vs.Multi.Agent, AGE, SEX, RACE.2, INSURANCE_STATUS.2, MED_INC_QUAR_12, NO_HSD_QUAR_12, Population.density, Charlson.Deyo.Score, TNM_CLIN_T, TNM_CLIN_N, TNM_PATH_T, TNM_PATH_N, ANALYTIC_STAGE_GROUP, GRADE.2, RX_SUMM_SURG_PRIM_SITE.2.2, Margins, Downstaging, DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS.2) #Final Step to create demographic table PreopNeoPaperDemotable %>% tbl_summary( by = Single.vs.Multi.Agent, digits = all_continuous() ~ 2,) %>% add_p(pvalue_fun = ~style_pvalue(.x, digits = 2))%>% bold_p() %>% add_overall() %>% modify_header(label ~ "**Variables**") %>% modify_spanning_header(c("stat_0", "stat_1") ~ "**Neo Multiagent vs Preop XRT**") %>% bold_labels() ### Recoding No High School degree from blanks to unknown PreopNeoPaper$NO_HSD_QUAR_12[PreopNeoPaper$NO_HSD_QUAR_12 ==""] <- "Unknown" ##Recoding Data within TNM Clin T PreopNeoPaper$TNM_CLIN_T[PreopNeoPaper$TNM_CLIN_T ==""] <- "Unknown" PreopNeoPaper$TNM_CLIN_T[PreopNeoPaper$TNM_CLIN_T =="c0"] <- "Unknown" PreopNeoPaper$TNM_CLIN_T[PreopNeoPaper$TNM_CLIN_T == "cX"] <- "Unknown" ##Recoding Data within TNM Clin N PreopNeoPaper$TNM_CLIN_N[PreopNeoPaper$TNM_CLIN_N ==""] <- "Unknown" PreopNeoPaper$TNM_CLIN_N[PreopNeoPaper$TNM_CLIN_N == "cX"] <- "Unknown" ##Recoding Data within TNM Path T PreopNeoPaper$TNM_PATH_T[PreopNeoPaper$TNM_PATH_T ==""] <- "Unknown" PreopNeoPaper$TNM_PATH_T[PreopNeoPaper$TNM_PATH_T =="pIS"] <- "Unknown" PreopNeoPaper$TNM_PATH_T[PreopNeoPaper$TNM_PATH_T == "pX"] <- "Unknown" ##Recoding Data within TNM Path N PreopNeoPaper$TNM_PATH_N[PreopNeoPaper$TNM_PATH_N ==""] <- "Unknown" PreopNeoPaper$TNM_PATH_N[PreopNeoPaper$TNM_PATH_N =="pX"] <- "Unknown" ##Recoding Analytical Stages removing Stage IV patients PreopNeoPaper$ANALYTIC_STAGE_GROUP[PreopNeoPaper$ANALYTIC_STAGE_GROUP == "AJCC Stage Group unknown"] <- "Unknown" ##Recoding income PreopNeoPaper$MED_INC_QUAR_12[PreopNeoPaper$MED_INC_QUAR_12 == ""] <- "Unknown" ###Labeling Columns for MISvsMISConversionNCDBDemographicTable var_label(PreopNeoPaperDemotable$DX_LASTCONTACT_DEATH_MONTHS) <- "Median Survival" var_label(PreopNeoPaperDemotable$PUF_VITAL_STATUS.2) <- "Vital Status" ##View the data print(PreopNeoPaper$Single.vs.Multi.Agent) #Recode Preop XRT = 1 NeoAdjuvant multiagent= 0 PreopNeoPaper$Single.vs.Multi.Agent[PreopNeoPaper$Single.vs.Multi.Agent == "Pre Op XRT" ] <- 1 PreopNeoPaper$Single.vs.Multi.Agent[PreopNeoPaper$Single.vs.Multi.Agent =="PreOp Multiagent"] <- 0 ###Recode preop XRT and Neoadjuvant column back to original PreopXRTOddsratio$Single.vs.Multi.Agent[PreopXRTOddsratio$Single.vs.Multi.Agent == 1 ] <- "Pre Op XRT" PreopXRTOddsratio$Single.vs.Multi.Agent[PreopXRTOddsratio$Single.vs.Multi.Agent == 0 ] <- "PreOp Multiagent" ###Create New columns for preopxrtoddsratio and neoadjuvant multiagent Neoadjoddsratio <- PreopXRTOddsratio %>% mutate(PreopXRTOddsratio, NeoMultiAgent = ifelse(Single.vs.Multi.Agent == 1, 2, ifelse(Single.vs.Multi.Agent == 0 , 1, 100))) ## Neoadjoddsratio change 2 to become the nonevent Neoadjoddsratio$NeoMultiAgent[Neoadjoddsratio$NeoMultiAgent == 2] <- 0 ###Make Singlevsmultiagent column numeric PreopNeoPaper$Single.vs.Multi.Agent <- as.numeric(PreopNeoPaper$Single.vs.Multi.Agent) ### Preopxrtoddsratio recoding age to a <75 and >75, and 51-75 PreopXRTOddsratioB <- PreopXRTOddsratio %>% mutate(PreopXRTOddsratio, AgeB = ifelse(AGE > 75, ">75", ifelse(AGE < 51 , "<51", "51-75"))) #### recoding Unknowns to NA PreopxrtoddsratioB PreopXRTOddsratioB$INSURANCE_STATUS.2[PreopXRTOddsratioB$INSURANCE_STATUS.2 =="Unknown"] <- NA PreopXRTOddsratioB$MED_INC_QUAR_12[PreopXRTOddsratioB$MED_INC_QUAR_12 =="Unknown"] <- NA PreopXRTOddsratioB$NO_HSD_QUAR_12[PreopXRTOddsratioB$NO_HSD_QUAR_12 =="Unknown"] <- NA PreopXRTOddsratioB$Population.density[PreopXRTOddsratioB$Population.density =="Unknown"] <- NA PreopXRTOddsratioB$TNM_CLIN_T[PreopXRTOddsratioB$TNM_CLIN_T =="Unknown"] <- NA PreopXRTOddsratioB$TNM_CLIN_N[PreopXRTOddsratioB$TNM_CLIN_N =="Unknown"] <- NA PreopXRTOddsratioB$TNM_PATH_N[PreopXRTOddsratioB$TNM_PATH_N =="Unknown"] <- NA PreopXRTOddsratioB$ANALYTIC_STAGE_GROUP[PreopXRTOddsratioB$ANALYTIC_STAGE_GROUP =="Unknown"] <- NA PreopXRTOddsratioB$Margins[PreopXRTOddsratioB$Margins =="Unknown"] <- NA PreopXRTOddsratioB$GRADE.2[PreopXRTOddsratioB$GRADE.2 =="Unknown"] <- NA PreopXRTOddsratioB$Downstaging[PreopXRTOddsratioB$Downstaging =="Unknown"] <- NA #### recoding Unknowns to NA Neoadjoddsratio Neoadjoddsratio$INSURANCE_STATUS.2[Neoadjoddsratio$INSURANCE_STATUS.2 =="Unknown"] <- NA Neoadjoddsratio$MED_INC_QUAR_12[Neoadjoddsratio$MED_INC_QUAR_12 =="Unknown"] <- NA Neoadjoddsratio$NO_HSD_QUAR_12[Neoadjoddsratio$NO_HSD_QUAR_12 =="Unknown"] <- NA Neoadjoddsratio$Population.density[Neoadjoddsratio$Population.density =="Unknown"] <- NA Neoadjoddsratio$TNM_CLIN_T[Neoadjoddsratio$TNM_CLIN_T =="Unknown"] <- NA Neoadjoddsratio$TNM_CLIN_N[Neoadjoddsratio$TNM_CLIN_N =="Unknown"] <- NA Neoadjoddsratio$TNM_PATH_N[Neoadjoddsratio$TNM_PATH_N =="Unknown"] <- NA Neoadjoddsratio$ANALYTIC_STAGE_GROUP[Neoadjoddsratio$ANALYTIC_STAGE_GROUP =="Unknown"] <- NA Neoadjoddsratio$Margins[Neoadjoddsratio$Margins =="Unknown"] <- NA Neoadjoddsratio$GRADE.2[Neoadjoddsratio$GRADE.2 =="Unknown"] <- NA Neoadjoddsratio$Downstaging[Neoadjoddsratio$Downstaging =="Unknown"] <- NA ##Univariant Model PreopxrtdOddsratio UnivariantModel <- PreopXRTOddsratioB %>% select(Single.vs.Multi.Agent, AgeB, RACE.2, INSURANCE_STATUS.2, MED_INC_QUAR_12, NO_HSD_QUAR_12, Population.density, Charlson.Deyo.Score, TNM_CLIN_T, TNM_CLIN_N, TNM_PATH_T, TNM_PATH_N, ANALYTIC_STAGE_GROUP, Margins, GRADE.2, RX_SUMM_SURG_PRIM_SITE.2.2, Downstaging) %>% tbl_uvregression( method = glm, y = Single.vs.Multi.Agent, method.args = list(family = binomial), exponentiate = TRUE, pvalue_fun = ~style_pvalue(.x, digits = 2) ) %>% bold_p(t = 0.10) %>% bold_labels() %>% italicize_levels() ####Univariant Model Neomultiagent UnivariantModel <- Neoadjoddsratio %>% select(NeoMultiAgent, AgeB, RACE.2, INSURANCE_STATUS.2, MED_INC_QUAR_12, NO_HSD_QUAR_12, Population.density, Charlson.Deyo.Score, TNM_CLIN_T, TNM_CLIN_N, TNM_PATH_T, TNM_PATH_N, ANALYTIC_STAGE_GROUP, Margins, GRADE.2, RX_SUMM_SURG_PRIM_SITE.2.2, Downstaging) %>% tbl_uvregression( method = glm, y = NeoMultiAgent, method.args = list(family = binomial), exponentiate = TRUE, pvalue_fun = ~style_pvalue(.x, digits = 2) ) %>% bold_p(t = 0.10) %>% bold_labels() %>% italicize_levels() ####Multivariant analysis preopxrt MVOR <- glm(Single.vs.Multi.Agent ~ AgeB + RACE.2 + INSURANCE_STATUS.2 + MED_INC_QUAR_12 + NO_HSD_QUAR_12 + Population.density + Charlson.Deyo.Score + TNM_CLIN_T + TNM_PATH_T + TNM_PATH_N + ANALYTIC_STAGE_GROUP + Margins + Downstaging, data = PreopXRTOddsratioB, family = binomial("logit"), na.action =na.omit ) ###mutlivariant neomultiageent MVOR <- glm(NeoMultiAgent ~ AgeB + RACE.2 + INSURANCE_STATUS.2 + MED_INC_QUAR_12 + NO_HSD_QUAR_12 + Population.density + Charlson.Deyo.Score + TNM_CLIN_T + TNM_PATH_T + TNM_PATH_N + ANALYTIC_STAGE_GROUP + Margins + Downstaging, data = Neoadjoddsratio, family = binomial("logit"), na.action =na.omit ) MVOR <- tbl_regression(MVOR, exponentiate = T, pvalue_fun = ~style_pvalue(.x, digits = 2), ) %>% bold_p(t = 0.10) %>% bold_labels() %>% italicize_levels() tbl_merge( list(UnivariantModel, MVOR), tab_spanner = c("**Univariable**", "**Multivariable**") ) %>% bold_labels() %>% italicize_levels() #####Survival Analysis Ensure that vital status is labeled as 1= Alive and 2=Death Neoadjoddsratio$PUF_VITAL_STATUS.2[Neoadjoddsratio$PUF_VITAL_STATUS.2 == 0] <- 2 PreopXRTOddsratioB$PUF_VITAL_STATUS.2[PreopXRTOddsratioB$PUF_VITAL_STATUS.2 == 0] <- 2 ###Subset the data so it's Only neoadj patients & only preop xrt patients prior to survival analysis NeoadjSurvivalSubset <- subset(Neoadjoddsratio, NeoMultiAgent == 1) PreopXRTSurvivalSubset <- subset(PreopXRTOddsratioB, Single.vs.Multi.Agent == 1) ### Univariant Survival Neoadj UVSurvNeo <- NeoadjSurvivalSubset %>% select(AgeB, SEX, MED_INC_QUAR_12, Charlson.Deyo.Score, ANALYTIC_STAGE_GROUP, RX_SUMM_SURG_PRIM_SITE.2.2, GRADE.2, Downstaging, DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS.2) %>% tbl_uvregression( method = coxph, y = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS.2), exponentiate = TRUE) %>% bold_p(t = 0.10) %>% bold_labels() %>% italicize_levels() ###Multivariant survival Neoadj MVSurvNeo <- coxph(Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS.2) ~ AgeB + MED_INC_QUAR_12 + ANALYTIC_STAGE_GROUP + GRADE.2 + Downstaging, data = NeoadjSurvivalSubset ) %>% tbl_regression(exponentiate = T ) %>% bold_p(t = 0.10) %>% bold_labels() %>% italicize_levels() ###Merged Neo Univariant and Multivariant tbl_merge( list(UVSurvNeo, MVSurvNeo), tab_spanner = c("**Univariable**", "**Multivariable**") ) %>% bold_labels() %>% italicize_levels() ### Univariant Survival preop UVSurvPreopXRT <- PreopXRTSurvivalSubset %>% select(AgeB, SEX, MED_INC_QUAR_12, Charlson.Deyo.Score, ANALYTIC_STAGE_GROUP, RX_SUMM_SURG_PRIM_SITE.2.2, GRADE.2, Downstaging, DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS.2) %>% tbl_uvregression( method = coxph, y = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS.2), exponentiate = TRUE) %>% bold_p(t = 0.10) %>% bold_labels() %>% italicize_levels() ###Multivariant survival Preop MVSurvPreopXRT <- coxph(Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS.2) ~ AgeB + SEX + MED_INC_QUAR_12 + ANALYTIC_STAGE_GROUP + GRADE.2 + Downstaging, data = PreopXRTSurvivalSubset ) %>% tbl_regression(exponentiate = T ) %>% bold_p(t = 0.10) %>% bold_labels() %>% italicize_levels() ###Merged Neo Univariant and Multivariant tbl_merge( list(UVSurvPreopXRT, MVSurvPreopXRT), tab_spanner = c("**Univariable**", "**Multivariable**") ) %>% bold_labels() %>% italicize_levels()
Neoadj Subsetted group Univariant & Multivariant Survival Analysis
# Important packages to load in library(dplyr) library(gtsummary) library(survival) library(labelled) library(tidyverse) library(broom) library(ggplot2) library(survminer) ### Intention to Treat MIS vs Open ## Importing data in to Rstudio below Importin csv getwd() PreopNeoPaper <- read.csv ("PreoppaperFinal.csv", header = TRUE, sep = "," ) #### Subsetting cleaned data from one dataframe to a new dataframe PreopNeoPaperDemotable <- PreopNeoPaper %>% select(Single.vs.Multi.Agent, AGE, SEX, RACE.2, INSURANCE_STATUS.2, MED_INC_QUAR_12, NO_HSD_QUAR_12, Population.density, Charlson.Deyo.Score, TNM_CLIN_T, TNM_CLIN_N, TNM_PATH_T, TNM_PATH_N, ANALYTIC_STAGE_GROUP, GRADE.2, RX_SUMM_SURG_PRIM_SITE.2.2, Margins, Downstaging, DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS.2) PreopXRTOddsratio <- PreopNeoPaper %>% select(Single.vs.Multi.Agent, AGE, SEX, RACE.2, INSURANCE_STATUS.2, MED_INC_QUAR_12, NO_HSD_QUAR_12, Population.density, Charlson.Deyo.Score, TNM_CLIN_T, TNM_CLIN_N, TNM_PATH_T, TNM_PATH_N, ANALYTIC_STAGE_GROUP, GRADE.2, RX_SUMM_SURG_PRIM_SITE.2.2, Margins, Downstaging, DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS.2) #Final Step to create demographic table PreopNeoPaperDemotable %>% tbl_summary( by = Single.vs.Multi.Agent, digits = all_continuous() ~ 2,) %>% add_p(pvalue_fun = ~style_pvalue(.x, digits = 2))%>% bold_p() %>% add_overall() %>% modify_header(label ~ "**Variables**") %>% modify_spanning_header(c("stat_0", "stat_1") ~ "**Neo Multiagent vs Preop XRT**") %>% bold_labels() ### Recoding No High School degree from blanks to unknown PreopNeoPaper$NO_HSD_QUAR_12[PreopNeoPaper$NO_HSD_QUAR_12 ==""] <- "Unknown" ##Recoding Data within TNM Clin T PreopNeoPaper$TNM_CLIN_T[PreopNeoPaper$TNM_CLIN_T ==""] <- "Unknown" PreopNeoPaper$TNM_CLIN_T[PreopNeoPaper$TNM_CLIN_T =="c0"] <- "Unknown" PreopNeoPaper$TNM_CLIN_T[PreopNeoPaper$TNM_CLIN_T == "cX"] <- "Unknown" ##Recoding Data within TNM Clin N PreopNeoPaper$TNM_CLIN_N[PreopNeoPaper$TNM_CLIN_N ==""] <- "Unknown" PreopNeoPaper$TNM_CLIN_N[PreopNeoPaper$TNM_CLIN_N == "cX"] <- "Unknown" ##Recoding Data within TNM Path T PreopNeoPaper$TNM_PATH_T[PreopNeoPaper$TNM_PATH_T ==""] <- "Unknown" PreopNeoPaper$TNM_PATH_T[PreopNeoPaper$TNM_PATH_T =="pIS"] <- "Unknown" PreopNeoPaper$TNM_PATH_T[PreopNeoPaper$TNM_PATH_T == "pX"] <- "Unknown" ##Recoding Data within TNM Path N PreopNeoPaper$TNM_PATH_N[PreopNeoPaper$TNM_PATH_N ==""] <- "Unknown" PreopNeoPaper$TNM_PATH_N[PreopNeoPaper$TNM_PATH_N =="pX"] <- "Unknown" ##Recoding Analytical Stages removing Stage IV patients PreopNeoPaper$ANALYTIC_STAGE_GROUP[PreopNeoPaper$ANALYTIC_STAGE_GROUP == "AJCC Stage Group unknown"] <- "Unknown" ##Recoding income PreopNeoPaper$MED_INC_QUAR_12[PreopNeoPaper$MED_INC_QUAR_12 == ""] <- "Unknown" ###Labeling Columns for MISvsMISConversionNCDBDemographicTable var_label(PreopNeoPaperDemotable$DX_LASTCONTACT_DEATH_MONTHS) <- "Median Survival" var_label(PreopNeoPaperDemotable$PUF_VITAL_STATUS.2) <- "Vital Status" ##View the data print(PreopNeoPaper$Single.vs.Multi.Agent) #Recode Preop XRT = 1 NeoAdjuvant multiagent= 0 PreopNeoPaper$Single.vs.Multi.Agent[PreopNeoPaper$Single.vs.Multi.Agent == "Pre Op XRT" ] <- 1 PreopNeoPaper$Single.vs.Multi.Agent[PreopNeoPaper$Single.vs.Multi.Agent =="PreOp Multiagent"] <- 0 ###Recode preop XRT and Neoadjuvant column back to original PreopXRTOddsratio$Single.vs.Multi.Agent[PreopXRTOddsratio$Single.vs.Multi.Agent == 1 ] <- "Pre Op XRT" PreopXRTOddsratio$Single.vs.Multi.Agent[PreopXRTOddsratio$Single.vs.Multi.Agent == 0 ] <- "PreOp Multiagent" ###Create New columns for preopxrtoddsratio and neoadjuvant multiagent Neoadjoddsratio <- PreopXRTOddsratio %>% mutate(PreopXRTOddsratio, NeoMultiAgent = ifelse(Single.vs.Multi.Agent == 1, 2, ifelse(Single.vs.Multi.Agent == 0 , 1, 100))) ## Neoadjoddsratio change 2 to become the nonevent Neoadjoddsratio$NeoMultiAgent[Neoadjoddsratio$NeoMultiAgent == 2] <- 0 ###Make Singlevsmultiagent column numeric PreopNeoPaper$Single.vs.Multi.Agent <- as.numeric(PreopNeoPaper$Single.vs.Multi.Agent) ### Preopxrtoddsratio recoding age to a <75 and >75, and 51-75 PreopXRTOddsratioB <- PreopXRTOddsratio %>% mutate(PreopXRTOddsratio, AgeB = ifelse(AGE > 75, ">75", ifelse(AGE < 51 , "<51", "51-75"))) #### recoding Unknowns to NA PreopxrtoddsratioB PreopXRTOddsratioB$INSURANCE_STATUS.2[PreopXRTOddsratioB$INSURANCE_STATUS.2 =="Unknown"] <- NA PreopXRTOddsratioB$MED_INC_QUAR_12[PreopXRTOddsratioB$MED_INC_QUAR_12 =="Unknown"] <- NA PreopXRTOddsratioB$NO_HSD_QUAR_12[PreopXRTOddsratioB$NO_HSD_QUAR_12 =="Unknown"] <- NA PreopXRTOddsratioB$Population.density[PreopXRTOddsratioB$Population.density =="Unknown"] <- NA PreopXRTOddsratioB$TNM_CLIN_T[PreopXRTOddsratioB$TNM_CLIN_T =="Unknown"] <- NA PreopXRTOddsratioB$TNM_CLIN_N[PreopXRTOddsratioB$TNM_CLIN_N =="Unknown"] <- NA PreopXRTOddsratioB$TNM_PATH_N[PreopXRTOddsratioB$TNM_PATH_N =="Unknown"] <- NA PreopXRTOddsratioB$ANALYTIC_STAGE_GROUP[PreopXRTOddsratioB$ANALYTIC_STAGE_GROUP =="Unknown"] <- NA PreopXRTOddsratioB$Margins[PreopXRTOddsratioB$Margins =="Unknown"] <- NA PreopXRTOddsratioB$GRADE.2[PreopXRTOddsratioB$GRADE.2 =="Unknown"] <- NA PreopXRTOddsratioB$Downstaging[PreopXRTOddsratioB$Downstaging =="Unknown"] <- NA #### recoding Unknowns to NA Neoadjoddsratio Neoadjoddsratio$INSURANCE_STATUS.2[Neoadjoddsratio$INSURANCE_STATUS.2 =="Unknown"] <- NA Neoadjoddsratio$MED_INC_QUAR_12[Neoadjoddsratio$MED_INC_QUAR_12 =="Unknown"] <- NA Neoadjoddsratio$NO_HSD_QUAR_12[Neoadjoddsratio$NO_HSD_QUAR_12 =="Unknown"] <- NA Neoadjoddsratio$Population.density[Neoadjoddsratio$Population.density =="Unknown"] <- NA Neoadjoddsratio$TNM_CLIN_T[Neoadjoddsratio$TNM_CLIN_T =="Unknown"] <- NA Neoadjoddsratio$TNM_CLIN_N[Neoadjoddsratio$TNM_CLIN_N =="Unknown"] <- NA Neoadjoddsratio$TNM_PATH_N[Neoadjoddsratio$TNM_PATH_N =="Unknown"] <- NA Neoadjoddsratio$ANALYTIC_STAGE_GROUP[Neoadjoddsratio$ANALYTIC_STAGE_GROUP =="Unknown"] <- NA Neoadjoddsratio$Margins[Neoadjoddsratio$Margins =="Unknown"] <- NA Neoadjoddsratio$GRADE.2[Neoadjoddsratio$GRADE.2 =="Unknown"] <- NA Neoadjoddsratio$Downstaging[Neoadjoddsratio$Downstaging =="Unknown"] <- NA ##Univariant Model PreopxrtdOddsratio UnivariantModel <- PreopXRTOddsratioB %>% select(Single.vs.Multi.Agent, AgeB, RACE.2, INSURANCE_STATUS.2, MED_INC_QUAR_12, NO_HSD_QUAR_12, Population.density, Charlson.Deyo.Score, TNM_CLIN_T, TNM_CLIN_N, TNM_PATH_T, TNM_PATH_N, ANALYTIC_STAGE_GROUP, Margins, GRADE.2, RX_SUMM_SURG_PRIM_SITE.2.2, Downstaging) %>% tbl_uvregression( method = glm, y = Single.vs.Multi.Agent, method.args = list(family = binomial), exponentiate = TRUE, pvalue_fun = ~style_pvalue(.x, digits = 2) ) %>% bold_p(t = 0.10) %>% bold_labels() %>% italicize_levels() ####Univariant Model Neomultiagent UnivariantModel <- Neoadjoddsratio %>% select(NeoMultiAgent, AgeB, RACE.2, INSURANCE_STATUS.2, MED_INC_QUAR_12, NO_HSD_QUAR_12, Population.density, Charlson.Deyo.Score, TNM_CLIN_T, TNM_CLIN_N, TNM_PATH_T, TNM_PATH_N, ANALYTIC_STAGE_GROUP, Margins, GRADE.2, RX_SUMM_SURG_PRIM_SITE.2.2, Downstaging) %>% tbl_uvregression( method = glm, y = NeoMultiAgent, method.args = list(family = binomial), exponentiate = TRUE, pvalue_fun = ~style_pvalue(.x, digits = 2) ) %>% bold_p(t = 0.10) %>% bold_labels() %>% italicize_levels() ####Multivariant analysis preopxrt MVOR <- glm(Single.vs.Multi.Agent ~ AgeB + RACE.2 + INSURANCE_STATUS.2 + MED_INC_QUAR_12 + NO_HSD_QUAR_12 + Population.density + Charlson.Deyo.Score + TNM_CLIN_T + TNM_PATH_T + TNM_PATH_N + ANALYTIC_STAGE_GROUP + Margins + Downstaging, data = PreopXRTOddsratioB, family = binomial("logit"), na.action =na.omit ) ###mutlivariant neomultiageent MVOR <- glm(NeoMultiAgent ~ AgeB + RACE.2 + INSURANCE_STATUS.2 + MED_INC_QUAR_12 + NO_HSD_QUAR_12 + Population.density + Charlson.Deyo.Score + TNM_CLIN_T + TNM_PATH_T + TNM_PATH_N + ANALYTIC_STAGE_GROUP + Margins + Downstaging, data = Neoadjoddsratio, family = binomial("logit"), na.action =na.omit ) MVOR <- tbl_regression(MVOR, exponentiate = T, pvalue_fun = ~style_pvalue(.x, digits = 2), ) %>% bold_p(t = 0.10) %>% bold_labels() %>% italicize_levels() tbl_merge( list(UnivariantModel, MVOR), tab_spanner = c("**Univariable**", "**Multivariable**") ) %>% bold_labels() %>% italicize_levels() #####Survival Analysis Ensure that vital status is labeled as 1= Alive and 2=Death Neoadjoddsratio$PUF_VITAL_STATUS.2[Neoadjoddsratio$PUF_VITAL_STATUS.2 == 0] <- 2 PreopXRTOddsratioB$PUF_VITAL_STATUS.2[PreopXRTOddsratioB$PUF_VITAL_STATUS.2 == 0] <- 2 ###Subset the data so it's Only neoadj patients & only preop xrt patients prior to survival analysis NeoadjSurvivalSubset <- subset(Neoadjoddsratio, NeoMultiAgent == 1) PreopXRTSurvivalSubset <- subset(PreopXRTOddsratioB, Single.vs.Multi.Agent == 1) ### Univariant Survival Neoadj UVSurvNeo <- NeoadjSurvivalSubset %>% select(AgeB, SEX, MED_INC_QUAR_12, Charlson.Deyo.Score, ANALYTIC_STAGE_GROUP, RX_SUMM_SURG_PRIM_SITE.2.2, GRADE.2, Downstaging, DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS.2) %>% tbl_uvregression( method = coxph, y = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS.2), exponentiate = TRUE) %>% bold_p(t = 0.10) %>% bold_labels() %>% italicize_levels() ###Multivariant survival Neoadj MVSurvNeo <- coxph(Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS.2) ~ AgeB + MED_INC_QUAR_12 + ANALYTIC_STAGE_GROUP + GRADE.2 + Downstaging, data = NeoadjSurvivalSubset ) %>% tbl_regression(exponentiate = T ) %>% bold_p(t = 0.10) %>% bold_labels() %>% italicize_levels() ###Merged Neo Univariant and Multivariant tbl_merge( list(UVSurvNeo, MVSurvNeo), tab_spanner = c("**Univariable**", "**Multivariable**") ) %>% bold_labels() %>% italicize_levels()
Neoadj odds ratio
# Important packages to load in library(dplyr) library(gtsummary) library(survival) library(labelled) library(tidyverse) library(broom) library(ggplot2) library(survminer) ### Intention to Treat MIS vs Open ## Importing data in to Rstudio below Importin csv getwd() PreopNeoPaper <- read.csv ("PreoppaperFinal.csv", header = TRUE, sep = "," ) #### Subsetting cleaned data from one dataframe to a new dataframe PreopNeoPaperDemotable <- PreopNeoPaper %>% select(Single.vs.Multi.Agent, AGE, SEX, RACE.2, INSURANCE_STATUS.2, MED_INC_QUAR_12, NO_HSD_QUAR_12, Population.density, Charlson.Deyo.Score, TNM_CLIN_T, TNM_CLIN_N, TNM_PATH_T, TNM_PATH_N, ANALYTIC_STAGE_GROUP, GRADE.2, RX_SUMM_SURG_PRIM_SITE.2.2, Margins, Downstaging, DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS.2) PreopXRTOddsratio <- PreopNeoPaper %>% select(Single.vs.Multi.Agent, AGE, SEX, RACE.2, INSURANCE_STATUS.2, MED_INC_QUAR_12, NO_HSD_QUAR_12, Population.density, Charlson.Deyo.Score, TNM_CLIN_T, TNM_CLIN_N, TNM_PATH_T, TNM_PATH_N, ANALYTIC_STAGE_GROUP, GRADE.2, RX_SUMM_SURG_PRIM_SITE.2.2, Margins, Downstaging, DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS.2) #Final Step to create demographic table PreopNeoPaperDemotable %>% tbl_summary( by = Single.vs.Multi.Agent, digits = all_continuous() ~ 2,) %>% add_p(pvalue_fun = ~style_pvalue(.x, digits = 2))%>% bold_p() %>% add_overall() %>% modify_header(label ~ "**Variables**") %>% modify_spanning_header(c("stat_0", "stat_1") ~ "**Neo Multiagent vs Preop XRT**") %>% bold_labels() ### Recoding No High School degree from blanks to unknown PreopNeoPaper$NO_HSD_QUAR_12[PreopNeoPaper$NO_HSD_QUAR_12 ==""] <- "Unknown" ##Recoding Data within TNM Clin T PreopNeoPaper$TNM_CLIN_T[PreopNeoPaper$TNM_CLIN_T ==""] <- "Unknown" PreopNeoPaper$TNM_CLIN_T[PreopNeoPaper$TNM_CLIN_T =="c0"] <- "Unknown" PreopNeoPaper$TNM_CLIN_T[PreopNeoPaper$TNM_CLIN_T == "cX"] <- "Unknown" ##Recoding Data within TNM Clin N PreopNeoPaper$TNM_CLIN_N[PreopNeoPaper$TNM_CLIN_N ==""] <- "Unknown" PreopNeoPaper$TNM_CLIN_N[PreopNeoPaper$TNM_CLIN_N == "cX"] <- "Unknown" ##Recoding Data within TNM Path T PreopNeoPaper$TNM_PATH_T[PreopNeoPaper$TNM_PATH_T ==""] <- "Unknown" PreopNeoPaper$TNM_PATH_T[PreopNeoPaper$TNM_PATH_T =="pIS"] <- "Unknown" PreopNeoPaper$TNM_PATH_T[PreopNeoPaper$TNM_PATH_T == "pX"] <- "Unknown" ##Recoding Data within TNM Path N PreopNeoPaper$TNM_PATH_N[PreopNeoPaper$TNM_PATH_N ==""] <- "Unknown" PreopNeoPaper$TNM_PATH_N[PreopNeoPaper$TNM_PATH_N =="pX"] <- "Unknown" ##Recoding Analytical Stages removing Stage IV patients PreopNeoPaper$ANALYTIC_STAGE_GROUP[PreopNeoPaper$ANALYTIC_STAGE_GROUP == "AJCC Stage Group unknown"] <- "Unknown" ##Recoding income PreopNeoPaper$MED_INC_QUAR_12[PreopNeoPaper$MED_INC_QUAR_12 == ""] <- "Unknown" ###Labeling Columns for MISvsMISConversionNCDBDemographicTable var_label(PreopNeoPaperDemotable$DX_LASTCONTACT_DEATH_MONTHS) <- "Median Survival" var_label(PreopNeoPaperDemotable$PUF_VITAL_STATUS.2) <- "Vital Status" ##View the data print(PreopNeoPaper$Single.vs.Multi.Agent) #Recode Preop XRT = 1 NeoAdjuvant multiagent= 0 PreopNeoPaper$Single.vs.Multi.Agent[PreopNeoPaper$Single.vs.Multi.Agent == "Pre Op XRT" ] <- 1 PreopNeoPaper$Single.vs.Multi.Agent[PreopNeoPaper$Single.vs.Multi.Agent =="PreOp Multiagent"] <- 0 ###Recode preop XRT and Neoadjuvant column back to original PreopXRTOddsratio$Single.vs.Multi.Agent[PreopXRTOddsratio$Single.vs.Multi.Agent == 1 ] <- "Pre Op XRT" PreopXRTOddsratio$Single.vs.Multi.Agent[PreopXRTOddsratio$Single.vs.Multi.Agent == 0 ] <- "PreOp Multiagent" ###Create New columns for preopxrtoddsratio and neoadjuvant multiagent Neoadjoddsratio <- PreopXRTOddsratio %>% mutate(PreopXRTOddsratio, NeoMultiAgent = ifelse(Single.vs.Multi.Agent == 1, 2, ifelse(Single.vs.Multi.Agent == 0 , 1, 100))) ## Neoadjoddsratio change 2 to become the nonevent Neoadjoddsratio$NeoMultiAgent[Neoadjoddsratio$NeoMultiAgent == 2] <- 0 ###Make Singlevsmultiagent column numeric PreopNeoPaper$Single.vs.Multi.Agent <- as.numeric(PreopNeoPaper$Single.vs.Multi.Agent) ### Preopxrtoddsratio recoding age to a <75 and >75, and 51-75 PreopXRTOddsratioB <- PreopXRTOddsratio %>% mutate(PreopXRTOddsratio, AgeB = ifelse(AGE > 75, ">75", ifelse(AGE < 51 , "<51", "51-75"))) #### recoding Unknowns to NA PreopxrtoddsratioB PreopXRTOddsratioB$INSURANCE_STATUS.2[PreopXRTOddsratioB$INSURANCE_STATUS.2 =="Unknown"] <- NA PreopXRTOddsratioB$MED_INC_QUAR_12[PreopXRTOddsratioB$MED_INC_QUAR_12 =="Unknown"] <- NA PreopXRTOddsratioB$NO_HSD_QUAR_12[PreopXRTOddsratioB$NO_HSD_QUAR_12 =="Unknown"] <- NA PreopXRTOddsratioB$Population.density[PreopXRTOddsratioB$Population.density =="Unknown"] <- NA PreopXRTOddsratioB$TNM_CLIN_T[PreopXRTOddsratioB$TNM_CLIN_T =="Unknown"] <- NA PreopXRTOddsratioB$TNM_CLIN_N[PreopXRTOddsratioB$TNM_CLIN_N =="Unknown"] <- NA PreopXRTOddsratioB$TNM_PATH_N[PreopXRTOddsratioB$TNM_PATH_N =="Unknown"] <- NA PreopXRTOddsratioB$ANALYTIC_STAGE_GROUP[PreopXRTOddsratioB$ANALYTIC_STAGE_GROUP =="Unknown"] <- NA PreopXRTOddsratioB$Margins[PreopXRTOddsratioB$Margins =="Unknown"] <- NA PreopXRTOddsratioB$GRADE.2[PreopXRTOddsratioB$GRADE.2 =="Unknown"] <- NA PreopXRTOddsratioB$Downstaging[PreopXRTOddsratioB$Downstaging =="Unknown"] <- NA #### recoding Unknowns to NA Neoadjoddsratio Neoadjoddsratio$INSURANCE_STATUS.2[Neoadjoddsratio$INSURANCE_STATUS.2 =="Unknown"] <- NA Neoadjoddsratio$MED_INC_QUAR_12[Neoadjoddsratio$MED_INC_QUAR_12 =="Unknown"] <- NA Neoadjoddsratio$NO_HSD_QUAR_12[Neoadjoddsratio$NO_HSD_QUAR_12 =="Unknown"] <- NA Neoadjoddsratio$Population.density[Neoadjoddsratio$Population.density =="Unknown"] <- NA Neoadjoddsratio$TNM_CLIN_T[Neoadjoddsratio$TNM_CLIN_T =="Unknown"] <- NA Neoadjoddsratio$TNM_CLIN_N[Neoadjoddsratio$TNM_CLIN_N =="Unknown"] <- NA Neoadjoddsratio$TNM_PATH_N[Neoadjoddsratio$TNM_PATH_N =="Unknown"] <- NA Neoadjoddsratio$ANALYTIC_STAGE_GROUP[Neoadjoddsratio$ANALYTIC_STAGE_GROUP =="Unknown"] <- NA Neoadjoddsratio$Margins[Neoadjoddsratio$Margins =="Unknown"] <- NA Neoadjoddsratio$GRADE.2[Neoadjoddsratio$GRADE.2 =="Unknown"] <- NA Neoadjoddsratio$Downstaging[Neoadjoddsratio$Downstaging =="Unknown"] <- NA ##Univariant Model PreopxrtdOddsratio UnivariantModel <- PreopXRTOddsratioB %>% select(Single.vs.Multi.Agent, AgeB, RACE.2, INSURANCE_STATUS.2, MED_INC_QUAR_12, NO_HSD_QUAR_12, Population.density, Charlson.Deyo.Score, TNM_CLIN_T, TNM_CLIN_N, TNM_PATH_T, TNM_PATH_N, ANALYTIC_STAGE_GROUP, Margins, GRADE.2, RX_SUMM_SURG_PRIM_SITE.2.2, Downstaging) %>% tbl_uvregression( method = glm, y = Single.vs.Multi.Agent, method.args = list(family = binomial), exponentiate = TRUE, pvalue_fun = ~style_pvalue(.x, digits = 2) ) %>% bold_p(t = 0.10) %>% bold_labels() %>% italicize_levels() ####Univariant Model Neomultiagent UnivariantModel <- Neoadjoddsratio %>% select(NeoMultiAgent, AgeB, RACE.2, INSURANCE_STATUS.2, MED_INC_QUAR_12, NO_HSD_QUAR_12, Population.density, Charlson.Deyo.Score, TNM_CLIN_T, TNM_CLIN_N, TNM_PATH_T, TNM_PATH_N, ANALYTIC_STAGE_GROUP, Margins, GRADE.2, RX_SUMM_SURG_PRIM_SITE.2.2, Downstaging) %>% tbl_uvregression( method = glm, y = NeoMultiAgent, method.args = list(family = binomial), exponentiate = TRUE, pvalue_fun = ~style_pvalue(.x, digits = 2) ) %>% bold_p(t = 0.10) %>% bold_labels() %>% italicize_levels() ####Multivariant analysis preopxrt MVOR <- glm(Single.vs.Multi.Agent ~ AgeB + RACE.2 + INSURANCE_STATUS.2 + MED_INC_QUAR_12 + NO_HSD_QUAR_12 + Population.density + Charlson.Deyo.Score + TNM_CLIN_T + TNM_PATH_T + TNM_PATH_N + ANALYTIC_STAGE_GROUP + Margins + Downstaging, data = PreopXRTOddsratioB, family = binomial("logit"), na.action =na.omit ) ###mutlivariant neomultiageent MVOR <- glm(NeoMultiAgent ~ AgeB + RACE.2 + INSURANCE_STATUS.2 + MED_INC_QUAR_12 + NO_HSD_QUAR_12 + Population.density + Charlson.Deyo.Score + TNM_CLIN_T + TNM_PATH_T + TNM_PATH_N + ANALYTIC_STAGE_GROUP + Margins + Downstaging, data = Neoadjoddsratio, family = binomial("logit"), na.action =na.omit ) MVOR <- tbl_regression(MVOR, exponentiate = T, pvalue_fun = ~style_pvalue(.x, digits = 2), ) %>% bold_p(t = 0.10) %>% bold_labels() %>% italicize_levels() tbl_merge( list(UnivariantModel, MVOR), tab_spanner = c("**Univariable**", "**Multivariable**") ) %>% bold_labels() %>% italicize_levels()
PreopXRT OddsRatio
# Important packages to load in library(dplyr) library(gtsummary) library(survival) library(labelled) library(tidyverse) library(broom) library(ggplot2) library(survminer) ### Intention to Treat MIS vs Open ## Importing data in to Rstudio below Importin csv getwd() PreopNeoPaper <- read.csv ("PreoppaperFinal.csv", header = TRUE, sep = "," ) #### Subsetting cleaned data from one dataframe to a new dataframe PreopNeoPaperDemotable <- PreopNeoPaper %>% select(Single.vs.Multi.Agent, AGE, SEX, RACE.2, INSURANCE_STATUS.2, MED_INC_QUAR_12, NO_HSD_QUAR_12, Population.density, Charlson.Deyo.Score, TNM_CLIN_T, TNM_CLIN_N, TNM_PATH_T, TNM_PATH_N, ANALYTIC_STAGE_GROUP, GRADE.2, RX_SUMM_SURG_PRIM_SITE.2.2, Margins, Downstaging, DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS.2) PreopXRTOddsratio <- PreopNeoPaper %>% select(Single.vs.Multi.Agent, AGE, SEX, RACE.2, INSURANCE_STATUS.2, MED_INC_QUAR_12, NO_HSD_QUAR_12, Population.density, Charlson.Deyo.Score, TNM_CLIN_T, TNM_CLIN_N, TNM_PATH_T, TNM_PATH_N, ANALYTIC_STAGE_GROUP, GRADE.2, RX_SUMM_SURG_PRIM_SITE.2.2, Margins, Downstaging, DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS.2) #Final Step to create demographic table PreopNeoPaperDemotable %>% tbl_summary( by = Single.vs.Multi.Agent, digits = all_continuous() ~ 2,) %>% add_p(pvalue_fun = ~style_pvalue(.x, digits = 2))%>% bold_p() %>% add_overall() %>% modify_header(label ~ "**Variables**") %>% modify_spanning_header(c("stat_0", "stat_1") ~ "**Neo Multiagent vs Preop XRT**") %>% bold_labels() ### Recoding No High School degree from blanks to unknown PreopNeoPaper$NO_HSD_QUAR_12[PreopNeoPaper$NO_HSD_QUAR_12 ==""] <- "Unknown" ##Recoding Data within TNM Clin T PreopNeoPaper$TNM_CLIN_T[PreopNeoPaper$TNM_CLIN_T ==""] <- "Unknown" PreopNeoPaper$TNM_CLIN_T[PreopNeoPaper$TNM_CLIN_T =="c0"] <- "Unknown" PreopNeoPaper$TNM_CLIN_T[PreopNeoPaper$TNM_CLIN_T == "cX"] <- "Unknown" ##Recoding Data within TNM Clin N PreopNeoPaper$TNM_CLIN_N[PreopNeoPaper$TNM_CLIN_N ==""] <- "Unknown" PreopNeoPaper$TNM_CLIN_N[PreopNeoPaper$TNM_CLIN_N == "cX"] <- "Unknown" ##Recoding Data within TNM Path T PreopNeoPaper$TNM_PATH_T[PreopNeoPaper$TNM_PATH_T ==""] <- "Unknown" PreopNeoPaper$TNM_PATH_T[PreopNeoPaper$TNM_PATH_T =="pIS"] <- "Unknown" PreopNeoPaper$TNM_PATH_T[PreopNeoPaper$TNM_PATH_T == "pX"] <- "Unknown" ##Recoding Data within TNM Path N PreopNeoPaper$TNM_PATH_N[PreopNeoPaper$TNM_PATH_N ==""] <- "Unknown" PreopNeoPaper$TNM_PATH_N[PreopNeoPaper$TNM_PATH_N =="pX"] <- "Unknown" ##Recoding Analytical Stages removing Stage IV patients PreopNeoPaper$ANALYTIC_STAGE_GROUP[PreopNeoPaper$ANALYTIC_STAGE_GROUP == "AJCC Stage Group unknown"] <- "Unknown" ##Recoding income PreopNeoPaper$MED_INC_QUAR_12[PreopNeoPaper$MED_INC_QUAR_12 == ""] <- "Unknown" ###Labeling Columns for MISvsMISConversionNCDBDemographicTable var_label(PreopNeoPaperDemotable$DX_LASTCONTACT_DEATH_MONTHS) <- "Median Survival" var_label(PreopNeoPaperDemotable$PUF_VITAL_STATUS.2) <- "Vital Status" ##View the data print(PreopNeoPaper$Single.vs.Multi.Agent) #Recode Preop XRT = 1 NeoAdjuvant multiagent= 0 PreopNeoPaper$Single.vs.Multi.Agent[PreopNeoPaper$Single.vs.Multi.Agent == "Pre Op XRT" ] <- 1 PreopNeoPaper$Single.vs.Multi.Agent[PreopNeoPaper$Single.vs.Multi.Agent =="PreOp Multiagent"] <- 0 ###Recode preop XRT and Neoadjuvant column back to original PreopXRTOddsratio$Single.vs.Multi.Agent[PreopXRTOddsratio$Single.vs.Multi.Agent == 1 ] <- "Pre Op XRT" PreopXRTOddsratio$Single.vs.Multi.Agent[PreopXRTOddsratio$Single.vs.Multi.Agent == 0 ] <- "PreOp Multiagent" ###Create New columns for preopxrtoddsratio and neoadjuvant multiagent Neoadjoddsratio <- PreopXRTOddsratio %>% mutate(PreopXRTOddsratio, NeoMultiAgent = ifelse(Single.vs.Multi.Agent == 1, 2, ifelse(Single.vs.Multi.Agent == 0 , 1, 100))) ## Neoadjoddsratio change 2 to become the nonevent Neoadjoddsratio$NeoMultiAgent[Neoadjoddsratio$NeoMultiAgent == 2] <- 0 ###Make Singlevsmultiagent column numeric PreopNeoPaper$Single.vs.Multi.Agent <- as.numeric(PreopNeoPaper$Single.vs.Multi.Agent) ### Preopxrtoddsratio recoding age to a <75 and >75, and 51-75 PreopXRTOddsratioB <- PreopXRTOddsratio %>% mutate(PreopXRTOddsratio, AgeB = ifelse(AGE > 75, ">75", ifelse(AGE < 51 , "<51", "51-75"))) #### recoding Unknowns to NA PreopxrtoddsratioB PreopXRTOddsratioB$INSURANCE_STATUS.2[PreopXRTOddsratioB$INSURANCE_STATUS.2 =="Unknown"] <- NA PreopXRTOddsratioB$MED_INC_QUAR_12[PreopXRTOddsratioB$MED_INC_QUAR_12 =="Unknown"] <- NA PreopXRTOddsratioB$NO_HSD_QUAR_12[PreopXRTOddsratioB$NO_HSD_QUAR_12 =="Unknown"] <- NA PreopXRTOddsratioB$Population.density[PreopXRTOddsratioB$Population.density =="Unknown"] <- NA PreopXRTOddsratioB$TNM_CLIN_T[PreopXRTOddsratioB$TNM_CLIN_T =="Unknown"] <- NA PreopXRTOddsratioB$TNM_CLIN_N[PreopXRTOddsratioB$TNM_CLIN_N =="Unknown"] <- NA PreopXRTOddsratioB$TNM_PATH_N[PreopXRTOddsratioB$TNM_PATH_N =="Unknown"] <- NA PreopXRTOddsratioB$ANALYTIC_STAGE_GROUP[PreopXRTOddsratioB$ANALYTIC_STAGE_GROUP =="Unknown"] <- NA PreopXRTOddsratioB$Margins[PreopXRTOddsratioB$Margins =="Unknown"] <- NA PreopXRTOddsratioB$GRADE.2[PreopXRTOddsratioB$GRADE.2 =="Unknown"] <- NA PreopXRTOddsratioB$Downstaging[PreopXRTOddsratioB$Downstaging =="Unknown"] <- NA #### recoding Unknowns to NA Neoadjoddsratio Neoadjoddsratio$INSURANCE_STATUS.2[Neoadjoddsratio$INSURANCE_STATUS.2 =="Unknown"] <- NA Neoadjoddsratio$MED_INC_QUAR_12[Neoadjoddsratio$MED_INC_QUAR_12 =="Unknown"] <- NA Neoadjoddsratio$NO_HSD_QUAR_12[Neoadjoddsratio$NO_HSD_QUAR_12 =="Unknown"] <- NA Neoadjoddsratio$Population.density[Neoadjoddsratio$Population.density =="Unknown"] <- NA Neoadjoddsratio$TNM_CLIN_T[Neoadjoddsratio$TNM_CLIN_T =="Unknown"] <- NA Neoadjoddsratio$TNM_CLIN_N[Neoadjoddsratio$TNM_CLIN_N =="Unknown"] <- NA Neoadjoddsratio$TNM_PATH_N[Neoadjoddsratio$TNM_PATH_N =="Unknown"] <- NA Neoadjoddsratio$ANALYTIC_STAGE_GROUP[Neoadjoddsratio$ANALYTIC_STAGE_GROUP =="Unknown"] <- NA Neoadjoddsratio$Margins[Neoadjoddsratio$Margins =="Unknown"] <- NA Neoadjoddsratio$GRADE.2[Neoadjoddsratio$GRADE.2 =="Unknown"] <- NA Neoadjoddsratio$Downstaging[Neoadjoddsratio$Downstaging =="Unknown"] <- NA ##Univariant Model PreopxrtdOddsratio UnivariantModel <- PreopXRTOddsratioB %>% select(Single.vs.Multi.Agent, AgeB, RACE.2, INSURANCE_STATUS.2, MED_INC_QUAR_12, NO_HSD_QUAR_12, Population.density, Charlson.Deyo.Score, TNM_CLIN_T, TNM_CLIN_N, TNM_PATH_T, TNM_PATH_N, ANALYTIC_STAGE_GROUP, Margins, GRADE.2, RX_SUMM_SURG_PRIM_SITE.2.2, Downstaging) %>% tbl_uvregression( method = glm, y = Single.vs.Multi.Agent, method.args = list(family = binomial), exponentiate = TRUE, pvalue_fun = ~style_pvalue(.x, digits = 2) ) %>% bold_p(t = 0.10) %>% bold_labels() %>% italicize_levels() ####Univariant Model Neomultiagent UnivariantModel <- Neoadjoddsratio %>% select(NeoMultiAgent, AgeB, RACE.2, INSURANCE_STATUS.2, MED_INC_QUAR_12, NO_HSD_QUAR_12, Population.density, Charlson.Deyo.Score, TNM_CLIN_T, TNM_CLIN_N, TNM_PATH_T, TNM_PATH_N, ANALYTIC_STAGE_GROUP, Margins, GRADE.2, RX_SUMM_SURG_PRIM_SITE.2.2, Downstaging) %>% tbl_uvregression( method = glm, y = NeoMultiAgent, method.args = list(family = binomial), exponentiate = TRUE, pvalue_fun = ~style_pvalue(.x, digits = 2) ) %>% bold_p(t = 0.10) %>% bold_labels() %>% italicize_levels() ####Multivariant analysis preopxrt MVOR <- glm(Single.vs.Multi.Agent ~ AgeB + RACE.2 + INSURANCE_STATUS.2 + MED_INC_QUAR_12 + NO_HSD_QUAR_12 + Population.density + Charlson.Deyo.Score + TNM_CLIN_T + TNM_PATH_T + TNM_PATH_N + ANALYTIC_STAGE_GROUP + Margins + Downstaging, data = PreopXRTOddsratioB, family = binomial("logit"), na.action =na.omit ) ###mutlivariant neomultiageent MVOR <- glm(NeoMultiAgent ~ AgeB + RACE.2 + INSURANCE_STATUS.2 + MED_INC_QUAR_12 + NO_HSD_QUAR_12 + Population.density + Charlson.Deyo.Score + TNM_CLIN_T + TNM_PATH_T + TNM_PATH_N + ANALYTIC_STAGE_GROUP + Margins + Downstaging, data = Neoadjoddsratio, family = binomial("logit"), na.action =na.omit ) MVOR <- tbl_regression(MVOR, exponentiate = T, pvalue_fun = ~style_pvalue(.x, digits = 2), ) %>% bold_p(t = 0.10) %>% bold_labels() %>% italicize_levels() tbl_merge( list(UnivariantModel, MVOR), tab_spanner = c("**Univariable**", "**Multivariable**") ) %>% bold_labels() %>% italicize_levels()
MIS vs Open Long Term Outcomes Demographic Table Best Version
# Important packages to load in library(dplyr) library(gtsummary) library(survival) library(labelled) library(tidyverse) library(broom) library(ggplot2) library(survminer) ### Intention to Treat MIS vs Open ## Importing data in to Rstudio below Importin csv getwd() NCDBOriginalData <- read.csv ("mohamed_ncdb.csv", header = TRUE, sep = "," ) ### Viewing the variables in each column print(NCDBOriginalData$RX_SUMM_SURG_PRIM_SITE.2.2) print(NCDBDistalPancreatectomy$RX_HOSP_SURG_APPR_2010) print(NCDBDistalPancreatectomy$ANALYTIC_STAGE_GROUP) print(NCDBDistalPancreatectomy$GRADE) ## Subsetting distal pancreatectomies NCDBDistalPancreatectomy <- subset(NCDBOriginalData, RX_SUMM_SURG_PRIM_SITE.2.2 == "Partial pancreatectomy, distal") ### Recoding MIS vs MIS converted to open NCDBDistalPancreatectomy$RX_HOSP_SURG_APPR_2010[NCDBDistalPancreatectomy$RX_HOSP_SURG_APPR_2010 =="Open or approach unspecified"] <- "Open" NCDBDistalPancreatectomy$RX_HOSP_SURG_APPR_2010[NCDBDistalPancreatectomy$RX_HOSP_SURG_APPR_2010 =="Laparoscopic"] <- "MIS" NCDBDistalPancreatectomy$RX_HOSP_SURG_APPR_2010[NCDBDistalPancreatectomy$RX_HOSP_SURG_APPR_2010 =="Laparoscopic converted to open"] <- "MIS Converted to open" NCDBDistalPancreatectomy$RX_HOSP_SURG_APPR_2010[NCDBDistalPancreatectomy$RX_HOSP_SURG_APPR_2010 =="Robotic assisted"] <- "MIS" ##Recoding Data within Columns Facility Location NCDBDistalPancreatectomy$FACILITY_LOCATION_CD[NCDBDistalPancreatectomy$FACILITY_LOCATION_CD =="New England"] <- "NorthEast" NCDBDistalPancreatectomy$FACILITY_LOCATION_CD[NCDBDistalPancreatectomy$FACILITY_LOCATION_CD =="New England"] <- "NorthEast" NCDBDistalPancreatectomy$FACILITY_LOCATION_CD[NCDBDistalPancreatectomy$FACILITY_LOCATION_CD =="Middle Atlantic"] <- "NorthEast" NCDBDistalPancreatectomy$FACILITY_LOCATION_CD[NCDBDistalPancreatectomy$FACILITY_LOCATION_CD =="New England"] <- "NorthEast" NCDBDistalPancreatectomy$FACILITY_LOCATION_CD[NCDBDistalPancreatectomy$FACILITY_LOCATION_CD =="New England"] <- "NorthEast" NCDBDistalPancreatectomy$FACILITY_LOCATION_CD[NCDBDistalPancreatectomy$FACILITY_LOCATION_CD =="East North Central"] <- "Midwest" NCDBDistalPancreatectomy$FACILITY_LOCATION_CD[NCDBDistalPancreatectomy$FACILITY_LOCATION_CD =="East South Central"] <- "South" NCDBDistalPancreatectomy$FACILITY_LOCATION_CD[NCDBDistalPancreatectomy$FACILITY_LOCATION_CD =="Mountain"] <- "West" NCDBDistalPancreatectomy$FACILITY_LOCATION_CD[NCDBDistalPancreatectomy$FACILITY_LOCATION_CD =="South Atlantic"] <- "South" NCDBDistalPancreatectomy$FACILITY_LOCATION_CD[NCDBDistalPancreatectomy$FACILITY_LOCATION_CD =="West South Central"] <- "South" NCDBDistalPancreatectomy$FACILITY_LOCATION_CD[NCDBDistalPancreatectomy$FACILITY_LOCATION_CD =="West North Central"] <- "Midwest" NCDBDistalPancreatectomy$FACILITY_LOCATION_CD[NCDBDistalPancreatectomy$FACILITY_LOCATION_CD =="Pacific"] <- "West" NCDBDistalPancreatectomy$FACILITY_LOCATION_CD[NCDBDistalPancreatectomy$FACILITY_LOCATION_CD ==""] <- NA print(NCDBDistalPancreatectomy$FACILITY_LOCATION_CD) ###Recoding Data within income NCDBDistalPancreatectomy$MED_INC_QUAR_12[NCDBDistalPancreatectomy$MED_INC_QUAR_12 ==""] <- NA ###recoding data within no_hsd_quar_12 NCDBDistalPancreatectomy$NO_HSD_QUAR_12[NCDBDistalPancreatectomy$NO_HSD_QUAR_12 ==""] <- NA ##Recoding Data within Columns Population Density NCDBDistalPancreatectomy$UR_CD_13[NCDBDistalPancreatectomy$UR_CD_13 =="Urban population of 2,500 to 19,999, adjacent to a metro area"] <- "Urban" NCDBDistalPancreatectomy$UR_CD_13[NCDBDistalPancreatectomy$UR_CD_13 =="Counties in metro areas of 250,000 to 1 million population"] <- "Metro" NCDBDistalPancreatectomy$UR_CD_13[NCDBDistalPancreatectomy$UR_CD_13 =="Counties in metro areas of 1 million population or more"] <- "Metro" NCDBDemographicTable$UR_CD_13[NCDBDemographicTable$UR_CD_13 =="Completely rural or less than 2,500 urban population, not adjacent to a metro area"] <- "Rural" NCDBDistalPancreatectomy$UR_CD_13[NCDBDistalPancreatectomy$UR_CD_13 =="Counties in metro areas of fewer than 250,000 population"] <- "Metro" NCDBDistalPancreatectomy$UR_CD_13[NCDBDistalPancreatectomy$UR_CD_13 =="Urban population of 2,500 to 19,999, not adjacent to a metro area"] <- "Urban" NCDBDistalPancreatectomy$UR_CD_13[NCDBDistalPancreatectomy$UR_CD_13 =="Completely rural or less than 2,500 urban population, adjacent to a metro area"] <- "Rural" NCDBDistalPancreatectomy$UR_CD_13[NCDBDistalPancreatectomy$UR_CD_13 =="Urban population of 20,000 or more not adjacent to a metro area"] <- "Urban" NCDBDistalPancreatectomy$UR_CD_13[NCDBDistalPancreatectomy$UR_CD_13 =="Completely rural or less than 2,500 urban population, not adjacent to a metro area"] <- "Urban" NCDBDistalPancreatectomy$UR_CD_13[NCDBDistalPancreatectomy$UR_CD_13 ==""] <- NA ## recoding data within columns vital status NCDBDistalPancreatectomy$PUF_VITAL_STATUS[NCDBDistalPancreatectomy$PUF_VITAL_STATUS ==""] <- NA ##Recoding Analytical Stages removing Stage IV patients NCDBDistalPancreatectomy$ANALYTIC_STAGE_GROUP[NCDBDistalPancreatectomy$ANALYTIC_STAGE_GROUP == "Stage IV"] <- NA NCDBDistalPancreatectomy$ANALYTIC_STAGE_GROUP[NCDBDistalPancreatectomy$ANALYTIC_STAGE_GROUP == "AJCC Stage Group unknown"] <- "Unknown" NCDBDistalPancreatectomy$ANALYTIC_STAGE_GROUP[NCDBDistalPancreatectomy$ANALYTIC_STAGE_GROUP == "AJCC Staging not applicable"] <- "Unknown" NCDBDistalPancreatectomy$ANALYTIC_STAGE_GROUP[NCDBDistalPancreatectomy$ANALYTIC_STAGE_GROUP == "Unknown"] <- NA ### Recoding data in Tumor Grade Column NCDBDistalPancreatectomy$GRADE[NCDBDistalPancreatectomy$GRADE =="Cell type not determined, not stated or not applicable, unknown primaries, high grade dysplasia"] <- "Unknown" NCDBDistalPancreatectomy$GRADE[NCDBDistalPancreatectomy$GRADE =="Undifferentiated, anaplastic"] <- "Undifferentiated" NCDBDistalPancreatectomy$GRADE[NCDBDistalPancreatectomy$GRADE =="Moderately differentiated, moderately well differentiated, intermediate differentiation"] <- "Moderately differentiated" NCDBDistalPancreatectomy$GRADE[NCDBDistalPancreatectomy$GRADE =="Well differentiated, differentiated, NOS"] <- "Well differentiated" ###recode the surgical approach and make MIS converted to Open the same as MIS just before subsetting MIS and Open into new dataframe NCDBDistalPancreatectomy$RX_HOSP_SURG_APPR_2010[NCDBDistalPancreatectomy$RX_HOSP_SURG_APPR_2010 =="MIS Converted to open"] <- "MIS" ###Subsetting MIS vs Conversion to MIS vs Open into one Dataframe ITTMISvsOpenNCDB <- subset(NCDBDistalPancreatectomy, RX_HOSP_SURG_APPR_2010 == "MIS" | RX_HOSP_SURG_APPR_2010 == "Mis Converted to open" | RX_HOSP_SURG_APPR_2010 == "Open") ##Subsetting MIS vs Conversion to MIS MISvsConversionNCDB <- subset(NCDBDistalPancreatectomy, RX_HOSP_SURG_APPR_2010 == "MIS" | RX_HOSP_SURG_APPR_2010 == "MIS Converted to open") #### Subsetting cleaned data from one dataframe to a new dataframe MISvsMISConversionNCDBDemographicTable <- MISvsConversionNCDB %>% select(RX_HOSP_SURG_APPR_2010, AGE, SEX, RACE.2, INSURANCE_STATUS.2, FACILITY_LOCATION_CD, MED_INC_QUAR_12, NO_HSD_QUAR_12, UR_CD_13, CDCC_TOTAL_BEST, ANALYTIC_STAGE_GROUP, GRADE, DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS) MISvsConversionvsOpenNCDBDemoTable <- ITTMISvsOpenNCDB %>% select(RX_HOSP_SURG_APPR_2010, AGE, SEX, RACE.2, INSURANCE_STATUS.2, FACILITY_LOCATION_CD, MED_INC_QUAR_12, NO_HSD_QUAR_12, UR_CD_13, CDCC_TOTAL_BEST, ANALYTIC_STAGE_GROUP, GRADE, DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS) ###Labeling Columns for MISvsCOnversionVsopenNCDBDemotable var_label(MISvsConversionvsOpenNCDBDemoTable$AGE) <- "Age" var_label(MISvsConversionvsOpenNCDBDemoTable$SEX) <- "Sex" var_label(MISvsConversionvsOpenNCDBDemoTable$RACE.2) <- "Race" var_label(MISvsConversionvsOpenNCDBDemoTable$SMOKE) <- "Smoker" var_label(MISvsConversionvsOpenNCDBDemoTable$INSURANCE_STATUS.2) <- "Insurance Status" var_label(MISvsConversionvsOpenNCDBDemoTable$FACILITY_LOCATION_CD) <- "Region" var_label(MISvsConversionvsOpenNCDBDemoTable$MED_INC_QUAR_12) <- "Income" var_label(MISvsConversionvsOpenNCDBDemoTable$NO_HSD_QUAR_12) <- "No High School Degree" var_label(MISvsConversionvsOpenNCDBDemoTable$CDCC_TOTAL_BEST) <- "Charlson-Deyo Disability Score" var_label(MISvsConversionvsOpenNCDBDemoTable$UR_CD_13) <- "Population" var_label(MISvsConversionvsOpenNCDBDemoTable$RX_HOSP_SURG_APPR_2010) <- "Surgery" var_label(MISvsConversionvsOpenNCDBDemoTable$ANALYTIC_STAGE_GROUP) <- "Staging" var_label(MISvsConversionvsOpenNCDBDemoTable$GRADE) <- "Tumor Grade" var_label(MISvsConversionvsOpenNCDBDemoTable$DX_LASTCONTACT_DEATH_MONTHS) <- "Median Survival" var_label(MISvsConversionvsOpenNCDBDemoTable$PUF_VITAL_STATUS) <- "Vital Status" ###Labeling Columns for MISvsMISConversionNCDBDemographicTable var_label(MISvsMISConversionNCDBDemographicTable$AGE) <- "Age" var_label(MISvsMISConversionNCDBDemographicTable$SEX) <- "Sex" var_label(MISvsMISConversionNCDBDemographicTable$RACE.2) <- "Race" var_label(MISvsMISConversionNCDBDemographicTable$SMOKE) <- "Smoker" var_label(MISvsMISConversionNCDBDemographicTable$INSURANCE_STATUS.2) <- "Insurance Status" var_label(MISvsMISConversionNCDBDemographicTable$FACILITY_LOCATION_CD) <- "Region" var_label(MISvsMISConversionNCDBDemographicTable$MED_INC_QUAR_12) <- "Income" var_label(MISvsMISConversionNCDBDemographicTable$NO_HSD_QUAR_12) <- "No High School Degree" var_label(MISvsMISConversionNCDBDemographicTable$CDCC_TOTAL_BEST) <- "Charlson-Deyo Disability Score" var_label(MISvsMISConversionNCDBDemographicTable$UR_CD_13) <- "Population" var_label(MISvsMISConversionNCDBDemographicTable$RX_HOSP_SURG_APPR_2010) <- "Surgery" var_label(MISvsMISConversionNCDBDemographicTable$ANALYTIC_STAGE_GROUP) <- "Staging" var_label(MISvsMISConversionNCDBDemographicTable$GRADE) <- "Tumor Grade" var_label(MISvsMISConversionNCDBDemographicTable$DX_LASTCONTACT_DEATH_MONTHS) <- "Median Survival" var_label(MISvsMISConversionNCDBDemographicTable$PUF_VITAL_STATUS) <- "Vital Status" ##As.factor misvsmisconversionncdbdemographictable MISvsMISConversionNCDBDemographicTable <- as.factor(MISvsMISConversionNCDBDemographicTable) #Final Step to create demographic table MISvsConversionvsOpenNCDBDemoTable %>% tbl_summary( by = RX_HOSP_SURG_APPR_2010, digits = all_continuous() ~ 2,) %>% add_p(pvalue_fun = ~style_pvalue(.x, digits = 2))%>% bold_p() %>% add_overall() %>% modify_header(label ~ "**Variables**") %>% modify_spanning_header(c("stat_0", "stat_1") ~ "**NCDB Long Term Outcomes**") %>% bold_labels()
MIS vs MIS converted to open Demographic Table NCDB Long Term Outcomes
# Important packages to load in library(dplyr) library(gtsummary) library(survival) library(labelled) library(tidyverse) library(broom) library(ggplot2) library(survminer) ### Intention to Treat MIS vs Open ## Importing data in to Rstudio below Importin csv getwd() NCDBOriginalData <- read.csv ("mohamed_ncdb.csv", header = TRUE, sep = "," ) ### Viewing the variables in each column print(NCDBOriginalData$RX_SUMM_SURG_PRIM_SITE.2.2) print(NCDBDistalPancreatectomy$RX_HOSP_SURG_APPR_2010) print(NCDBDistalPancreatectomy$ANALYTIC_STAGE_GROUP) print(NCDBDistalPancreatectomy$GRADE) ## Subsetting distal pancreatectomies NCDBDistalPancreatectomy <- subset(NCDBOriginalData, RX_SUMM_SURG_PRIM_SITE.2.2 == "Partial pancreatectomy, distal") ### Recoding MIS vs MIS converted to open NCDBDistalPancreatectomy$RX_HOSP_SURG_APPR_2010[NCDBDistalPancreatectomy$RX_HOSP_SURG_APPR_2010 =="Open or approach unspecified"] <- "Open" NCDBDistalPancreatectomy$RX_HOSP_SURG_APPR_2010[NCDBDistalPancreatectomy$RX_HOSP_SURG_APPR_2010 =="Laparoscopic"] <- "MIS" NCDBDistalPancreatectomy$RX_HOSP_SURG_APPR_2010[NCDBDistalPancreatectomy$RX_HOSP_SURG_APPR_2010 =="Laparoscopic converted to open"] <- "MIS Converted to open" NCDBDistalPancreatectomy$RX_HOSP_SURG_APPR_2010[NCDBDistalPancreatectomy$RX_HOSP_SURG_APPR_2010 =="Robotic assisted"] <- "MIS" ##Recoding Data within Columns Facility Location NCDBDistalPancreatectomy$FACILITY_LOCATION_CD[NCDBDistalPancreatectomy$FACILITY_LOCATION_CD =="New England"] <- "NorthEast" NCDBDistalPancreatectomy$FACILITY_LOCATION_CD[NCDBDistalPancreatectomy$FACILITY_LOCATION_CD =="New England"] <- "NorthEast" NCDBDistalPancreatectomy$FACILITY_LOCATION_CD[NCDBDistalPancreatectomy$FACILITY_LOCATION_CD =="Middle Atlantic"] <- "NorthEast" NCDBDistalPancreatectomy$FACILITY_LOCATION_CD[NCDBDistalPancreatectomy$FACILITY_LOCATION_CD =="New England"] <- "NorthEast" NCDBDistalPancreatectomy$FACILITY_LOCATION_CD[NCDBDistalPancreatectomy$FACILITY_LOCATION_CD =="New England"] <- "NorthEast" NCDBDistalPancreatectomy$FACILITY_LOCATION_CD[NCDBDistalPancreatectomy$FACILITY_LOCATION_CD =="East North Central"] <- "Midwest" NCDBDistalPancreatectomy$FACILITY_LOCATION_CD[NCDBDistalPancreatectomy$FACILITY_LOCATION_CD =="East South Central"] <- "South" NCDBDistalPancreatectomy$FACILITY_LOCATION_CD[NCDBDistalPancreatectomy$FACILITY_LOCATION_CD =="Mountain"] <- "West" NCDBDistalPancreatectomy$FACILITY_LOCATION_CD[NCDBDistalPancreatectomy$FACILITY_LOCATION_CD =="South Atlantic"] <- "South" NCDBDistalPancreatectomy$FACILITY_LOCATION_CD[NCDBDistalPancreatectomy$FACILITY_LOCATION_CD =="West South Central"] <- "South" NCDBDistalPancreatectomy$FACILITY_LOCATION_CD[NCDBDistalPancreatectomy$FACILITY_LOCATION_CD =="West North Central"] <- "Midwest" NCDBDistalPancreatectomy$FACILITY_LOCATION_CD[NCDBDistalPancreatectomy$FACILITY_LOCATION_CD =="Pacific"] <- "West" NCDBDistalPancreatectomy$FACILITY_LOCATION_CD[NCDBDistalPancreatectomy$FACILITY_LOCATION_CD ==""] <- NA print(NCDBDistalPancreatectomy$FACILITY_LOCATION_CD) ###Recoding Data within income NCDBDistalPancreatectomy$MED_INC_QUAR_12[NCDBDistalPancreatectomy$MED_INC_QUAR_12 ==""] <- NA ###recoding data within no_hsd_quar_12 NCDBDistalPancreatectomy$NO_HSD_QUAR_12[NCDBDistalPancreatectomy$NO_HSD_QUAR_12 ==""] <- NA ##Recoding Data within Columns Population Density NCDBDistalPancreatectomy$UR_CD_13[NCDBDistalPancreatectomy$UR_CD_13 =="Urban population of 2,500 to 19,999, adjacent to a metro area"] <- "Urban" NCDBDistalPancreatectomy$UR_CD_13[NCDBDistalPancreatectomy$UR_CD_13 =="Counties in metro areas of 250,000 to 1 million population"] <- "Metro" NCDBDistalPancreatectomy$UR_CD_13[NCDBDistalPancreatectomy$UR_CD_13 =="Counties in metro areas of 1 million population or more"] <- "Metro" NCDBDemographicTable$UR_CD_13[NCDBDemographicTable$UR_CD_13 =="Completely rural or less than 2,500 urban population, not adjacent to a metro area"] <- "Rural" NCDBDistalPancreatectomy$UR_CD_13[NCDBDistalPancreatectomy$UR_CD_13 =="Counties in metro areas of fewer than 250,000 population"] <- "Metro" NCDBDistalPancreatectomy$UR_CD_13[NCDBDistalPancreatectomy$UR_CD_13 =="Urban population of 2,500 to 19,999, not adjacent to a metro area"] <- "Urban" NCDBDistalPancreatectomy$UR_CD_13[NCDBDistalPancreatectomy$UR_CD_13 =="Completely rural or less than 2,500 urban population, adjacent to a metro area"] <- "Rural" NCDBDistalPancreatectomy$UR_CD_13[NCDBDistalPancreatectomy$UR_CD_13 =="Urban population of 20,000 or more not adjacent to a metro area"] <- "Urban" NCDBDistalPancreatectomy$UR_CD_13[NCDBDistalPancreatectomy$UR_CD_13 =="Completely rural or less than 2,500 urban population, not adjacent to a metro area"] <- "Urban" NCDBDistalPancreatectomy$UR_CD_13[NCDBDistalPancreatectomy$UR_CD_13 ==""] <- NA ## recoding data within columns vital status NCDBDistalPancreatectomy$PUF_VITAL_STATUS[NCDBDistalPancreatectomy$PUF_VITAL_STATUS ==""] <- NA ##Recoding Analytical Stages removing Stage IV patients NCDBDistalPancreatectomy$ANALYTIC_STAGE_GROUP[NCDBDistalPancreatectomy$ANALYTIC_STAGE_GROUP == "Stage IV"] <- NA NCDBDistalPancreatectomy$ANALYTIC_STAGE_GROUP[NCDBDistalPancreatectomy$ANALYTIC_STAGE_GROUP == "AJCC Stage Group unknown"] <- "Unknown" NCDBDistalPancreatectomy$ANALYTIC_STAGE_GROUP[NCDBDistalPancreatectomy$ANALYTIC_STAGE_GROUP == "AJCC Staging not applicable"] <- "Unknown" NCDBDistalPancreatectomy$ANALYTIC_STAGE_GROUP[NCDBDistalPancreatectomy$ANALYTIC_STAGE_GROUP == "Unknown"] <- NA ### Recoding data in Tumor Grade Column NCDBDistalPancreatectomy$GRADE[NCDBDistalPancreatectomy$GRADE =="Cell type not determined, not stated or not applicable, unknown primaries, high grade dysplasia"] <- "Unknown" NCDBDistalPancreatectomy$GRADE[NCDBDistalPancreatectomy$GRADE =="Undifferentiated, anaplastic"] <- "Undifferentiated" NCDBDistalPancreatectomy$GRADE[NCDBDistalPancreatectomy$GRADE =="Moderately differentiated, moderately well differentiated, intermediate differentiation"] <- "Moderately differentiated" NCDBDistalPancreatectomy$GRADE[NCDBDistalPancreatectomy$GRADE =="Well differentiated, differentiated, NOS"] <- "Well differentiated" ###Subsetting MIS vs Conversion to MIS vs Open into one Dataframe MISvsConversionvsOpenNCDB <- subset(NCDBDistalPancreatectomy, RX_HOSP_SURG_APPR_2010 == "MIS" | RX_HOSP_SURG_APPR_2010 == "Mis Converted to open" | RX_HOSP_SURG_APPR_2010 == "Open") ##Subsetting MIS vs Conversion to MIS MISvsConversionNCDB <- subset(NCDBDistalPancreatectomy, RX_HOSP_SURG_APPR_2010 == "MIS" | RX_HOSP_SURG_APPR_2010 == "MIS Converted to open") #### Subsetting cleaned data from one dataframe to a new dataframe MISvsMISConversionNCDBDemographicTable <- MISvsConversionNCDB %>% select(RX_HOSP_SURG_APPR_2010, AGE, SEX, RACE.2, INSURANCE_STATUS.2, FACILITY_LOCATION_CD, MED_INC_QUAR_12, NO_HSD_QUAR_12, UR_CD_13, CDCC_TOTAL_BEST, ANALYTIC_STAGE_GROUP, GRADE, DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS) MISvsConversionvsOpenNCDBDemoTable <- MISvsConversionvsOpenNCDB %>% select(RX_HOSP_SURG_APPR_2010, AGE, SEX, RACE.2, INSURANCE_STATUS.2, FACILITY_LOCATION_CD, MED_INC_QUAR_12, NO_HSD_QUAR_12, UR_CD_13, CDCC_TOTAL_BEST, ANALYTIC_STAGE_GROUP, GRADE, DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS) ###Labeling Columns for MISvsCOnversionVsopenNCDBDemotable var_label(MISvsConversionvsOpenNCDBDemoTable$AGE) <- "Age" var_label(MISvsConversionvsOpenNCDBDemoTable$SEX) <- "Sex" var_label(MISvsConversionvsOpenNCDBDemoTable$RACE.2) <- "Race" var_label(MISvsConversionvsOpenNCDBDemoTable$SMOKE) <- "Smoker" var_label(MISvsConversionvsOpenNCDBDemoTable$INSURANCE_STATUS.2) <- "Insurance Status" var_label(MISvsConversionvsOpenNCDBDemoTable$FACILITY_LOCATION_CD) <- "Region" var_label(MISvsConversionvsOpenNCDBDemoTable$MED_INC_QUAR_12) <- "Income" var_label(MISvsConversionvsOpenNCDBDemoTable$NO_HSD_QUAR_12) <- "No High School Degree" var_label(MISvsConversionvsOpenNCDBDemoTable$CDCC_TOTAL_BEST) <- "Charlson-Deyo Disability Score" var_label(MISvsConversionvsOpenNCDBDemoTable$UR_CD_13) <- "Population" var_label(MISvsConversionvsOpenNCDBDemoTable$RX_HOSP_SURG_APPR_2010) <- "Surgery" var_label(MISvsConversionvsOpenNCDBDemoTable$ANALYTIC_STAGE_GROUP) <- "Staging" var_label(MISvsConversionvsOpenNCDBDemoTable$GRADE) <- "Tumor Grade" var_label(MISvsConversionvsOpenNCDBDemoTable$DX_LASTCONTACT_DEATH_MONTHS) <- "Median Survival" var_label(MISvsConversionvsOpenNCDBDemoTable$PUF_VITAL_STATUS) <- "Vital Status" ###Labeling Columns for MISvsMISConversionNCDBDemographicTable var_label(MISvsMISConversionNCDBDemographicTable$AGE) <- "Age" var_label(MISvsMISConversionNCDBDemographicTable$SEX) <- "Sex" var_label(MISvsMISConversionNCDBDemographicTable$RACE.2) <- "Race" var_label(MISvsMISConversionNCDBDemographicTable$SMOKE) <- "Smoker" var_label(MISvsMISConversionNCDBDemographicTable$INSURANCE_STATUS.2) <- "Insurance Status" var_label(MISvsMISConversionNCDBDemographicTable$FACILITY_LOCATION_CD) <- "Region" var_label(MISvsMISConversionNCDBDemographicTable$MED_INC_QUAR_12) <- "Income" var_label(MISvsMISConversionNCDBDemographicTable$NO_HSD_QUAR_12) <- "No High School Degree" var_label(MISvsMISConversionNCDBDemographicTable$CDCC_TOTAL_BEST) <- "Charlson-Deyo Disability Score" var_label(MISvsMISConversionNCDBDemographicTable$UR_CD_13) <- "Population" var_label(MISvsMISConversionNCDBDemographicTable$RX_HOSP_SURG_APPR_2010) <- "Surgery" var_label(MISvsMISConversionNCDBDemographicTable$ANALYTIC_STAGE_GROUP) <- "Staging" var_label(MISvsMISConversionNCDBDemographicTable$GRADE) <- "Tumor Grade" var_label(MISvsMISConversionNCDBDemographicTable$DX_LASTCONTACT_DEATH_MONTHS) <- "Median Survival" var_label(MISvsMISConversionNCDBDemographicTable$PUF_VITAL_STATUS) <- "Vital Status" ##As.factor misvsmisconversionncdbdemographictable MISvsMISConversionNCDBDemographicTable <- as.factor(MISvsMISConversionNCDBDemographicTable) #Final Step to create demographic table MISvsMISConversionNCDBDemographicTable %>% tbl_summary( by = RX_HOSP_SURG_APPR_2010, digits = all_continuous() ~ 2,) %>% add_p(pvalue_fun = ~style_pvalue(.x, digits = 2))%>% bold_p() %>% add_overall() %>% modify_header(label ~ "**Variables**") %>% modify_spanning_header(c("stat_0", "stat_1") ~ "**NCDB Long Term Outcomes**") %>% bold_labels()
Covid Study Odds Ratio
UnivariantModel <- CovidOddsRatio %>% select(HospitalizedGreaterthan10, Diabetes.mellitus., COPD., Asthma.) %>% tbl_uvregression( method = glm, y = HospitalizedGreaterthan10, method.args = list(family = binomial), exponentiate = TRUE, pvalue_fun = ~style_pvalue(.x, digits = 2) ) %>% bold_p(t = 0.05) %>% bold_labels() %>% italicize_levels() var_label(CovidOddsRatio$Diabetes.mellitus.) <- "Diabetes Melitus" var_label(CovidOddsRatio$COPD.) <- "COPD" var_label(CovidOddsRatio$Asthma.) <- "Asthma"
CRPOPF vs amylase cutoff and day Demographic Table
FRS Score Demographic Table install.packages("datatable") library(dplyr) library(gtsummary) library(survival) library(labelled) library(tidyverse) library(broom) library(ggplot2) library(survminer) Importin csv getwd() DayPredictor <- read.csv ("Panfinal.csv", header = TRUE, sep = "," ) Final Code: library(IfElse) DayDemographic300 <- WhippleDayDemographicTable %>% select(Day, Age, SEX, RACE_NEW, BMI, Fistula.Grade, ASACLAS, PAN_DUCTSIZE, PAN_GLANDTEXT, AmylaseCutoff300DT, Amylasecutoff5000DT) str(FRSFUll$RACE_NEW) FRSFinal <- na.omit(FRSFUll) FRSFUll$BMI <- (FRSFUll$WEIGHT * 703) / (FRSFUll$HEIGHT * FRSFUll$HEIGHT) ?filter DayDemographic300 %>% tbl_summary( by = Fistula.Grade, statistic = all_continuous() ~ "{mean} ({sd})", digits = all_continuous() ~ 2,) %>% add_p(pvalue_fun = ~style_pvalue(.x, digits = 2)) %>% bold_p() %>% add_overall() %>% add_n() %>% modify_header(label ~ "**Variable**") %>% modify_spanning_header(c("stat_1", "stat_2") ~ "**Clinically Relevant Postoperative Pancreatic Fistula**") %>% bold_labels() %>% show_header_names() str(Sm_FRSFull) summary(FRSFUll$HXCOPD) print(FRSFUll$HXCOPD) FRSFUll$SMOKE <- as.factor(FRSFUll$SMOKE) as.numeric(FRSFUll$Age) DemographicTableDay5000$Day[DemographicTableDay5000$Day == "NA"] <- NA FRSFUll$BMI[FRSFUll$BMI == >24] <- ">24" FRSComplete <- Oddsratio2[Oddsratio2$Figure.3=="Neoadjuvant Multiagent Chemotherapy",] var_label(WhippleDemographicTable1$SEX) <- "Sex" var_label(WhippleDemographicTable1$Fistula.Grade) <- "Fistula" var_label(WhippleDemographicTable1$RACE_NEW) <- "Race" var_label(WhippleDemographicTable1$ASACLAS) <- "ASA Classification" var_label(DemographicTableDay$HYPERMED) <- "Hypertension" var_label(DemographicTableDay$DIABETES) <- "Diabetes" var_label(FRSFUll$ASCITES) <- "Ascites" var_label(FRSFUll$HXCHF) <- "Hx of CHF 30 Prior to Surgery" var_label(FRSFUll$BMI) <- "BMI" summary(FRSFUll$PAN_APPROACH) str(FRSFUll$PAN_APPROACH) print(FRSFUll$PAN_APPROACH) UnivariantModel <- FRSORDay %>% select(Fistula.Grade, Day) %>% tbl_uvregression( method = glm, y = Fistula.Grade, method.args = list(family = binomial), exponentiate = TRUE, pvalue_fun = ~style_pvalue(.x, digits = 2) ) %>% bold_p(t = 0.10) %>% bold_labels() %>% italicize_levels() MVOR <- glm(Fistula.Grade ~ day + AgeBetter + BMINew + NeoadjuvantXRT + Duct + Pathology + PAN_GLANDTEXT, data = FRSOddsRatio1, family = binomial("logit"), na.action =na.omit ) MVOR <- tbl_regression(MVOR, exponentiate = T, pvalue_fun = ~style_pvalue(.x, digits = 2), ) %>% bold_p(t = 0.10) %>% bold_labels() %>% italicize_levels() tbl_merge( list(UnivariantModel, MVOR), tab_spanner = c("**Univariable**", "**Multivariable**") ) %>% bold_labels() %>% italicize_levels() print(FRSFUll$PRNCPTX) ?filter str(FRSFUll) FRSOddsRatio1$Fistula.Grade <- as.numeric(FRSOddsRatio1$Fistula.Grade) FRSFUll %>% [BMI == >24] <- ">24" FRSFUll <- mutate(FRSFUll, BMINew = ifelse(BMI == >24 |BMI == )) ifelse(BMI >= >24, ">24","<24") oddsratio1 <- ifelse(FRSFUll$BMI >24, ">24", "<24") as.factor(FRSFUll$BMI) Oddsratio1 <- FRSFUll(ifelse(BMI, >24, ">24", "<24")) AgeCheck <- mutate(FRSFUll, AgeDoublecheck = ifelse(Age > 60, ">60", "<60")) FRSOddsRatioFinal <- mutate(FRSOddsRatio1, Pathology = ifelse(Pathology1 = "Pancreatic adenocarcinoma", "Pancreatic adenocarcinoma", "Other")) sum(is.na(Oddsratio3$AmylaseDrainPod1)) str(FRSOddsRatio1$AgeBetter) sum(is.na(FRSOddsRatio1$AgeBetter)) FRSORDay$Day[FRSORDay$Day =="Other"] <- NA FRSOddsRatio2 <- mutate(FRSOddsRatio1, Pathology1 = ifelse(Pathology ==Pancreatic adenocarcinoma, "Pancreatic adenocarcinoma", "Other")) FRSOddsRatio1 <- cbind(FRSOddsRatio1, BMI = FRSFUll$PAN_RADIO) FRSOddsRatio1$Fistula.Grade <- as.numeric(FRSOddsRatio1$Fistula.Grade) print(FRSOddsRatio1$Pathology) barplot(FRSOddsRatio1$Pathology) chartr(FRSOddsRatio1$Pathology) graphics::FRSOddsRatio1$Pathology hist(FRSFUll$DAMYLASE) WhippleDayDemographicTable <- mutate(WhippleDayDemographicTable, Day = ifelse(DAMYLASE %in% 3:5, "3-5", ifelse(DAMYLASE %in% 1, "1", ifelse(DAMYLASE %in% 0, NA, ">5")))) WhippleDemographicTable2 <- mutate(WhippleDemographicTable1, AmylaseCutoff300DT = ifelse(peak_amylase > 300, ">300", "<300")) WhippleDemographicTable <- mutate(WhippleDemographicTable2, Amylasecutoff5000DT = ifelse(peak_amylase > 5000, ">5000", "<5000")) WhippleDayDemographicTable <- mutate(WhippleDayDemographicTable, FistulaGradeBinary = ifelse(Fistula.Grade =="No CR-POPF", 0, ifelse(Fistula.Grade =="CR-POPF", 1, "NA"))) remove(WhippleDayDemographicTable1) WhippleDemographicTable %>% mutate(peak_amylase = ifelse(DAMYLASE == 1, PAN_AMYLASE_POD1, PAN_AMYLASE_POD230)) %>% ggplot(aes(x = DAMYLASE, y = peak_amylase)) + geom_point() print(FRSOddsRatio1$Fistula.Grade) FRSOddsRatio1$Fistula.Grade <- as.numeric(FRSOddsRatio1$Fistula.Grade) FRSORDay <- cbind(FRSOddsRatio1, Day = FRSOddsRatio2$Day) print(FRSFUll$CPT) sum(FRSFUll$CPT == 48150) WhippleDemographicTable <- subset(FRSFUll, CPT == "48150" | CPT == "48152") WhippleDemographicTable <- WhippleDemographicTable %>% mutate(peak_amylase = ifelse(DAMYLASE == 1, PAN_AMYLASE_POD1, PAN_AMYLASE_POD230)) sum(WhippleDemographicTable1$peak_amylase ==1) Oddsratio3 remove(WhippleDemographicTable2)
Odds Ratio CR-POPF By day with a patient group with >5000 Amylase Cutoff
FRS Score Demographic Table install.packages("datatable") library(dplyr) library(gtsummary) library(survival) library(labelled) library(tidyverse) library(broom) library(ggplot2) library(survminer) Importin csv getwd() DayPredictor <- read.csv ("Panfinal.csv", header = TRUE, sep = "," ) Final Code: library(IfElse) DemographicTableDay5000 <- DemographicTableDay %>% select(Day, Age, SEX, RACE_NEW, BMI, Fistula.Grade, ASACLAS, Amylasecutoff5000) str(FRSFUll$RACE_NEW) FRSFinal <- na.omit(FRSFUll) FRSFUll$BMI <- (FRSFUll$WEIGHT * 703) / (FRSFUll$HEIGHT * FRSFUll$HEIGHT) ?filter DemographicTableDay5000 %>% tbl_summary( by = Amylasecutoff5000, statistic = all_continuous() ~ "{mean} ({sd})", digits = all_continuous() ~ 2,) %>% add_p(pvalue_fun = ~style_pvalue(.x, digits = 2)) %>% bold_p() %>% add_overall() %>% add_n() %>% modify_header(label ~ "**Variable**") %>% modify_spanning_header(c("stat_1", "stat_2") ~ "**Amylase Cutoff 5,000**") %>% bold_labels() %>% show_header_names() str(Sm_FRSFull) summary(FRSFUll$HXCOPD) print(FRSFUll$HXCOPD) FRSFUll$SMOKE <- as.factor(FRSFUll$SMOKE) as.numeric(FRSFUll$Age) DemographicTableDay$Fistula.Grade[DemographicTableDay$Fistula.Grade == "No CR-POPF"] <- 0 OddsRatioDay300$RACE_NEW[OddsRatioDay300$RACE_NEW == "Unknown"] <- NA OddsRatioDay300$ASACLAS[OddsRatioDay300$ASACLAS == "5-Moribund"] <- NA OddsRatioDay300$ASACLAS[OddsRatioDay300$ASACLAS == "None assigned"] <- NA FRSFUll$BMI[FRSFUll$BMI == >24] <- ">24" OddsRatioDayPredictor <- DemographicTableDay[DemographicTableDay$Fistula.Grade=="Neoadjuvant Multiagent Chemotherapy",] var_label(DemographicTableDay$SEX) <- "Sex" var_label(DemographicTableDay$Fistula.Grade) <- "Fistula" var_label(DemographicTableDay$RACE_NEW) <- "Race" var_label(DemographicTableDay$ASACLAS) <- "ASA Classification" var_label(DemographicTableDay$HYPERMED) <- "Hypertension" var_label(DemographicTableDay$DIABETES) <- "Diabetes" var_label(FRSFUll$ASCITES) <- "Ascites" var_label(FRSFUll$HXCHF) <- "Hx of CHF 30 Prior to Surgery" var_label(FRSFUll$BMI) <- "BMI" summary(FRSFUll$PAN_APPROACH) str(FRSFUll$PAN_APPROACH) print(FRSFUll$PAN_APPROACH) UnivariantModel <- OddsRatioDay5000 %>% select(FistulaGradeBinary, Day, Agec, SEX, RACE_NEW, BMIC, DuctSize, PAN_GLANDTEXT, ASACLAS) %>% tbl_uvregression( method = glm, y = FistulaGradeBinary, method.args = list(family = binomial), exponentiate = TRUE, pvalue_fun = ~style_pvalue(.x, digits = 2)) %>% bold_p(t = 0.10) %>% bold_labels() %>% italicize_levels() MVOR <- glm(FistulaGradeBinary ~ Day + Agec + SEX + RACE_NEW + BMIC + ASACLAS, data = OddsRatioDay5000, family = binomial("logit"), na.action =na.omit ) OddsRatioDay300$ASACLAS <- as.factor(OddsRatioDay300$ASACLAS) MVOR <- tbl_regression(MVOR, exponentiate = T, pvalue_fun = ~style_pvalue(.x, digits = 2), ) %>% bold_p(t = 0.05) %>% bold_labels() %>% italicize_levels() tbl_merge( list(UnivariantModel, MVOR), tab_spanner = c("**Univariable**", "**Multivariable**") ) %>% bold_labels() %>% italicize_levels() print(FRSFUll$PRNCPTX) ?filter str(FRSFUll) FRSOddsRatio1$Fistula.Grade <- as.numeric(FRSOddsRatio1$Fistula.Grade) FRSFUll %>% [BMI == >24] <- ">24" FRSFUll <- mutate(FRSFUll, BMINew = ifelse(BMI == >24 |BMI == )) ifelse(BMI >= >24, ">24","<24") oddsratio1 <- ifelse(FRSFUll$BMI >24, ">24", "<24") as.factor(FRSFUll$BMI) Oddsratio1 <- FRSFUll(ifelse(BMI, >24, ">24", "<24")) AgeCheck <- mutate(FRSFUll, AgeDoublecheck = ifelse(Age > 60, ">60", "<60")) FRSOddsRatioFinal <- mutate(FRSOddsRatio1, Pathology = ifelse(Pathology1 = "Pancreatic adenocarcinoma", "Pancreatic adenocarcinoma", "Other")) sum(is.na(Oddsratio3$AmylaseDrainPod1)) str(FRSOddsRatio1$AgeBetter) sum(is.na(FRSOddsRatio1$AgeBetter)) FRSORDay$Day[FRSORDay$Day =="Other"] <- NA FRSOddsRatio2 <- mutate(FRSOddsRatio1, Pathology1 = ifelse(Pathology ==Pancreatic adenocarcinoma, "Pancreatic adenocarcinoma", "Other")) FRSOddsRatio1 <- cbind(FRSOddsRatio1, BMI = FRSFUll$PAN_RADIO) DemographicTableDay$Fistula.Grade <- as.numeric(DemographicTableDay$Fistula.Grade) print(FRSOddsRatio1$Pathology) barplot(FRSOddsRatio1$Pathology) chartr(FRSOddsRatio1$Pathology) graphics::FRSOddsRatio1$Pathology hist(FRSFUll$DAMYLASE) WhippleDayDemographicTable <- mutate(WhippleDemographicTable, Day = ifelse(DAMYLASE %in% 3:5, "3-5", ifelse(DAMYLASE %in% 1, "1", ifelse(DAMYLASE %in% 0, "NA", ">5")))) WhippleDayDemographicTable1 <- mutate(WhippleDayDemographicTable, AmylaseCutoff300 = ifelse(peak_amylase > 300, ">300", "<300")) WhippleDayDemographicTable <- mutate(WhippleDayDemographicTable1, Amylasecutoff5000 = ifelse(peak_amylase > 5000, ">5000", "<5000")) remove(WhippleDayDemographicTable1) WhippleDemographicTable %>% mutate(peak_amylase = ifelse(DAMYLASE == 1, PAN_AMYLASE_POD1, PAN_AMYLASE_POD230)) %>% ggplot(aes(x = DAMYLASE, y = peak_amylase)) + geom_point() print(FRSOddsRatio1$Fistula.Grade) OddsRatioDay300$FistulaGradeBinary <- as.numeric(OddsRatioDay300$FistulaGradeBinary) FRSORDay <- cbind(FRSOddsRatio1, Day = FRSOddsRatio2$Day) print(FRSFUll$CPT) sum(FRSFUll$CPT == 48150) WhippleDemographicTable <- subset(FRSFUll, CPT == "48150" | CPT == "48152") WhippleDemographicTable <- WhippleDemographicTable %>% mutate(peak_amylase = ifelse(DAMYLASE == 1, PAN_AMYLASE_POD1, PAN_AMYLASE_POD230)) sum(WhippleDemographicTable1$peak_amylase ==1) Oddsratio3 remove(FRSFull1) OddsRatioDay5000 <- WhippleDayDemographicTable[WhippleDayDemographicTable$Amylasecutoff5000DT==">5000",] OddsRatioDay5000$Day[OddsRatioDay5000$Day == ">5"] <- NA var_label(OddsRatioDay5000$SEX) <- "Sex" var_label(OddsRatioDay5000$Fistula.Grade) <- "Fistula" var_label(OddsRatioDay5000$RACE_NEW) <- "Race" var_label(OddsRatioDay5000$ASACLAS) <- "ASA Classification" var_label(OddsRatioDay5000$PAN_DUCTSIZE) <- "Duct Size" var_label(OddsRatioDay5000$PAN_GLANDTEXT) <- "Gland Texture" OddsRatioDay5000$PAN_DUCTSIZE[OddsRatioDay5000$PAN_DUCTSIZE == "Unknown"] <- NA OddsRatioDay5000$PAN_GLANDTEXT[OddsRatioDay5000$PAN_GLANDTEXT == "Unknown"] <- NA OddsRatioDay5000$PAN_GLANDTEXT[OddsRatioDay5000$PAN_GLANDTEXT == "Intermediate"] <- NA OddsRatioDay5000$ASACLAS[OddsRatioDay5000$ASACLAS == "None assigned"] <- NA OddsRatioDay5000$ASACLAS[OddsRatioDay5000$ASACLAS == "5-Moribund"] <- NA OddsRatioDay5000 <- mutate(OddsRatioDay5000, Agec = ifelse(Age > 60, ">60", "<60")) OddsRatioDay5000 <- mutate(OddsRatioDay5000, BMIC = ifelse(BMI > 30, ">30", "<30")) OddsRatioDay5000 <- mutate(OddsRatioDay5000, DuctSize = ifelse(PAN_DUCTSIZE == "<3 mm", "<3 mm", ifelse(PAN_DUCTSIZE == "3-6 mm", ">3 mm", ifelse(PAN_DUCTSIZE == ">6 mm", ">3 mm", NA))))
Odds Ratio CR-POPF By day with a patient group with >300 Amylase Cutoff
FRS Score Demographic Table install.packages("datatable") library(dplyr) library(gtsummary) library(survival) library(labelled) library(tidyverse) library(broom) library(ggplot2) library(survminer) Importin csv getwd() DayPredictor <- read.csv ("Panfinal.csv", header = TRUE, sep = "," ) Final Code: library(IfElse) DemographicTableDay5000 <- DemographicTableDay %>% select(Day, Age, SEX, RACE_NEW, BMI, Fistula.Grade, ASACLAS, Amylasecutoff5000) str(FRSFUll$RACE_NEW) FRSFinal <- na.omit(FRSFUll) FRSFUll$BMI <- (FRSFUll$WEIGHT * 703) / (FRSFUll$HEIGHT * FRSFUll$HEIGHT) ?filter DemographicTableDay5000 %>% tbl_summary( by = Amylasecutoff5000, statistic = all_continuous() ~ "{mean} ({sd})", digits = all_continuous() ~ 2,) %>% add_p(pvalue_fun = ~style_pvalue(.x, digits = 2)) %>% bold_p() %>% add_overall() %>% add_n() %>% modify_header(label ~ "**Variable**") %>% modify_spanning_header(c("stat_1", "stat_2") ~ "**Amylase Cutoff 5,000**") %>% bold_labels() %>% show_header_names() str(Sm_FRSFull) summary(FRSFUll$HXCOPD) print(FRSFUll$HXCOPD) FRSFUll$SMOKE <- as.factor(FRSFUll$SMOKE) as.numeric(FRSFUll$Age) DemographicTableDay$Fistula.Grade[DemographicTableDay$Fistula.Grade == "No CR-POPF"] <- 0 OddsRatioDay300$RACE_NEW[OddsRatioDay300$RACE_NEW == "Unknown"] <- NA OddsRatioDay300$ASACLAS[OddsRatioDay300$ASACLAS == "5-Moribund"] <- NA OddsRatioDay300$ASACLAS[OddsRatioDay300$ASACLAS == "None assigned"] <- NA FRSFUll$BMI[FRSFUll$BMI == >24] <- ">24" OddsRatioDayPredictor <- DemographicTableDay[DemographicTableDay$Fistula.Grade=="Neoadjuvant Multiagent Chemotherapy",] var_label(DemographicTableDay$SEX) <- "Sex" var_label(DemographicTableDay$Fistula.Grade) <- "Fistula" var_label(DemographicTableDay$RACE_NEW) <- "Race" var_label(DemographicTableDay$ASACLAS) <- "ASA Classification" var_label(DemographicTableDay$HYPERMED) <- "Hypertension" var_label(DemographicTableDay$DIABETES) <- "Diabetes" var_label(FRSFUll$ASCITES) <- "Ascites" var_label(FRSFUll$HXCHF) <- "Hx of CHF 30 Prior to Surgery" var_label(FRSFUll$BMI) <- "BMI" summary(FRSFUll$PAN_APPROACH) str(FRSFUll$PAN_APPROACH) print(FRSFUll$PAN_APPROACH) UnivariantModel <- OddsRatioDay300 %>% select(FistulaGradeBinary, Day, Agec, SEX, RACE_NEW, BMIC, DuctSize, PAN_GLANDTEXT, ASACLAS) %>% tbl_uvregression( method = glm, y = FistulaGradeBinary, method.args = list(family = binomial), exponentiate = TRUE, pvalue_fun = ~style_pvalue(.x, digits = 2)) %>% bold_p(t = 0.10) %>% bold_labels() %>% italicize_levels() MVOR <- glm(FistulaGradeBinary ~ Day + Agec + SEX + RACE_NEW + BMIC + DuctSize + PAN_GLANDTEXT + ASACLAS, data = OddsRatioDay300, family = binomial("logit"), na.action =na.omit ) OddsRatioDay300$ASACLAS <- as.factor(OddsRatioDay300$ASACLAS) MVOR <- tbl_regression(MVOR, exponentiate = T, pvalue_fun = ~style_pvalue(.x, digits = 2), ) %>% bold_p(t = 0.05) %>% bold_labels() %>% italicize_levels() tbl_merge( list(UnivariantModel, MVOR), tab_spanner = c("**Univariable**", "**Multivariable**") ) %>% bold_labels() %>% italicize_levels() print(FRSFUll$PRNCPTX) ?filter str(FRSFUll) FRSOddsRatio1$Fistula.Grade <- as.numeric(FRSOddsRatio1$Fistula.Grade) FRSFUll %>% [BMI == >24] <- ">24" FRSFUll <- mutate(FRSFUll, BMINew = ifelse(BMI == >24 |BMI == )) ifelse(BMI >= >24, ">24","<24") oddsratio1 <- ifelse(FRSFUll$BMI >24, ">24", "<24") as.factor(FRSFUll$BMI) Oddsratio1 <- FRSFUll(ifelse(BMI, >24, ">24", "<24")) AgeCheck <- mutate(FRSFUll, AgeDoublecheck = ifelse(Age > 60, ">60", "<60")) FRSOddsRatioFinal <- mutate(FRSOddsRatio1, Pathology = ifelse(Pathology1 = "Pancreatic adenocarcinoma", "Pancreatic adenocarcinoma", "Other")) sum(is.na(Oddsratio3$AmylaseDrainPod1)) str(FRSOddsRatio1$AgeBetter) sum(is.na(FRSOddsRatio1$AgeBetter)) FRSORDay$Day[FRSORDay$Day =="Other"] <- NA FRSOddsRatio2 <- mutate(FRSOddsRatio1, Pathology1 = ifelse(Pathology ==Pancreatic adenocarcinoma, "Pancreatic adenocarcinoma", "Other")) FRSOddsRatio1 <- cbind(FRSOddsRatio1, BMI = FRSFUll$PAN_RADIO) DemographicTableDay$Fistula.Grade <- as.numeric(DemographicTableDay$Fistula.Grade) print(FRSOddsRatio1$Pathology) barplot(FRSOddsRatio1$Pathology) chartr(FRSOddsRatio1$Pathology) graphics::FRSOddsRatio1$Pathology hist(FRSFUll$DAMYLASE) WhippleDayDemographicTable <- mutate(WhippleDemographicTable, Day = ifelse(DAMYLASE %in% 3:5, "3-5", ifelse(DAMYLASE %in% 1, "1", ifelse(DAMYLASE %in% 0, "NA", ">5")))) WhippleDayDemographicTable1 <- mutate(WhippleDayDemographicTable, AmylaseCutoff300 = ifelse(peak_amylase > 300, ">300", "<300")) WhippleDayDemographicTable <- mutate(WhippleDayDemographicTable1, Amylasecutoff5000 = ifelse(peak_amylase > 5000, ">5000", "<5000")) remove(WhippleDayDemographicTable1) WhippleDemographicTable %>% mutate(peak_amylase = ifelse(DAMYLASE == 1, PAN_AMYLASE_POD1, PAN_AMYLASE_POD230)) %>% ggplot(aes(x = DAMYLASE, y = peak_amylase)) + geom_point() print(FRSOddsRatio1$Fistula.Grade) OddsRatioDay300$FistulaGradeBinary <- as.numeric(OddsRatioDay300$FistulaGradeBinary) FRSORDay <- cbind(FRSOddsRatio1, Day = FRSOddsRatio2$Day) print(FRSFUll$CPT) sum(FRSFUll$CPT == 48150) WhippleDemographicTable <- subset(FRSFUll, CPT == "48150" | CPT == "48152") WhippleDemographicTable <- WhippleDemographicTable %>% mutate(peak_amylase = ifelse(DAMYLASE == 1, PAN_AMYLASE_POD1, PAN_AMYLASE_POD230)) sum(WhippleDemographicTable1$peak_amylase ==1) Oddsratio3 remove(FRSFull1) OddsRatioDay300 <- WhippleDayDemographicTable[WhippleDayDemographicTable$AmylaseCutoff300DT==">300",] OddsRatioDay300$Day[OddsRatioDay300$Day == ">5"] <- NA var_label(OddsRatioDay300$SEX) <- "Sex" var_label(OddsRatioDay300$Fistula.Grade) <- "Fistula" var_label(OddsRatioDay300$RACE_NEW) <- "Race" var_label(OddsRatioDay300$ASACLAS) <- "ASA Classification" var_label(OddsRatioDay300$PAN_DUCTSIZE) <- "Duct Size" var_label(OddsRatioDay300$PAN_GLANDTEXT) <- "Gland Texture" OddsRatioDay300$PAN_DUCTSIZE[OddsRatioDay300$PAN_DUCTSIZE == "Unknown"] <- NA OddsRatioDay300$PAN_GLANDTEXT[OddsRatioDay300$PAN_GLANDTEXT == "Unknown"] <- NA OddsRatioDay300$PAN_GLANDTEXT[OddsRatioDay300$PAN_GLANDTEXT == "Intermediate"] <- NA OddsRatioDay300$ASACLAS[OddsRatioDay300$ASACLAS == "None assigned"] <- NA OddsRatioDay300 <- mutate(OddsRatioDay300, Agec = ifelse(Age > 60, ">60", "<60")) OddsRatioDay300 <- mutate(OddsRatioDay300, BMIC = ifelse(BMI > 30, ">30", "<30")) OddsRatioDay300 <- mutate(OddsRatioDay300, DuctSize = ifelse(PAN_DUCTSIZE == "<3 mm", "<3 mm", ifelse(PAN_DUCTSIZE == "3-6 mm", ">3 mm", ifelse(PAN_DUCTSIZE == ">6 mm", ">3 mm", NA)))) OddsRatioDay300 <- mutate(OddsRatioDay300, GlandText = ifelse(PAN_GLANDTEXT == "<3 mm", "<3 mm", ifelse(PAN_GLANDTEXT == "3-6 mm", ">3 mm", ifelse(PAN_GLANDTEXT == ">6 mm", ">3 mm", NA))))
Amylase Cutoff 5,000 Demographic Table
FRS Score Demographic Table install.packages("datatable") library(dplyr) library(gtsummary) library(survival) library(labelled) library(tidyverse) library(broom) library(ggplot2) library(survminer) Importin csv getwd() DayPredictor <- read.csv ("Panfinal.csv", header = TRUE, sep = "," ) Final Code: library(IfElse) DayDemographic5000 <- WhippleDayDemographicTable %>% select(AmylaseCutoff300DT, Day, Age, SEX, RACE_NEW, BMI, Fistula.Grade, ASACLAS, PAN_DUCTSIZE, PAN_GLANDTEXT) str(FRSFUll$RACE_NEW) FRSFinal <- na.omit(FRSFUll) FRSFUll$BMI <- (FRSFUll$WEIGHT * 703) / (FRSFUll$HEIGHT * FRSFUll$HEIGHT) ?filter DayDemographic5000 %>% tbl_summary( by = Amylasecutoff5000DT, statistic = all_continuous() ~ "{mean} ({sd})", digits = all_continuous() ~ 2,) %>% add_p(pvalue_fun = ~style_pvalue(.x, digits = 2)) %>% bold_p() %>% add_overall() %>% add_n() %>% modify_header(label ~ "**Variable**") %>% modify_spanning_header(c("stat_1", "stat_2") ~ "**Amylase cutoff**") %>% bold_labels() %>% show_header_names() str(Sm_FRSFull) summary(FRSFUll$HXCOPD) print(FRSFUll$HXCOPD) FRSFUll$SMOKE <- as.factor(FRSFUll$SMOKE) as.numeric(FRSFUll$Age) DemographicTableDay5000$Day[DemographicTableDay5000$Day == "NA"] <- NA FRSFUll$BMI[FRSFUll$BMI == >24] <- ">24" FRSComplete <- Oddsratio2[Oddsratio2$Figure.3=="Neoadjuvant Multiagent Chemotherapy",] var_label(WhippleDemographicTable1$SEX) <- "Sex" var_label(WhippleDemographicTable1$Fistula.Grade) <- "Fistula" var_label(WhippleDemographicTable1$RACE_NEW) <- "Race" var_label(WhippleDemographicTable1$ASACLAS) <- "ASA Classification" var_label(DemographicTableDay$HYPERMED) <- "Hypertension" var_label(DemographicTableDay$DIABETES) <- "Diabetes" var_label(FRSFUll$ASCITES) <- "Ascites" var_label(FRSFUll$HXCHF) <- "Hx of CHF 30 Prior to Surgery" var_label(FRSFUll$BMI) <- "BMI" summary(FRSFUll$PAN_APPROACH) str(FRSFUll$PAN_APPROACH) print(FRSFUll$PAN_APPROACH) UnivariantModel <- FRSORDay %>% select(Fistula.Grade, Day) %>% tbl_uvregression( method = glm, y = Fistula.Grade, method.args = list(family = binomial), exponentiate = TRUE, pvalue_fun = ~style_pvalue(.x, digits = 2) ) %>% bold_p(t = 0.10) %>% bold_labels() %>% italicize_levels() MVOR <- glm(Fistula.Grade ~ day + AgeBetter + BMINew + NeoadjuvantXRT + Duct + Pathology + PAN_GLANDTEXT, data = FRSOddsRatio1, family = binomial("logit"), na.action =na.omit ) MVOR <- tbl_regression(MVOR, exponentiate = T, pvalue_fun = ~style_pvalue(.x, digits = 2), ) %>% bold_p(t = 0.10) %>% bold_labels() %>% italicize_levels() tbl_merge( list(UnivariantModel, MVOR), tab_spanner = c("**Univariable**", "**Multivariable**") ) %>% bold_labels() %>% italicize_levels() print(FRSFUll$PRNCPTX) ?filter str(FRSFUll) FRSOddsRatio1$Fistula.Grade <- as.numeric(FRSOddsRatio1$Fistula.Grade) FRSFUll %>% [BMI == >24] <- ">24" FRSFUll <- mutate(FRSFUll, BMINew = ifelse(BMI == >24 |BMI == )) ifelse(BMI >= >24, ">24","<24") oddsratio1 <- ifelse(FRSFUll$BMI >24, ">24", "<24") as.factor(FRSFUll$BMI) Oddsratio1 <- FRSFUll(ifelse(BMI, >24, ">24", "<24")) AgeCheck <- mutate(FRSFUll, AgeDoublecheck = ifelse(Age > 60, ">60", "<60")) FRSOddsRatioFinal <- mutate(FRSOddsRatio1, Pathology = ifelse(Pathology1 = "Pancreatic adenocarcinoma", "Pancreatic adenocarcinoma", "Other")) sum(is.na(Oddsratio3$AmylaseDrainPod1)) str(FRSOddsRatio1$AgeBetter) sum(is.na(FRSOddsRatio1$AgeBetter)) FRSORDay$Day[FRSORDay$Day =="Other"] <- NA FRSOddsRatio2 <- mutate(FRSOddsRatio1, Pathology1 = ifelse(Pathology ==Pancreatic adenocarcinoma, "Pancreatic adenocarcinoma", "Other")) FRSOddsRatio1 <- cbind(FRSOddsRatio1, BMI = FRSFUll$PAN_RADIO) FRSOddsRatio1$Fistula.Grade <- as.numeric(FRSOddsRatio1$Fistula.Grade) print(FRSOddsRatio1$Pathology) barplot(FRSOddsRatio1$Pathology) chartr(FRSOddsRatio1$Pathology) graphics::FRSOddsRatio1$Pathology hist(FRSFUll$DAMYLASE) WhippleDayDemographicTable <- mutate(WhippleDayDemographicTable, Day = ifelse(DAMYLASE %in% 3:5, "3-5", ifelse(DAMYLASE %in% 1, "1", ifelse(DAMYLASE %in% 0, NA, ">5")))) WhippleDemographicTable2 <- mutate(WhippleDemographicTable1, AmylaseCutoff300DT = ifelse(peak_amylase > 300, ">300", "<300")) WhippleDemographicTable <- mutate(WhippleDemographicTable2, Amylasecutoff5000DT = ifelse(peak_amylase > 5000, ">5000", "<5000")) WhippleDayDemographicTable <- mutate(WhippleDayDemographicTable, FistulaGradeBinary = ifelse(Fistula.Grade =="No CR-POPF", 0, ifelse(Fistula.Grade =="CR-POPF", 1, "NA"))) remove(WhippleDayDemographicTable1) WhippleDemographicTable %>% mutate(peak_amylase = ifelse(DAMYLASE == 1, PAN_AMYLASE_POD1, PAN_AMYLASE_POD230)) %>% ggplot(aes(x = DAMYLASE, y = peak_amylase)) + geom_point() print(FRSOddsRatio1$Fistula.Grade) FRSOddsRatio1$Fistula.Grade <- as.numeric(FRSOddsRatio1$Fistula.Grade) FRSORDay <- cbind(FRSOddsRatio1, Day = FRSOddsRatio2$Day) print(FRSFUll$CPT) sum(FRSFUll$CPT == 48150) WhippleDemographicTable <- subset(FRSFUll, CPT == "48150" | CPT == "48152") WhippleDemographicTable <- WhippleDemographicTable %>% mutate(peak_amylase = ifelse(DAMYLASE == 1, PAN_AMYLASE_POD1, PAN_AMYLASE_POD230)) sum(WhippleDemographicTable1$peak_amylase ==1) Oddsratio3 remove(WhippleDemographicTable2)
Amylase Cutoff 300 Demographic Table
FRS Score Demographic Table install.packages("datatable") library(dplyr) library(gtsummary) library(survival) library(labelled) library(tidyverse) library(broom) library(ggplot2) library(survminer) Importin csv getwd() DayPredictor <- read.csv ("Panfinal.csv", header = TRUE, sep = "," ) Final Code: library(IfElse) DayDemographic5000 <- WhippleDayDemographicTable %>% select(AmylaseCutoff300DT, Day, Age, SEX, RACE_NEW, BMI, Fistula.Grade, ASACLAS, PAN_DUCTSIZE, PAN_GLANDTEXT) str(FRSFUll$RACE_NEW) FRSFinal <- na.omit(FRSFUll) FRSFUll$BMI <- (FRSFUll$WEIGHT * 703) / (FRSFUll$HEIGHT * FRSFUll$HEIGHT) ?filter DayDemographic300 %>% tbl_summary( by = AmylaseCutoff300DT, statistic = all_continuous() ~ "{mean} ({sd})", digits = all_continuous() ~ 2,) %>% add_p(pvalue_fun = ~style_pvalue(.x, digits = 2)) %>% bold_p() %>% add_overall() %>% add_n() %>% modify_header(label ~ "**Variable**") %>% modify_spanning_header(c("stat_1", "stat_2") ~ "**Amylase cutoff**") %>% bold_labels() %>% show_header_names() str(Sm_FRSFull) summary(FRSFUll$HXCOPD) print(FRSFUll$HXCOPD) FRSFUll$SMOKE <- as.factor(FRSFUll$SMOKE) as.numeric(FRSFUll$Age) DemographicTableDay5000$Day[DemographicTableDay5000$Day == "NA"] <- NA FRSFUll$BMI[FRSFUll$BMI == >24] <- ">24" FRSComplete <- Oddsratio2[Oddsratio2$Figure.3=="Neoadjuvant Multiagent Chemotherapy",] var_label(WhippleDemographicTable1$SEX) <- "Sex" var_label(WhippleDemographicTable1$Fistula.Grade) <- "Fistula" var_label(WhippleDemographicTable1$RACE_NEW) <- "Race" var_label(WhippleDemographicTable1$ASACLAS) <- "ASA Classification" var_label(DemographicTableDay$HYPERMED) <- "Hypertension" var_label(DemographicTableDay$DIABETES) <- "Diabetes" var_label(FRSFUll$ASCITES) <- "Ascites" var_label(FRSFUll$HXCHF) <- "Hx of CHF 30 Prior to Surgery" var_label(FRSFUll$BMI) <- "BMI" summary(FRSFUll$PAN_APPROACH) str(FRSFUll$PAN_APPROACH) print(FRSFUll$PAN_APPROACH) UnivariantModel <- FRSORDay %>% select(Fistula.Grade, Day) %>% tbl_uvregression( method = glm, y = Fistula.Grade, method.args = list(family = binomial), exponentiate = TRUE, pvalue_fun = ~style_pvalue(.x, digits = 2) ) %>% bold_p(t = 0.10) %>% bold_labels() %>% italicize_levels() MVOR <- glm(Fistula.Grade ~ day + AgeBetter + BMINew + NeoadjuvantXRT + Duct + Pathology + PAN_GLANDTEXT, data = FRSOddsRatio1, family = binomial("logit"), na.action =na.omit ) MVOR <- tbl_regression(MVOR, exponentiate = T, pvalue_fun = ~style_pvalue(.x, digits = 2), ) %>% bold_p(t = 0.10) %>% bold_labels() %>% italicize_levels() tbl_merge( list(UnivariantModel, MVOR), tab_spanner = c("**Univariable**", "**Multivariable**") ) %>% bold_labels() %>% italicize_levels() print(FRSFUll$PRNCPTX) ?filter str(FRSFUll) FRSOddsRatio1$Fistula.Grade <- as.numeric(FRSOddsRatio1$Fistula.Grade) FRSFUll %>% [BMI == >24] <- ">24" FRSFUll <- mutate(FRSFUll, BMINew = ifelse(BMI == >24 |BMI == )) ifelse(BMI >= >24, ">24","<24") oddsratio1 <- ifelse(FRSFUll$BMI >24, ">24", "<24") as.factor(FRSFUll$BMI) Oddsratio1 <- FRSFUll(ifelse(BMI, >24, ">24", "<24")) AgeCheck <- mutate(FRSFUll, AgeDoublecheck = ifelse(Age > 60, ">60", "<60")) FRSOddsRatioFinal <- mutate(FRSOddsRatio1, Pathology = ifelse(Pathology1 = "Pancreatic adenocarcinoma", "Pancreatic adenocarcinoma", "Other")) sum(is.na(Oddsratio3$AmylaseDrainPod1)) str(FRSOddsRatio1$AgeBetter) sum(is.na(FRSOddsRatio1$AgeBetter)) FRSORDay$Day[FRSORDay$Day =="Other"] <- NA FRSOddsRatio2 <- mutate(FRSOddsRatio1, Pathology1 = ifelse(Pathology ==Pancreatic adenocarcinoma, "Pancreatic adenocarcinoma", "Other")) FRSOddsRatio1 <- cbind(FRSOddsRatio1, BMI = FRSFUll$PAN_RADIO) FRSOddsRatio1$Fistula.Grade <- as.numeric(FRSOddsRatio1$Fistula.Grade) print(FRSOddsRatio1$Pathology) barplot(FRSOddsRatio1$Pathology) chartr(FRSOddsRatio1$Pathology) graphics::FRSOddsRatio1$Pathology hist(FRSFUll$DAMYLASE) WhippleDayDemographicTable <- mutate(WhippleDayDemographicTable, Day = ifelse(DAMYLASE %in% 3:5, "3-5", ifelse(DAMYLASE %in% 1, "1", ifelse(DAMYLASE %in% 0, NA, ">5")))) WhippleDemographicTable2 <- mutate(WhippleDemographicTable1, AmylaseCutoff300DT = ifelse(peak_amylase > 300, ">300", "<300")) WhippleDemographicTable <- mutate(WhippleDemographicTable2, Amylasecutoff5000DT = ifelse(peak_amylase > 5000, ">5000", "<5000")) WhippleDayDemographicTable <- mutate(WhippleDayDemographicTable, FistulaGradeBinary = ifelse(Fistula.Grade =="No CR-POPF", 0, ifelse(Fistula.Grade =="CR-POPF", 1, "NA"))) remove(WhippleDayDemographicTable1) WhippleDemographicTable %>% mutate(peak_amylase = ifelse(DAMYLASE == 1, PAN_AMYLASE_POD1, PAN_AMYLASE_POD230)) %>% ggplot(aes(x = DAMYLASE, y = peak_amylase)) + geom_point() print(FRSOddsRatio1$Fistula.Grade) FRSOddsRatio1$Fistula.Grade <- as.numeric(FRSOddsRatio1$Fistula.Grade) FRSORDay <- cbind(FRSOddsRatio1, Day = FRSOddsRatio2$Day) print(FRSFUll$CPT) sum(FRSFUll$CPT == 48150) WhippleDemographicTable <- subset(FRSFUll, CPT == "48150" | CPT == "48152") WhippleDemographicTable <- WhippleDemographicTable %>% mutate(peak_amylase = ifelse(DAMYLASE == 1, PAN_AMYLASE_POD1, PAN_AMYLASE_POD230)) sum(WhippleDemographicTable1$peak_amylase ==1) Oddsratio3 remove(WhippleDemographicTable2)
Days Demographic Table Amylase cutoff 5000
FRS Score Demographic Table install.packages("datatable") library(dplyr) library(gtsummary) library(survival) library(labelled) library(tidyverse) library(broom) library(ggplot2) library(survminer) Importin csv getwd() DayPredictor <- read.csv ("Panfinal.csv", header = TRUE, sep = "," ) Final Code: library(IfElse) DayDemographic5000 <- WhippleDayDemographicTable %>% select(Day, Age, SEX, RACE_NEW, BMI, Fistula.Grade, ASACLAS, PAN_DUCTSIZE, PAN_GLANDTEXT, Amylasecutoff5000DT) str(FRSFUll$RACE_NEW) FRSFinal <- na.omit(FRSFUll) FRSFUll$BMI <- (FRSFUll$WEIGHT * 703) / (FRSFUll$HEIGHT * FRSFUll$HEIGHT) ?filter DayDemographic5000 %>% tbl_summary( by = Day, statistic = all_continuous() ~ "{mean} ({sd})", digits = all_continuous() ~ 2,) %>% add_p(pvalue_fun = ~style_pvalue(.x, digits = 2)) %>% bold_p() %>% add_overall() %>% add_n() %>% modify_header(label ~ "**Variable**") %>% modify_spanning_header(c("stat_2", "stat_0", "stat_3") ~ "**Days with Highest Amylase**") %>% bold_labels() %>% show_header_names() str(Sm_FRSFull) summary(FRSFUll$HXCOPD) print(FRSFUll$HXCOPD) FRSFUll$SMOKE <- as.factor(FRSFUll$SMOKE) as.numeric(FRSFUll$Age) DemographicTableDay5000$Day[DemographicTableDay5000$Day == "NA"] <- NA FRSFUll$BMI[FRSFUll$BMI == >24] <- ">24" FRSComplete <- Oddsratio2[Oddsratio2$Figure.3=="Neoadjuvant Multiagent Chemotherapy",] var_label(WhippleDemographicTable1$SEX) <- "Sex" var_label(WhippleDemographicTable1$Fistula.Grade) <- "Fistula" var_label(WhippleDemographicTable1$RACE_NEW) <- "Race" var_label(WhippleDemographicTable1$ASACLAS) <- "ASA Classification" var_label(DemographicTableDay$HYPERMED) <- "Hypertension" var_label(DemographicTableDay$DIABETES) <- "Diabetes" var_label(FRSFUll$ASCITES) <- "Ascites" var_label(FRSFUll$HXCHF) <- "Hx of CHF 30 Prior to Surgery" var_label(FRSFUll$BMI) <- "BMI" summary(FRSFUll$PAN_APPROACH) str(FRSFUll$PAN_APPROACH) print(FRSFUll$PAN_APPROACH) UnivariantModel <- FRSORDay %>% select(Fistula.Grade, Day) %>% tbl_uvregression( method = glm, y = Fistula.Grade, method.args = list(family = binomial), exponentiate = TRUE, pvalue_fun = ~style_pvalue(.x, digits = 2) ) %>% bold_p(t = 0.10) %>% bold_labels() %>% italicize_levels() MVOR <- glm(Fistula.Grade ~ day + AgeBetter + BMINew + NeoadjuvantXRT + Duct + Pathology + PAN_GLANDTEXT, data = FRSOddsRatio1, family = binomial("logit"), na.action =na.omit ) MVOR <- tbl_regression(MVOR, exponentiate = T, pvalue_fun = ~style_pvalue(.x, digits = 2), ) %>% bold_p(t = 0.10) %>% bold_labels() %>% italicize_levels() tbl_merge( list(UnivariantModel, MVOR), tab_spanner = c("**Univariable**", "**Multivariable**") ) %>% bold_labels() %>% italicize_levels() print(FRSFUll$PRNCPTX) ?filter str(FRSFUll) FRSOddsRatio1$Fistula.Grade <- as.numeric(FRSOddsRatio1$Fistula.Grade) FRSFUll %>% [BMI == >24] <- ">24" FRSFUll <- mutate(FRSFUll, BMINew = ifelse(BMI == >24 |BMI == )) ifelse(BMI >= >24, ">24","<24") oddsratio1 <- ifelse(FRSFUll$BMI >24, ">24", "<24") as.factor(FRSFUll$BMI) Oddsratio1 <- FRSFUll(ifelse(BMI, >24, ">24", "<24")) AgeCheck <- mutate(FRSFUll, AgeDoublecheck = ifelse(Age > 60, ">60", "<60")) FRSOddsRatioFinal <- mutate(FRSOddsRatio1, Pathology = ifelse(Pathology1 = "Pancreatic adenocarcinoma", "Pancreatic adenocarcinoma", "Other")) sum(is.na(Oddsratio3$AmylaseDrainPod1)) str(FRSOddsRatio1$AgeBetter) sum(is.na(FRSOddsRatio1$AgeBetter)) FRSORDay$Day[FRSORDay$Day =="Other"] <- NA FRSOddsRatio2 <- mutate(FRSOddsRatio1, Pathology1 = ifelse(Pathology ==Pancreatic adenocarcinoma, "Pancreatic adenocarcinoma", "Other")) FRSOddsRatio1 <- cbind(FRSOddsRatio1, BMI = FRSFUll$PAN_RADIO) FRSOddsRatio1$Fistula.Grade <- as.numeric(FRSOddsRatio1$Fistula.Grade) print(FRSOddsRatio1$Pathology) barplot(FRSOddsRatio1$Pathology) chartr(FRSOddsRatio1$Pathology) graphics::FRSOddsRatio1$Pathology hist(FRSFUll$DAMYLASE) WhippleDayDemographicTable <- mutate(WhippleDayDemographicTable, Day = ifelse(DAMYLASE %in% 3:5, "3-5", ifelse(DAMYLASE %in% 1, "1", ifelse(DAMYLASE %in% 0, NA, ">5")))) WhippleDemographicTable2 <- mutate(WhippleDemographicTable1, AmylaseCutoff300DT = ifelse(peak_amylase > 300, ">300", "<300")) WhippleDemographicTable <- mutate(WhippleDemographicTable2, Amylasecutoff5000DT = ifelse(peak_amylase > 5000, ">5000", "<5000")) WhippleDayDemographicTable <- mutate(WhippleDayDemographicTable, FistulaGradeBinary = ifelse(Fistula.Grade =="No CR-POPF", 0, ifelse(Fistula.Grade =="CR-POPF", 1, "NA"))) remove(WhippleDayDemographicTable1) WhippleDemographicTable %>% mutate(peak_amylase = ifelse(DAMYLASE == 1, PAN_AMYLASE_POD1, PAN_AMYLASE_POD230)) %>% ggplot(aes(x = DAMYLASE, y = peak_amylase)) + geom_point() print(FRSOddsRatio1$Fistula.Grade) FRSOddsRatio1$Fistula.Grade <- as.numeric(FRSOddsRatio1$Fistula.Grade) FRSORDay <- cbind(FRSOddsRatio1, Day = FRSOddsRatio2$Day) print(FRSFUll$CPT) sum(FRSFUll$CPT == 48150) WhippleDemographicTable <- subset(FRSFUll, CPT == "48150" | CPT == "48152") WhippleDemographicTable <- WhippleDemographicTable %>% mutate(peak_amylase = ifelse(DAMYLASE == 1, PAN_AMYLASE_POD1, PAN_AMYLASE_POD230)) sum(WhippleDemographicTable1$peak_amylase ==1) Oddsratio3 remove(WhippleDemographicTable2)
Days Demographic Table Amylase cutoff 300
FRS Score Demographic Table install.packages("datatable") library(dplyr) library(gtsummary) library(survival) library(labelled) library(tidyverse) library(broom) library(ggplot2) library(survminer) Importin csv getwd() DayPredictor <- read.csv ("Panfinal.csv", header = TRUE, sep = "," ) Final Code: library(IfElse) DayDemographic300 <- WhippleDayDemographicTable %>% select(Day, Age, SEX, RACE_NEW, BMI, Fistula.Grade, ASACLAS, PAN_DUCTSIZE, PAN_GLANDTEXT, AmylaseCutoff300DT) str(FRSFUll$RACE_NEW) FRSFinal <- na.omit(FRSFUll) FRSFUll$BMI <- (FRSFUll$WEIGHT * 703) / (FRSFUll$HEIGHT * FRSFUll$HEIGHT) ?filter DayDemographic300 %>% tbl_summary( by = Day, statistic = all_continuous() ~ "{mean} ({sd})", digits = all_continuous() ~ 2,) %>% add_p(pvalue_fun = ~style_pvalue(.x, digits = 2)) %>% bold_p() %>% add_overall() %>% add_n() %>% modify_header(label ~ "**Variable**") %>% modify_spanning_header(c("stat_2", "stat_0", "stat_3") ~ "**Days with Highest Amylase**") %>% bold_labels() %>% show_header_names() str(Sm_FRSFull) summary(FRSFUll$HXCOPD) print(FRSFUll$HXCOPD) FRSFUll$SMOKE <- as.factor(FRSFUll$SMOKE) as.numeric(FRSFUll$Age) DemographicTableDay5000$Day[DemographicTableDay5000$Day == "NA"] <- NA FRSFUll$BMI[FRSFUll$BMI == >24] <- ">24" FRSComplete <- Oddsratio2[Oddsratio2$Figure.3=="Neoadjuvant Multiagent Chemotherapy",] var_label(WhippleDemographicTable1$SEX) <- "Sex" var_label(WhippleDemographicTable1$Fistula.Grade) <- "Fistula" var_label(WhippleDemographicTable1$RACE_NEW) <- "Race" var_label(WhippleDemographicTable1$ASACLAS) <- "ASA Classification" var_label(DemographicTableDay$HYPERMED) <- "Hypertension" var_label(DemographicTableDay$DIABETES) <- "Diabetes" var_label(FRSFUll$ASCITES) <- "Ascites" var_label(FRSFUll$HXCHF) <- "Hx of CHF 30 Prior to Surgery" var_label(FRSFUll$BMI) <- "BMI" summary(FRSFUll$PAN_APPROACH) str(FRSFUll$PAN_APPROACH) print(FRSFUll$PAN_APPROACH) UnivariantModel <- FRSORDay %>% select(Fistula.Grade, Day) %>% tbl_uvregression( method = glm, y = Fistula.Grade, method.args = list(family = binomial), exponentiate = TRUE, pvalue_fun = ~style_pvalue(.x, digits = 2) ) %>% bold_p(t = 0.10) %>% bold_labels() %>% italicize_levels() MVOR <- glm(Fistula.Grade ~ day + AgeBetter + BMINew + NeoadjuvantXRT + Duct + Pathology + PAN_GLANDTEXT, data = FRSOddsRatio1, family = binomial("logit"), na.action =na.omit ) MVOR <- tbl_regression(MVOR, exponentiate = T, pvalue_fun = ~style_pvalue(.x, digits = 2), ) %>% bold_p(t = 0.10) %>% bold_labels() %>% italicize_levels() tbl_merge( list(UnivariantModel, MVOR), tab_spanner = c("**Univariable**", "**Multivariable**") ) %>% bold_labels() %>% italicize_levels() print(FRSFUll$PRNCPTX) ?filter str(FRSFUll) FRSOddsRatio1$Fistula.Grade <- as.numeric(FRSOddsRatio1$Fistula.Grade) FRSFUll %>% [BMI == >24] <- ">24" FRSFUll <- mutate(FRSFUll, BMINew = ifelse(BMI == >24 |BMI == )) ifelse(BMI >= >24, ">24","<24") oddsratio1 <- ifelse(FRSFUll$BMI >24, ">24", "<24") as.factor(FRSFUll$BMI) Oddsratio1 <- FRSFUll(ifelse(BMI, >24, ">24", "<24")) AgeCheck <- mutate(FRSFUll, AgeDoublecheck = ifelse(Age > 60, ">60", "<60")) FRSOddsRatioFinal <- mutate(FRSOddsRatio1, Pathology = ifelse(Pathology1 = "Pancreatic adenocarcinoma", "Pancreatic adenocarcinoma", "Other")) sum(is.na(Oddsratio3$AmylaseDrainPod1)) str(FRSOddsRatio1$AgeBetter) sum(is.na(FRSOddsRatio1$AgeBetter)) FRSORDay$Day[FRSORDay$Day =="Other"] <- NA FRSOddsRatio2 <- mutate(FRSOddsRatio1, Pathology1 = ifelse(Pathology ==Pancreatic adenocarcinoma, "Pancreatic adenocarcinoma", "Other")) FRSOddsRatio1 <- cbind(FRSOddsRatio1, BMI = FRSFUll$PAN_RADIO) FRSOddsRatio1$Fistula.Grade <- as.numeric(FRSOddsRatio1$Fistula.Grade) print(FRSOddsRatio1$Pathology) barplot(FRSOddsRatio1$Pathology) chartr(FRSOddsRatio1$Pathology) graphics::FRSOddsRatio1$Pathology hist(FRSFUll$DAMYLASE) WhippleDayDemographicTable <- mutate(WhippleDayDemographicTable, Day = ifelse(DAMYLASE %in% 3:5, "3-5", ifelse(DAMYLASE %in% 1, "1", ifelse(DAMYLASE %in% 0, NA, ">5")))) WhippleDemographicTable2 <- mutate(WhippleDemographicTable1, AmylaseCutoff300DT = ifelse(peak_amylase > 300, ">300", "<300")) WhippleDemographicTable <- mutate(WhippleDemographicTable2, Amylasecutoff5000DT = ifelse(peak_amylase > 5000, ">5000", "<5000")) WhippleDayDemographicTable <- mutate(WhippleDayDemographicTable, FistulaGradeBinary = ifelse(Fistula.Grade =="No CR-POPF", 0, ifelse(Fistula.Grade =="CR-POPF", 1, "NA"))) remove(WhippleDayDemographicTable1) WhippleDemographicTable %>% mutate(peak_amylase = ifelse(DAMYLASE == 1, PAN_AMYLASE_POD1, PAN_AMYLASE_POD230)) %>% ggplot(aes(x = DAMYLASE, y = peak_amylase)) + geom_point() print(FRSOddsRatio1$Fistula.Grade) FRSOddsRatio1$Fistula.Grade <- as.numeric(FRSOddsRatio1$Fistula.Grade) FRSORDay <- cbind(FRSOddsRatio1, Day = FRSOddsRatio2$Day) print(FRSFUll$CPT) sum(FRSFUll$CPT == 48150) WhippleDemographicTable <- subset(FRSFUll, CPT == "48150" | CPT == "48152") WhippleDemographicTable <- WhippleDemographicTable %>% mutate(peak_amylase = ifelse(DAMYLASE == 1, PAN_AMYLASE_POD1, PAN_AMYLASE_POD230)) sum(WhippleDemographicTable1$peak_amylase ==1) Oddsratio3 remove(WhippleDemographicTable2)
NSQIP Short Term Outcomes Demographic Table
anti(retrocolic) anastamosis preop XRT Preop chemo DM Age bmi FRS Score Demographic Table install.packages("survminer") library(dplyr) library(gtsummary) library(survival) library(labelled) library(tidyverse) library(broom) library(ggplot2) library(survminer) Importin csv getwd() NSQIPShortTermOutcomes <- read.csv ("Panfinal.csv", header = TRUE, sep = "," ) Final Code: NSQIPDemographicTable <- NSQIPShortTermOutcomes %>% select(PAN_APPROACH, Age, SEX, BMI, RACE_NEW, ASACLAS, Fistula.Grade, OPTIME, MORTPROB, MORBPROB, TOTHLOS, OUPNEUMO, PULEMBOL, WNDINFD, STILLINHOSP, REOPERATION1, OTHSYSEP) str(FRSFUll$RACE_NEW) FRSFinal <- na.omit(FRSFUll) FRSFUll$BMI <- (FRSFUll$WEIGHT * 703) / (FRSFUll$HEIGHT * FRSFUll$HEIGHT) NSQIPDemographicTable %>% tbl_summary( by = PAN_APPROACH, digits = all_continuous() ~ 2,) %>% add_p(pvalue_fun = ~style_pvalue(.x, digits = 2))%>% bold_p() %>% add_overall() %>% modify_header(label ~ "**Variable**") %>% modify_spanning_header(c("stat_0", "stat_1", "stat_2", "stat_3") ~ "**NSQIP Short Term Outcomes**") %>% bold_labels() ?modify_header show_header_names() summary(FRSFUll$HXCOPD) print(FRSFUll$HXCOPD) FRSFUll$SMOKE <- as.factor(FRSFUll$SMOKE) as.numeric(FRSFUll$Age) DGE$PAN_DELGASTRIC_20140315[DGEDemoTable$PAN_DELGASTRIC_20140315 =="Unknown"] <- NA FRSComplete <- Oddsratio2[Oddsratio2$Figure.3=="Neoadjuvant Multiagent Chemotherapy",] var_label(NSQIPDemographicTable$SEX) <- "Sex" var_label(NSQIPDemographicTable$RACE_NEW) <- "Race" var_label(NSQIPDemographicTable$ASACLAS) <- "ASA Classification" var_label(NSQIPDemographicTable$Fistula.Grade) <- "Fistula" var_label(NSQIPDemographicTable$OPTIME) <- "Total operation time" var_label(NSQIPDemographicTable$OUPNEUMO) <- "Number of Pneumonia Occurrences" var_label(NSQIPDemographicTable$MORTPROB) <- " Estimated Probability of Mortality" var_label(NSQIPDemographicTable$MORBPROB) <- "Estimated Probability of Morbidity" var_label(NSQIPDemographicTable$TOTHLOS) <- "Length of total hospital stay" var_label(NSQIPDemographicTable$OUPNEUMO) <- "Occurrences Pneumonia" var_label(NSQIPDemographicTable$PULEMBOL) <- "Occurrences Pulmonary Embolism" var_label(NSQIPDemographicTable$WNDINFD) <- " Occurrences Deep Incisional SSI" var_label(NSQIPDemographicTable$STILLINHOSP) <- "Still in Hospital > 30 Days" var_label(NSQIPDemographicTable$REOPERATION1) <- "Unplanned Reoperation 1" var_label(NSQIPDemographicTable$OTHSYSEP) <- "Population" var_label(NSQIPDemographicTable$MORTPROB) <- "Estimated Probability of Mortality (%)" var_label(NSQIPDemographicTable$MORBPROB) <- "Estimated Probability of Morbidity (%)" FRSFUll$BMI <- (FRSFUll$WEIGHT * 703) / (FRSFUll$HEIGHT * FRSFUll$HEIGHT) DGE <- mutate(DGE, DelayedGastricEmptying = ifelse(PAN_DELGASTRIC_20140315 > 30, "Obese","Non-Obese")) DGE$PAN_DELGASTRIC_20140315[DGE$PAN_DELGASTRIC_20140315 == "Unknown"] <- NA DGE <- mutate(FRSFUll, BMIOWeight = ifelse(BMI > 24, "Overweight","Normal BMI")) print(NCDBDemographicTable$sur) NCDBDistalPancreatectomy$FACILITY_LOCATION_CD[NCDBDistalPancreatectomy$FACILITY_LOCATION_CD =="Pacific"] <- "West" NCDBDistalPancreatectomy <- as.factor(NCDBDistalPancreatectomy) FRSFullPancreatectomy <- FRSFUll[FRSFUll$RX_SUMM_SURG_PRIM_SITE.2=="Partial pancreatectomy, distal",] remove(NCDBMISVSOPEN) NCDBDistalPancreatectomy$UR_CD_13[NCDBDistalPancreatectomy$UR_CD_13 =="Urban population of 20,000 or more adjacent to a metro area"] <- "Urban" NCDBDistalPancreatectomy$FACILITY_LOCATION_CD[NCDBDistalPancreatectomy$FACILITY_LOCATION_CD =="New England"] <- "NorthEast" NCDBDistalPancreatectomy$FACILITY_LOCATION_CD[NCDBDistalPancreatectomy$FACILITY_LOCATION_CD =="New England"] <- "NorthEast" NCDBDistalPancreatectomy$FACILITY_LOCATION_CD[NCDBDistalPancreatectomy$FACILITY_LOCATION_CD =="Middle Atlantic"] <- "NorthEast" NCDBDistalPancreatectomy$FACILITY_LOCATION_CD[NCDBDistalPancreatectomy$FACILITY_LOCATION_CD =="New England"] <- "NorthEast" NCDBDistalPancreatectomy$FACILITY_LOCATION_CD[NCDBDistalPancreatectomy$FACILITY_LOCATION_CD =="New England"] <- "NorthEast" NCDBDistalPancreatectomy$FACILITY_LOCATION_CD[NCDBDistalPancreatectomy$FACILITY_LOCATION_CD =="East North Central"] <- "Midwest" NCDBDistalPancreatectomy$FACILITY_LOCATION_CD[NCDBDistalPancreatectomy$FACILITY_LOCATION_CD =="East South Central"] <- "South" NCDBDistalPancreatectomy$FACILITY_LOCATION_CD[NCDBDistalPancreatectomy$FACILITY_LOCATION_CD =="Mountain"] <- "West" NCDBDistalPancreatectomy$FACILITY_LOCATION_CD[NCDBDistalPancreatectomy$FACILITY_LOCATION_CD =="South Atlantic"] <- "South" NCDBDistalPancreatectomy$FACILITY_LOCATION_CD[NCDBDistalPancreatectomy$FACILITY_LOCATION_CD =="West South Central"] <- "South" NCDBDistalPancreatectomy$FACILITY_LOCATION_CD[NCDBDistalPancreatectomy$FACILITY_LOCATION_CD =="West North Central"] <- "Midwest" NCDBDistalPancreatectomy$FACILITY_LOCATION_CD[NCDBDistalPancreatectomy$FACILITY_LOCATION_CD =="Pacific"] <- "West" NCDBDistalPancreatectomy$UR_CD_13[NCDBDistalPancreatectomy$UR_CD_13 =="Urban population of 2,500 to 19,999, adjacent to a metro area"] <- "Urban" NCDBDistalPancreatectomy$UR_CD_13[NCDBDistalPancreatectomy$UR_CD_13 =="Counties in metro areas of 250,000 to 1 million population"] <- "Metro" NCDBDistalPancreatectomy$UR_CD_13[NCDBDistalPancreatectomy$UR_CD_13 =="Counties in metro areas of 1 million population or more"] <- "Metro" NCDBDemographicTable$UR_CD_13[NCDBDemographicTable$UR_CD_13 =="Completely rural or less than 2,500 urban population, not adjacent to a metro area"] <- "Rural" print(NCDBDistalPancreatectomy$UR_CD_13) NCDBDemographicTable$Surgery[NCDBDemographicTable$Surgery ==""] <- NA NCDBDemographicTable <- cbind(NCDBDemographicTable, Surgery = NCDBDistalPancreatectomy$RX_HOSP_SURG_APPR_2010) NCDBDemographicTable$FACILITY_LOCATION_CD[NCDBDemographicTable$FACILITY_LOCATION_CD ==""] <- "Unknown" NCDBDemographicTable$NO_HSD_QUAR_12[NCDBDemographicTable$NO_HSD_QUAR_12 =="Unknown"] <- NA NCDBDemographicTable$NO_HSD_QUAR_12[NCDBDemographicTable$NO_HSD_QUAR_12 ==""] <- "Unknown" NCDBDemographicTable$VitalStatus[NCDBDemographicTable$VitalStatus ==""] <- "Unknown" NCDBDemographicTable$TNM_CLIN_N[NCDBDemographicTable$TNM_CLIN_N =="cX"] <- "Unknown" NCDBDemographicTable$GRADE[NCDBDemographicTable$GRADE =="Cell type not determined, not stated or not applicable, unknown primaries, high grade dysplasia"] <- "Unknown" NCDBDemographicTable <- NCDBDistalPancreatectomy[NCDBDistalPancreatectomy$DX_LASTCONTACT_DEATH_MONTHS=="Time to Death", "MIS Converted to Open", "Open"] NSQIPShortTermOutcomes <- subset(FRSFUll, CPT == "48140" | CPT == "48145") NSQIPShortTermOutcomes <- cbind(FRSFUll, SurgicalMargins = NCDBDistalPancreatectomy$RX_SUMM_SURGICAL_MARGINS) NCDBDemographicTable1$surgery <- na.omit(NCDBDemographicTable$Surgery) print(NCDBDemographicTable$SurgicalMargins) NCDBDemographicTable$RX_SUMM_SURGICAL_MARGINS[NCDBDemographicTable$RX_SUMM_SURGICAL_MARGINS =="Margins not evaluable, Cannot be assessed (indeterminate)"] <- "Unknown" NCDBDemographicTable %>% rename( SurgicalMargins1 = SurgicalMargins, SurgicalMargins = SurgicalMargins ) NCDBDistalPancreatectomy$RX_SUMM_SURGICAL_MARGINS[NCDBDistalPancreatectomy$RX_SUMM_SURGICAL_MARGINS =="No residual tumor All margins are grossly and microscopically negative"] <- "R0" NCDBDistalPancreatectomy$RX_SUMM_SURGICAL_MARGINS[NCDBDistalPancreatectomy$RX_SUMM_SURGICAL_MARGINS =="Microscopic residual tumor Cannot be seen by the naked eye"] <- "R1" NCDBDistalPancreatectomy$RX_SUMM_SURGICAL_MARGINS[NCDBDistalPancreatectomy$RX_SUMM_SURGICAL_MARGINS =="Unknown or not applicable"] <- "Unknown" NCDBDistalPancreatectomy$RX_SUMM_SURGICAL_MARGINS[NCDBDistalPancreatectomy$RX_SUMM_SURGICAL_MARGINS =="Macroscopic residual tumor, Gross tumor of the primary site which is visible to the naked eye"] <- "R2" NCDBDemographicTable$SurgicalMargins[NCDBDemographicTable$SurgicalMargins =="Residual tumor, NOS Involvement is indicated, but not otherwise specified"] <- "Unknown" Residual tumor, NOS Involvement is indicated, but not otherwise specified fisher.test(as.factor(NCDBDemographicTable$Surgery), as.factor(NCDBDemographicTable$SurgicalMargins, work)) table(as.factor(FRSFUll$Age), as.factor(FRSFUll$PRNCPTX)) ?fisher.test chisq.test(table(NCDBDemographicTable$Surgery, NCDBDemographicTable$SurgicalMargins)) print(NSQIPShortTermOutcomes$PAN_APPROACH == "Unknown") NSQIPShortTermOutcomes$PAN_APPROACH[NSQIPShortTermOutcomes$PAN_APPROACH =="Open (planned)"] <- "Open" NSQIPDemographicTable$PAN_APPROACH[nsqip$PAN_APPROACH =="NOTES w/ unplanned conversion to open"] <- "MIS" NSQIPShortTermOutcomes$PAN_APPROACH[NSQIPShortTermOutcomes$PAN_APPROACH =="Laparoscopic"] <- "MIS" NSQIPShortTermOutcomes$PAN_APPROACH[NSQIPShortTermOutcomes$PAN_APPROACH =="Laparoscopic w/ open assist"] <- "MIS Converted to Open" NSQIPShortTermOutcomes$PAN_APPROACH[NSQIPShortTermOutcomes$PAN_APPROACH =="Laparoscopic w/ unplanned conversion to open"] <- "MIS" NSQIPShortTermOutcomes$PAN_APPROACH[NSQIPShortTermOutcomes$PAN_APPROACH =="Robotic"] <- "MIS" NSQIPShortTermOutcomes$PAN_APPROACH[NSQIPShortTermOutcomes$PAN_APPROACH =="Robotic w/ unplanned conversion to open"] <- "MIS" NSQIPShortTermOutcomes$PAN_APPROACH[NSQIPShortTermOutcomes$PAN_APPROACH =="Robotic w/ open assist"] <- "MIS Converted to Open" NSQIPShortTermOutcomes$PAN_APPROACH[NSQIPShortTermOutcomes$PAN_APPROACH =="Other"] <- NA NSQIPShortTermOutcomes$PAN_APPROACH[NSQIPShortTermOutcomes$PAN_APPROACH =="Other MIS approach"] <- "MIS" NSQIPShortTermOutcomes$PAN_APPROACH[NSQIPShortTermOutcomes$PAN_APPROACH =="Other MIS approach w/ open assist"] <- "MIS Converted to Open" NSQIPShortTermOutcomes$PAN_APPROACH[NSQIPShortTermOutcomes$PAN_APPROACH =="Hybrid"] <- "MIS" NSQIPShortTermOutcomes$PAN_APPROACH[NSQIPShortTermOutcomes$PAN_APPROACH =="Hybrid w/ open assist"] <- "MIS Converted to Open" NSQIPDemographicTable$ASACLAS[NSQIPDemographicTable$ASACLAS =="None assigned"] <- "Unknown" NSQIPDemographicTable1 <- table(NSQIPDemographicTable$PAN_APPROACH, NSQIPDemographicTable$ASACLAS) fisher.test(NSQIPDemographicTable1, simulate.p.value = TRUE, B = 1e6) NSqipDemographicTable2 <- NSQIPDemographicTable$MORBPROB[NSQIPDemographicTable$MORBPROB * 100] NSQIPDemographicTable$MORBPROB <- (NSQIPDemographicTable$MORBPROB * 100)
Demographic Table NCDB Long Term Outcomes
anti(retrocolic) anastamosis preop XRT Preop chemo DM Age bmi FRS Score Demographic Table install.packages("survminer") library(dplyr) library(gtsummary) library(survival) library(labelled) library(tidyverse) library(broom) library(ggplot2) library(survminer) library(ifelse) Importin csv getwd() FRSFUll <- read.csv ("Panfinal.csv", header = TRUE, sep = "," ) Final Code: NCDBDemographicTable <- NCDBDemographicTable %>% select(surgery, AGE, SEX, RACE.2, INSURANCE_STATUS.2, FACILITY_LOCATION_CD, MED_INC_QUAR_12, NO_HSD_QUAR_12, UR_CD_13, CDCC_TOTAL_BEST, TNM_CLIN_T, TNM_CLIN_N, GRADE) str(FRSFUll$RACE_NEW) FRSFinal <- na.omit(FRSFUll) FRSFUll$BMI <- (FRSFUll$WEIGHT * 703) / (FRSFUll$HEIGHT * FRSFUll$HEIGHT) NCDBDemographicTable %>% tbl_summary( by = Surgery, digits = all_continuous() ~ 2,) %>% add_p(pvalue_fun = ~style_pvalue(.x, digits = 2)) %>% bold_p() %>% add_overall() %>% modify_header(label ~ "**Variable**") %>% modify_spanning_header(c("stat_0", "stat_1", "stat_2", "stat_3") ~ "**NCDB Long Term Outcomes**") %>% bold_labels() %>% show_header_names() ?modify_header show_header_names() summary(FRSFUll$HXCOPD) print(FRSFUll$HXCOPD) FRSFUll$SMOKE <- as.factor(FRSFUll$SMOKE) as.numeric(FRSFUll$Age) DGE$PAN_DELGASTRIC_20140315[DGEDemoTable$PAN_DELGASTRIC_20140315 =="Unknown"] <- NA FRSComplete <- Oddsratio2[Oddsratio2$Figure.3=="Neoadjuvant Multiagent Chemotherapy",] var_label(NCDBDemographicTable$TTDeath) <- "Median Survival" var_label(NCDBDemographicTable$VitalStatus) <- "Vital Status" var_label(NCDBDemographicTable$RACE.2) <- "Race" var_label(NCDBDemographicTable$SMOKE) <- "Smoker" var_label(NCDBDemographicTable$INSURANCE_STATUS.2) <- "Insurance Status" var_label(NCDBDemographicTable$CDCC_TOTAL_BEST) <- "Charlson-Deyo Disability Score" var_label(NCDBDemographicTable$TNM_CLIN_T) <- "TNM Clinical T" var_label(NCDBDemographicTable$TNM_CLIN_N) <- "TNM Clinical N" var_label(NCDBDemographicTable$UR_CD_13) <- "Population" FRSFUll$BMI <- (FRSFUll$WEIGHT * 703) / (FRSFUll$HEIGHT * FRSFUll$HEIGHT) DGE <- mutate(DGE, DelayedGastricEmptying = ifelse(PAN_DELGASTRIC_20140315 > 30, "Obese","Non-Obese")) DGE$PAN_DELGASTRIC_20140315[DGE$PAN_DELGASTRIC_20140315 == "Unknown"] <- NA DGE <- mutate(FRSFUll, BMIOWeight = ifelse(BMI > 24, "Overweight","Normal BMI")) print(NCDBDemographicTable$sur) NCDBDistalPancreatectomy$FACILITY_LOCATION_CD[NCDBDistalPancreatectomy$FACILITY_LOCATION_CD =="Pacific"] <- "West" NCDBDistalPancreatectomy <- as.factor(NCDBDistalPancreatectomy) NCDBDistalPancreatectomy <- NCDBMISVSOPEN[NCDBMISVSOPEN$RX_SUMM_SURG_PRIM_SITE.2=="Partial pancreatectomy, distal",] remove(NCDBMISVSOPEN) NCDBDistalPancreatectomy$UR_CD_13[NCDBDistalPancreatectomy$UR_CD_13 =="Urban population of 20,000 or more adjacent to a metro area"] <- "Urban" NCDBDistalPancreatectomy$FACILITY_LOCATION_CD[NCDBDistalPancreatectomy$FACILITY_LOCATION_CD =="New England"] <- "NorthEast" NCDBDistalPancreatectomy$FACILITY_LOCATION_CD[NCDBDistalPancreatectomy$FACILITY_LOCATION_CD =="New England"] <- "NorthEast" NCDBDistalPancreatectomy$FACILITY_LOCATION_CD[NCDBDistalPancreatectomy$FACILITY_LOCATION_CD =="Middle Atlantic"] <- "NorthEast" NCDBDistalPancreatectomy$FACILITY_LOCATION_CD[NCDBDistalPancreatectomy$FACILITY_LOCATION_CD =="New England"] <- "NorthEast" NCDBDistalPancreatectomy$FACILITY_LOCATION_CD[NCDBDistalPancreatectomy$FACILITY_LOCATION_CD =="New England"] <- "NorthEast" NCDBDistalPancreatectomy$FACILITY_LOCATION_CD[NCDBDistalPancreatectomy$FACILITY_LOCATION_CD =="East North Central"] <- "Midwest" NCDBDistalPancreatectomy$FACILITY_LOCATION_CD[NCDBDistalPancreatectomy$FACILITY_LOCATION_CD =="East South Central"] <- "South" NCDBDistalPancreatectomy$FACILITY_LOCATION_CD[NCDBDistalPancreatectomy$FACILITY_LOCATION_CD =="Mountain"] <- "West" NCDBDistalPancreatectomy$FACILITY_LOCATION_CD[NCDBDistalPancreatectomy$FACILITY_LOCATION_CD =="South Atlantic"] <- "South" NCDBDistalPancreatectomy$FACILITY_LOCATION_CD[NCDBDistalPancreatectomy$FACILITY_LOCATION_CD =="West South Central"] <- "South" NCDBDistalPancreatectomy$FACILITY_LOCATION_CD[NCDBDistalPancreatectomy$FACILITY_LOCATION_CD =="West North Central"] <- "Midwest" NCDBDistalPancreatectomy$FACILITY_LOCATION_CD[NCDBDistalPancreatectomy$FACILITY_LOCATION_CD =="Pacific"] <- "West" NCDBDistalPancreatectomy$UR_CD_13[NCDBDistalPancreatectomy$UR_CD_13 =="Urban population of 2,500 to 19,999, adjacent to a metro area"] <- "Urban" NCDBDistalPancreatectomy$UR_CD_13[NCDBDistalPancreatectomy$UR_CD_13 =="Counties in metro areas of 250,000 to 1 million population"] <- "Metro" NCDBDistalPancreatectomy$UR_CD_13[NCDBDistalPancreatectomy$UR_CD_13 =="Counties in metro areas of 1 million population or more"] <- "Metro" NCDBDemographicTable$UR_CD_13[NCDBDemographicTable$UR_CD_13 =="Completely rural or less than 2,500 urban population, not adjacent to a metro area"] <- "Rural" print(NCDBDistalPancreatectomy$UR_CD_13) NCDBDemographicTable$Surgery[NCDBDemographicTable$Surgery ==""] <- NA NCDBDemographicTable <- cbind(NCDBDemographicTable, Surgery = NCDBDistalPancreatectomy$RX_HOSP_SURG_APPR_2010) NCDBDemographicTable$FACILITY_LOCATION_CD[NCDBDemographicTable$FACILITY_LOCATION_CD ==""] <- "Unknown" NCDBDemographicTable$NO_HSD_QUAR_12[NCDBDemographicTable$NO_HSD_QUAR_12 =="Unknown"] <- NA NCDBDemographicTable$NO_HSD_QUAR_12[NCDBDemographicTable$NO_HSD_QUAR_12 ==""] <- "Unknown" NCDBDemographicTable$VitalStatus[NCDBDemographicTable$VitalStatus ==""] <- "Unknown" NCDBDemographicTable$TNM_CLIN_N[NCDBDemographicTable$TNM_CLIN_N =="cX"] <- "Unknown" NCDBDemographicTable$GRADE[NCDBDemographicTable$GRADE =="Cell type not determined, not stated or not applicable, unknown primaries, high grade dysplasia"] <- "Unknown" NCDBDemographicTable <- NCDBDistalPancreatectomy[NCDBDistalPancreatectomy$DX_LASTCONTACT_DEATH_MONTHS=="Time to Death", "MIS Converted to Open", "Open"] NCDBDemographicTable <- cbind(NCDBDemographicTable, VitalStatus = NCDBDistalPancreatectomy$PUF_VITAL_STATUS)
FRS Amylase Cutoff >5,000 Odds ratio for CR-POPF
FRS Score Demographic Table install.packages("datatable") library(dplyr) library(gtsummary) library(survival) library(labelled) library(tidyverse) library(broom) library(ggplot2) library(survminer) Importin csv getwd() oddsratio <- read.csv ("Panfinal.csv", header = TRUE, sep = "," ) Final Code: library(IfElse) FRSOddsRatio1 <- FRSOddsRatio1 %>% select(Fistula.Grade, day ) str(FRSFUll$RACE_NEW) FRSFinal <- na.omit(FRSFUll) FRSFUll$BMI <- (FRSFUll$WEIGHT * 703) / (FRSFUll$HEIGHT * FRSFUll$HEIGHT) ?filter FRSOddsRatio1 %>% tbl_summary( by = Fistula.Grade, statistic = all_continuous() ~ "{mean} ({sd})", digits = all_continuous() ~ 2,) %>% add_p(pvalue_fun = ~style_pvalue(.x, digits = 2)) %>% bold_p() %>% add_overall() %>% add_n() %>% modify_header(label ~ "**Variable**") %>% modify_spanning_header(c("stat_1", "stat_2") ~ "**CR-POPF vs No CR-POPF**") %>% bold_labels() str(Sm_FRSFull) summary(FRSFUll$HXCOPD) print(FRSFUll$HXCOPD) FRSFUll$SMOKE <- as.factor(FRSFUll$SMOKE) as.numeric(FRSFUll$Age) FRSFUll$PAN_AMYLASE_POD1[FRSFUll$PAN_AMYLASE_POD1 == ">5,000"] <- "Yes" FRSFUll$BMI[FRSFUll$BMI == >24] <- ">24" FRSComplete <- Oddsratio2[Oddsratio2$Figure.3=="Neoadjuvant Multiagent Chemotherapy",] var_label(FRSFUll$AGE) <- "Age" var_label(FRSFUll$SEX) <- "Sex" var_label(FRSFUll$RACE_NEW) <- "Race" var_label(FRSFUll$SMOKE) <- "Smoker" var_label(FRSFUll$HYPERMED) <- "Hypertension" var_label(FRSFUll$DIABETES) <- "Diabetes" var_label(FRSFUll$ASCITES) <- "Ascites" var_label(FRSFUll$HXCHF) <- "Hx of CHF 30 Prior to Surgery" var_label(FRSFUll$BMI) <- "BMI" summary(FRSFUll$PAN_APPROACH) str(FRSFUll$PAN_APPROACH) print(FRSFUll$PAN_APPROACH) UnivariantModel <- FRSOddsRatio34 %>% select(Fistula.Grade, AmylaseCutoff) %>% tbl_uvregression( method = glm, y = Fistula.Grade, method.args = list(family = binomial), exponentiate = TRUE, pvalue_fun = ~style_pvalue(.x, digits = 2) ) %>% bold_p(t = 0.10) %>% bold_labels() %>% italicize_levels() MVOR <- glm(Fistula.Grade ~ day + AgeBetter + BMINew + NeoadjuvantXRT + Duct + Pathology + PAN_GLANDTEXT, data = FRSOddsRatio1, family = binomial("logit"), na.action =na.omit ) MVOR <- tbl_regression(MVOR, exponentiate = T, pvalue_fun = ~style_pvalue(.x, digits = 2), ) %>% bold_p(t = 0.10) %>% bold_labels() %>% italicize_levels() tbl_merge( list(UnivariantModel, MVOR), tab_spanner = c("**Univariable**", "**Multivariable**") ) %>% bold_labels() %>% italicize_levels() print(FRSFUll$PRNCPTX) ?filter str(FRSFUll) FRSOddsRatio1$Fistula.Grade <- as.numeric(FRSOddsRatio1$Fistula.Grade) FRSFUll %>% [BMI == >24] <- ">24" FRSFUll <- mutate(FRSFUll, BMINew = ifelse(BMI == >24 |BMI == )) ifelse(BMI >= >24, ">24","<24") oddsratio1 <- ifelse(FRSFUll$BMI >24, ">24", "<24") as.factor(FRSFUll$BMI) Oddsratio1 <- FRSFUll(ifelse(BMI, >24, ">24", "<24")) AgeCheck <- mutate(FRSFUll, AgeDoublecheck = ifelse(Age > 60, ">60", "<60")) FRSOddsRatioFinal <- mutate(FRSOddsRatio1, Pathology = ifelse(Pathology1 = "Pancreatic adenocarcinoma", "Pancreatic adenocarcinoma", "Other")) sum(is.na(Oddsratio3$AmylaseDrainPod1)) str(FRSOddsRatio1$AgeBetter) sum(is.na(FRSOddsRatio1$AgeBetter)) FRSORDay$Day[FRSORDay$Day =="Other"] <- NA FRSOddsRatio2 <- mutate(FRSOddsRatio1, Pathology1 = ifelse(Pathology ==Pancreatic adenocarcinoma, "Pancreatic adenocarcinoma", "Other")) FRSOddsRatio1 <- cbind(FRSOddsRatio1, BMI = FRSFUll$PAN_RADIO) FRSOddsRatio1$Fistula.Grade <- as.numeric(FRSOddsRatio1$Fistula.Grade) print(FRSOddsRatio1$Pathology) barplot(FRSOddsRatio1$Pathology) chartr(FRSOddsRatio1$Pathology) graphics::FRSOddsRatio1$Pathology hist(FRSFUll$DAMYLASE) FRSOddsRatio34 <- mutate(FRSOddsRatio3, AmylaseCutoff = ifelse(FRSFUll$PAN_AMYLASE_POD230 %in% 5000:200000, ">5,000", ifelse(FRSFUll$PAN_AMYLASE_POD230 %in% 0:5000, "<5,000", ifelse(FRSFUll$PAN_AMYLASE_POD230 ==NA, "NA")))) mutate(gradebook, letter = ifelse(grade %in% 60:69, "D", ifelse(grade %in% 70:79, "C", print(FRSOddsRatio1$Fistula.Grade) FRSOddsRatio1$Fistula.Grade <- as.numeric(FRSOddsRatio1$Fistula.Grade) FRSOddsRatio1 <- cbind(FRSOddsRatio1, AmylaseLevel = FRSFUll$PAN_AMYLASE_POD230) remove(FRSOddsRatio1) FRSOddsRatio3$AmylaseLevel <- na.omit(FRSOddsRatio3$AmylaseLevel) FRSAmylase <- FRSOddsRatio3[FRSOddsRatio3$AmylaseLevel >300,]
FRS Amylase Cutoff >300 Odds ratio for CR-POPF
FRS Score Demographic Table install.packages("datatable") library(dplyr) library(gtsummary) library(survival) library(labelled) library(tidyverse) library(broom) library(ggplot2) library(survminer) Importin csv getwd() oddsratio <- read.csv ("Panfinal.csv", header = TRUE, sep = "," ) Final Code: library(IfElse) FRSOddsRatio1 <- FRSOddsRatio1 %>% select(Fistula.Grade, day ) str(FRSFUll$RACE_NEW) FRSFinal <- na.omit(FRSFUll) FRSFUll$BMI <- (FRSFUll$WEIGHT * 703) / (FRSFUll$HEIGHT * FRSFUll$HEIGHT) ?filter FRSOddsRatio1 %>% tbl_summary( by = Fistula.Grade, statistic = all_continuous() ~ "{mean} ({sd})", digits = all_continuous() ~ 2,) %>% add_p(pvalue_fun = ~style_pvalue(.x, digits = 2)) %>% bold_p() %>% add_overall() %>% add_n() %>% modify_header(label ~ "**Variable**") %>% modify_spanning_header(c("stat_1", "stat_2") ~ "**CR-POPF vs No CR-POPF**") %>% bold_labels() str(Sm_FRSFull) summary(FRSFUll$HXCOPD) print(FRSFUll$HXCOPD) FRSFUll$SMOKE <- as.factor(FRSFUll$SMOKE) as.numeric(FRSFUll$Age) FRSFUll$PAN_AMYLASE_POD1[FRSFUll$PAN_AMYLASE_POD1 == ">5,000"] <- "Yes" FRSFUll$BMI[FRSFUll$BMI == >24] <- ">24" FRSComplete <- Oddsratio2[Oddsratio2$Figure.3=="Neoadjuvant Multiagent Chemotherapy",] var_label(FRSFUll$AGE) <- "Age" var_label(FRSFUll$SEX) <- "Sex" var_label(FRSFUll$RACE_NEW) <- "Race" var_label(FRSFUll$SMOKE) <- "Smoker" var_label(FRSFUll$HYPERMED) <- "Hypertension" var_label(FRSFUll$DIABETES) <- "Diabetes" var_label(FRSFUll$ASCITES) <- "Ascites" var_label(FRSFUll$HXCHF) <- "Hx of CHF 30 Prior to Surgery" var_label(FRSFUll$BMI) <- "BMI" summary(FRSFUll$PAN_APPROACH) str(FRSFUll$PAN_APPROACH) print(FRSFUll$PAN_APPROACH) UnivariantModel <- FRSOddsRatio3 %>% select(Fistula.Grade, AmylaseCutoff) %>% tbl_uvregression( method = glm, y = Fistula.Grade, method.args = list(family = binomial), exponentiate = TRUE, pvalue_fun = ~style_pvalue(.x, digits = 2) ) %>% bold_p(t = 0.10) %>% bold_labels() %>% italicize_levels() MVOR <- glm(Fistula.Grade ~ day + AgeBetter + BMINew + NeoadjuvantXRT + Duct + Pathology + PAN_GLANDTEXT, data = FRSOddsRatio1, family = binomial("logit"), na.action =na.omit ) MVOR <- tbl_regression(MVOR, exponentiate = T, pvalue_fun = ~style_pvalue(.x, digits = 2), ) %>% bold_p(t = 0.10) %>% bold_labels() %>% italicize_levels() tbl_merge( list(UnivariantModel, MVOR), tab_spanner = c("**Univariable**", "**Multivariable**") ) %>% bold_labels() %>% italicize_levels() print(FRSFUll$PRNCPTX) ?filter str(FRSFUll) FRSOddsRatio1$Fistula.Grade <- as.numeric(FRSOddsRatio1$Fistula.Grade) FRSFUll %>% [BMI == >24] <- ">24" FRSFUll <- mutate(FRSFUll, BMINew = ifelse(BMI == >24 |BMI == )) ifelse(BMI >= >24, ">24","<24") oddsratio1 <- ifelse(FRSFUll$BMI >24, ">24", "<24") as.factor(FRSFUll$BMI) Oddsratio1 <- FRSFUll(ifelse(BMI, >24, ">24", "<24")) AgeCheck <- mutate(FRSFUll, AgeDoublecheck = ifelse(Age > 60, ">60", "<60")) FRSOddsRatioFinal <- mutate(FRSOddsRatio1, Pathology = ifelse(Pathology1 = "Pancreatic adenocarcinoma", "Pancreatic adenocarcinoma", "Other")) sum(is.na(Oddsratio3$AmylaseDrainPod1)) str(FRSOddsRatio1$AgeBetter) sum(is.na(FRSOddsRatio1$AgeBetter)) FRSORDay$Day[FRSORDay$Day =="Other"] <- NA FRSOddsRatio2 <- mutate(FRSOddsRatio1, Pathology1 = ifelse(Pathology ==Pancreatic adenocarcinoma, "Pancreatic adenocarcinoma", "Other")) FRSOddsRatio1 <- cbind(FRSOddsRatio1, BMI = FRSFUll$PAN_RADIO) FRSOddsRatio1$Fistula.Grade <- as.numeric(FRSOddsRatio1$Fistula.Grade) print(FRSOddsRatio1$Pathology) barplot(FRSOddsRatio1$Pathology) chartr(FRSOddsRatio1$Pathology) graphics::FRSOddsRatio1$Pathology hist(FRSFUll$DAMYLASE) FRSOddsRatio3 <- mutate(FRSOddsRatio3, AmylaseCutoff = ifelse(FRSFUll$PAN_AMYLASE_POD230 %in% 300:200000, ">300", ifelse(FRSFUll$PAN_AMYLASE_POD230 %in% 0:300, "<300", ifelse(FRSFUll$PAN_AMYLASE_POD230 ==NA, "NA")))) mutate(gradebook, letter = ifelse(grade %in% 60:69, "D", ifelse(grade %in% 70:79, "C", print(FRSOddsRatio1$Fistula.Grade) FRSOddsRatio1$Fistula.Grade <- as.numeric(FRSOddsRatio1$Fistula.Grade) FRSOddsRatio1 <- cbind(FRSOddsRatio1, AmylaseLevel = FRSFUll$PAN_AMYLASE_POD230) remove(Sm_FRSFull) FRSOddsRatio3$AmylaseLevel <- na.omit(FRSOddsRatio3$AmylaseLevel) FRSAmylase <- FRSOddsRatio3[FRSOddsRatio3$AmylaseLevel >300,]
Which day is a better predictor for CRPOF
FRS Score Demographic Table install.packages("datatable") library(dplyr) library(gtsummary) library(survival) library(labelled) library(tidyverse) library(broom) library(ggplot2) library(survminer) Importin csv getwd() oddsratio <- read.csv ("Panfinal.csv", header = TRUE, sep = "," ) Final Code: library(IfElse) FRSOddsRatio1 <- FRSOddsRatio1 %>% select(Fistula.Grade, day ) str(FRSFUll$RACE_NEW) FRSFinal <- na.omit(FRSFUll) FRSFUll$BMI <- (FRSFUll$WEIGHT * 703) / (FRSFUll$HEIGHT * FRSFUll$HEIGHT) ?filter FRSOddsRatio1 %>% tbl_summary( by = Fistula.Grade, statistic = all_continuous() ~ "{mean} ({sd})", digits = all_continuous() ~ 2,) %>% add_p(pvalue_fun = ~style_pvalue(.x, digits = 2)) %>% bold_p() %>% add_overall() %>% add_n() %>% modify_header(label ~ "**Variable**") %>% modify_spanning_header(c("stat_1", "stat_2") ~ "**CR-POPF vs No CR-POPF**") %>% bold_labels() str(Sm_FRSFull) summary(FRSFUll$HXCOPD) print(FRSFUll$HXCOPD) FRSFUll$SMOKE <- as.factor(FRSFUll$SMOKE) as.numeric(FRSFUll$Age) FRSFUll$PAN_AMYLASE_POD1[FRSFUll$PAN_AMYLASE_POD1 == ">5,000"] <- "Yes" FRSFUll$BMI[FRSFUll$BMI == >24] <- ">24" FRSComplete <- Oddsratio2[Oddsratio2$Figure.3=="Neoadjuvant Multiagent Chemotherapy",] var_label(FRSFUll$AGE) <- "Age" var_label(FRSFUll$SEX) <- "Sex" var_label(FRSFUll$RACE_NEW) <- "Race" var_label(FRSFUll$SMOKE) <- "Smoker" var_label(FRSFUll$HYPERMED) <- "Hypertension" var_label(FRSFUll$DIABETES) <- "Diabetes" var_label(FRSFUll$ASCITES) <- "Ascites" var_label(FRSFUll$HXCHF) <- "Hx of CHF 30 Prior to Surgery" var_label(FRSFUll$BMI) <- "BMI" summary(FRSFUll$PAN_APPROACH) str(FRSFUll$PAN_APPROACH) print(FRSFUll$PAN_APPROACH) UnivariantModel <- FRSORDay %>% select(Fistula.Grade, Day) %>% tbl_uvregression( method = glm, y = Fistula.Grade, method.args = list(family = binomial), exponentiate = TRUE, pvalue_fun = ~style_pvalue(.x, digits = 2) ) %>% bold_p(t = 0.10) %>% bold_labels() %>% italicize_levels() MVOR <- glm(Fistula.Grade ~ day + AgeBetter + BMINew + NeoadjuvantXRT + Duct + Pathology + PAN_GLANDTEXT, data = FRSOddsRatio1, family = binomial("logit"), na.action =na.omit ) MVOR <- tbl_regression(MVOR, exponentiate = T, pvalue_fun = ~style_pvalue(.x, digits = 2), ) %>% bold_p(t = 0.10) %>% bold_labels() %>% italicize_levels() tbl_merge( list(UnivariantModel, MVOR), tab_spanner = c("**Univariable**", "**Multivariable**") ) %>% bold_labels() %>% italicize_levels() print(FRSFUll$PRNCPTX) ?filter str(FRSFUll) FRSOddsRatio1$Fistula.Grade <- as.numeric(FRSOddsRatio1$Fistula.Grade) FRSFUll %>% [BMI == >24] <- ">24" FRSFUll <- mutate(FRSFUll, BMINew = ifelse(BMI == >24 |BMI == )) ifelse(BMI >= >24, ">24","<24") oddsratio1 <- ifelse(FRSFUll$BMI >24, ">24", "<24") as.factor(FRSFUll$BMI) Oddsratio1 <- FRSFUll(ifelse(BMI, >24, ">24", "<24")) AgeCheck <- mutate(FRSFUll, AgeDoublecheck = ifelse(Age > 60, ">60", "<60")) FRSOddsRatioFinal <- mutate(FRSOddsRatio1, Pathology = ifelse(Pathology1 = "Pancreatic adenocarcinoma", "Pancreatic adenocarcinoma", "Other")) sum(is.na(Oddsratio3$AmylaseDrainPod1)) str(FRSOddsRatio1$AgeBetter) sum(is.na(FRSOddsRatio1$AgeBetter)) FRSORDay$Day[FRSORDay$Day =="Other"] <- NA FRSOddsRatio2 <- mutate(FRSOddsRatio1, Pathology1 = ifelse(Pathology ==Pancreatic adenocarcinoma, "Pancreatic adenocarcinoma", "Other")) FRSOddsRatio1 <- cbind(FRSOddsRatio1, BMI = FRSFUll$PAN_RADIO) FRSOddsRatio1$Fistula.Grade <- as.numeric(FRSOddsRatio1$Fistula.Grade) print(FRSOddsRatio1$Pathology) barplot(FRSOddsRatio1$Pathology) chartr(FRSOddsRatio1$Pathology) graphics::FRSOddsRatio1$Pathology hist(FRSFUll$DAMYLASE) FRSOddsRatio2 <- mutate(FRSFUll, Day = ifelse(DAMYLASE %in% 3:5, "3-5", ifelse(DAMYLASE %in% 1:1, "1", "Other"))) print(FRSOddsRatio1$Fistula.Grade) FRSOddsRatio1$Fistula.Grade <- as.numeric(FRSOddsRatio1$Fistula.Grade) FRSORDay <- cbind(FRSOddsRatio1, Day = FRSOddsRatio2$Day)
Odds Ratio for FRS Final
FRS Score Demographic Table install.packages("datatable") library(dplyr) library(gtsummary) library(survival) library(labelled) library(tidyverse) library(broom) library(ggplot2) library(survminer) Importin csv getwd() oddsratio <- read.csv ("Panfinal.csv", header = TRUE, sep = "," ) Final Code: library(IfElse) FRSOddsRatio1 <- FRSOddsRatio1 %>% select(Fistula.Grade, Sex, AgeBetter, ASACLAS, , Duct, PAN_GLANDTEXT, AmylaseDrainPod1 ) str(FRSFUll$RACE_NEW) FRSFinal <- na.omit(FRSFUll) FRSFUll$BMI <- (FRSFUll$WEIGHT * 703) / (FRSFUll$HEIGHT * FRSFUll$HEIGHT) ?filter FRSOddsRatio1 %>% tbl_summary( by = Fistula.Grade, statistic = all_continuous() ~ "{mean} ({sd})", digits = all_continuous() ~ 2,) %>% add_p(pvalue_fun = ~style_pvalue(.x, digits = 2)) %>% bold_p() %>% add_overall() %>% add_n() %>% modify_header(label ~ "**Variable**") %>% modify_spanning_header(c("stat_1", "stat_2") ~ "**CR-POPF vs No CR-POPF**") %>% bold_labels() str(Sm_FRSFull) summary(FRSFUll$HXCOPD) print(FRSFUll$HXCOPD) FRSFUll$SMOKE <- as.factor(FRSFUll$SMOKE) as.numeric(FRSFUll$Age) FRSFUll$PAN_AMYLASE_POD1[FRSFUll$PAN_AMYLASE_POD1 == ">5,000"] <- "Yes" FRSFUll$BMI[FRSFUll$BMI == >24] <- ">24" FRSComplete <- Oddsratio2[Oddsratio2$Figure.3=="Neoadjuvant Multiagent Chemotherapy",] var_label(FRSFUll$AGE) <- "Age" var_label(FRSFUll$SEX) <- "Sex" var_label(FRSFUll$RACE_NEW) <- "Race" var_label(FRSFUll$SMOKE) <- "Smoker" var_label(FRSFUll$HYPERMED) <- "Hypertension" var_label(FRSFUll$DIABETES) <- "Diabetes" var_label(FRSFUll$ASCITES) <- "Ascites" var_label(FRSFUll$HXCHF) <- "Hx of CHF 30 Prior to Surgery" var_label(FRSFUll$BMI) <- "BMI" summary(FRSFUll$PAN_APPROACH) str(FRSFUll$PAN_APPROACH) print(FRSFUll$PAN_APPROACH) UnivariantModel <- FRSOddsRatio1 %>% select(Fistula.Grade, Sex, AgeBetter, BMINew, NeoadjuvantXRT, Duct, Pathology, PAN_GLANDTEXT) %>% tbl_uvregression( method = glm, y = Fistula.Grade, method.args = list(family = binomial), exponentiate = TRUE, pvalue_fun = ~style_pvalue(.x, digits = 2) ) %>% bold_p(t = 0.10) %>% bold_labels() %>% italicize_levels() MVOR <- glm(Fistula.Grade ~ Sex + AgeBetter + BMINew + NeoadjuvantXRT + Duct + Pathology + PAN_GLANDTEXT, data = FRSOddsRatio1, family = binomial("logit"), na.action =na.omit ) MVOR <- tbl_regression(MVOR, exponentiate = T, pvalue_fun = ~style_pvalue(.x, digits = 2), ) %>% bold_p(t = 0.10) %>% bold_labels() %>% italicize_levels() tbl_merge( list(UnivariantModel, MVOR), tab_spanner = c("**Univariable**", "**Multivariable**") ) %>% bold_labels() %>% italicize_levels() print(FRSFUll$PRNCPTX) ?filter str(FRSFUll) FRSOddsRatio1$Fistula.Grade <- as.numeric(FRSOddsRatio1$Fistula.Grade) FRSFUll %>% [BMI == >24] <- ">24" FRSFUll <- mutate(FRSFUll, BMINew = ifelse(BMI == >24 |BMI == )) ifelse(BMI >= >24, ">24","<24") oddsratio1 <- ifelse(FRSFUll$BMI >24, ">24", "<24") as.factor(FRSFUll$BMI) Oddsratio1 <- FRSFUll(ifelse(BMI, >24, ">24", "<24")) AgeCheck <- mutate(FRSFUll, AgeDoublecheck = ifelse(Age > 60, ">60", "<60")) FRSOddsRatioFinal <- mutate(FRSOddsRatio1, Pathology = ifelse(Pathology1 = "Pancreatic adenocarcinoma", "Pancreatic adenocarcinoma", "Other")) sum(is.na(Oddsratio3$AmylaseDrainPod1)) str(FRSOddsRatio1$AgeBetter) sum(is.na(FRSOddsRatio1$AgeBetter)) FRSOddsRatio1$NeoadjuvantXRT[FRSOddsRatio1$NeoadjuvantXRT =="Unknown"] <- NA FRSOddsRatio2 <- mutate(FRSOddsRatio1, Pathology1 = ifelse(Pathology ==Pancreatic adenocarcinoma, "Pancreatic adenocarcinoma", "Other")) FRSOddsRatio1 <- cbind(FRSOddsRatio1, BMI = FRSFUll$PAN_RADIO) FRSOddsRatio1$Fistula.Grade <- as.numeric(FRSOddsRatio1$Fistula.Grade) print(FRSOddsRatio1$Pathology) barplot(FRSOddsRatio1$Pathology) chartr(FRSOddsRatio1$Pathology) graphics::FRSOddsRatio1$Pathology
Survival Analysis of subsetted Neoadjuvant Mult agent chemotherapy groups looking at surgical margins
library(dplyr) library(gtsummary) library(survival) library(labelled) library(tidyverse) library(broom) Vascular involvement remove clinical downstaging from survival analysis Like I did with downstaging remove downstaging resect deviation in standard of care—> leads to R0 resection clinical downstaging independently improved survival SurvivalFigure3 <- read.csv ("Figure3.csv", header = TRUE, sep = "," ) Table3Final <- Demotable3 %>% select(AGE, SEX, RACE.2, INSURANCE_STATUS.2, Regions, MED_INC_QUAR_12, NO_HSD_QUAR_12, Population.Density, CDCC_TOTAL_BEST, TNM_CLIN_T, TNM_CLIN_N, Downstaging.Figure.4, Surgery.Type, Tumor.Grade, Surgical.Margins, Figure.4) Downstagingsurvival$SurgicalMargins[Downstagingsurvival$SurgicalMargins == "R2"] <- "R1/R2" Oddsratio2$Death <- as.numeric(Oddsratio2$Death) Oddsratio1$Death[Oddsratio1$Death =="Alive"] <- 1 Oddsratio2 <- cbind(Oddsratio1, Age = Demotable2$AGE.2) UVSurv <- Downstagingsurvival %>% select(SurgicalMargins, Age, INSURANCE_STATUS.2, No.High.School.Degree.2, TNM_CLIN_T, TNM_CLIN_N, Death, TTDeath) %>% tbl_uvregression( method = coxph, y = Surv(TTDeath, Death), exponentiate = TRUE) %>% bold_p(t = 0.10) %>% bold_labels() %>% italicize_levels() MVSurv <- coxph(Surv(TTDeath, Death) ~ SurgicalMargins + Age, data = Downstagingsurvival ) %>% tbl_regression(exponentiate = T ) %>% bold_p(t = 0.05) %>% bold_labels() %>% italicize_levels() Ensure that vital status is labeled as 1= Alive and 2=Death tbl_merge( list(UVSurv, MVSurv), tab_spanner = c("**Univariable**", "**Multivariable**") ) %>% bold_labels() %>% italicize_levels() Newdataframename <- cbind(allData, NewColumnName = Dataframetograbcolumnfrom$Columnyouwanttoaddtootherdataframe) dow <- mutate(Oddsratio3, duct = ifelse(Age < 60, "<60", ">60")) print(Downstagingsurvival$SurgicalMargins) str(Downstagingsurvival)
Pre vs Post incision door openings per count
FRS Score Demographic Table FRS Score Demographic Table library(dplyr) library(gtsummary) library(survival) library(labelled) library(tidyverse) library(broom) library(ggplot2) library(survminer) Importin csv getwd() DOPre <- read.csv ("DoorOpeningsPrePostcount.csv", header = TRUE, sep = "," ) Final Code: DOPreFinal <- DOPre %>% select(Anesthesiologist_Breaks_.._Pre, Nurse_Break_._Pre, Surgical_Tech_Break_._Pre, Total_Staff_Breaks_._Pre, Nurse_Supplies_._Pre, Vendor_Supplies_._Pre, Surgical_Team_.i.e._assessing_patient_status_and_surgery_start_time._Pre, Hallway_Door_Openings_.nonsterile_door_patient_entering_supply.runs_surgical_team_etc.._Pre, Case_irrelevent_talk_Pre, Other_.i.e..case.related.phone.calls..C.arm.delivery._Pre, No.clear_reason_Pre, Pre_Incision) str(FRSFUll$RACE_NEW) FRSFinal <- na.omit(FRSFUll) FRSFUll$BMI <- (FRSFUll$WEIGHT * 703) / (FRSFUll$HEIGHT * FRSFUll$HEIGHT) DOPreFinal %>% tbl_summary( by = Pre_Incision, digits = all_continuous() ~ 2,) %>% add_p(pvalue_fun = ~style_pvalue(.x, digits = 2)) %>% bold_p() %>% add_overall() %>% add_n() %>% modify_header(label ~ "**Door Opening Reasons**") %>% modify_spanning_header(c("stat_1", "stat_2") ~ "**Pre vs Post Incision**") %>% bold_labels() str(FRSFinal) summary(FRSFUll$HXCOPD) print(FRSFUll$HXCOPD) FRSFUll$SMOKE <- as.factor(FRSFUll$SMOKE) as.numeric(FRSFUll$Age) DOPre[DOPre ==0] <- NA FRSComplete <- Oddsratio2[Oddsratio2$Figure.3=="Neoadjuvant Multiagent Chemotherapy",] var_label(DOPreFinal$Anesthesiologist_Breaks_.._Pre) <- "Anesthesiologist Breaks" var_label(DOPreFinal$Nurse_Break_._Pre) <- "Nurse Breaks" var_label(DOPreFinal$Surgical_Tech_Break_._Pre) <- "Surgical Tech Breaks" var_label(DOPreFinal$Anesthesiologist_Breaks_.._Pre) <- "Anesthesiologist Breaks" var_label(DOPreFinal$Total_Staff_Breaks_._Pre) <- "Total Staff Breaks" var_label(DOPreFinal$Nurse_Supplies_._Pre) <- "Nurse Supply Breaks" var_label(DOPreFinal$Vendor_Supplies_._Pre) <- "Vendor Supplies Breaks" var_label(DOPreFinal$Surgical_Team_.i.e._assessing_patient_status_and_surgery_start_time._Pre) <- "Assessing Patient Status/Surgery Start Time" var_label(DOPreFinal$Anesth._attending_helping_resident_Pre) <- "Anesthesiologist Attending Assisting Resident" var_label(DOPreFinal$Hallway_Door_Openings_.nonsterile_door_patient_entering_supply.runs_surgical_team_etc.._Pre) <- "Hallway Door Openings" var_label(DOPreFinal$Case_irrelevent_talk_Pre) <- "Case Irrelevant Discussion" var_label(DOPreFinal$Other_.i.e..case.related.phone.calls..C.arm.delivery._Pre) <- "Other (phone calls, C Arm Deliver, etc..." var_label(DOPreFinal$No.clear_reason_Pre) <- "No Clear Reasons" DOPre$No.clear_reason_Pre <- as.numeric(DOPre$No.clear_reason_Pre) DOPreFinal <- na.omit(DOPreFinal) hist(DOPreFinal)
Pre Vs Post Door Openings Summary Table
FRS Score Demographic Table FRS Score Demographic Table library(dplyr) library(gtsummary) library(survival) library(labelled) library(tidyverse) library(broom) library(ggplot2) library(survminer) Importin csv getwd() DOPre <- read.csv ("DoorOpeningsPrePost.csv", header = TRUE, sep = "," ) Final Code: DOPreFinal <- DOPre %>% select(Anesthesiologist_Breaks_.._Pre, Nurse_Break_._Pre, Surgical_Tech_Break_._Pre, Total_Staff_Breaks_._Pre, Nurse_Supplies_._Pre, Vendor_Supplies_._Pre, Surgical_Team_.i.e._assessing_patient_status_and_surgery_start_time._Pre, Anesth._attending_helping_resident_Pre, Hallway_Door_Openings_.nonsterile_door_patient_entering_supply.runs_surgical_team_etc.._Pre, Case_irrelevent_talk_Pre, Other_.i.e..case.related.phone.calls..C.arm.delivery._Pre, No.clear_reason_Pre, Pre_Incision) str(FRSFUll$RACE_NEW) FRSFinal <- na.omit(FRSFUll) FRSFUll$BMI <- (FRSFUll$WEIGHT * 703) / (FRSFUll$HEIGHT * FRSFUll$HEIGHT) DOPreFinal %>% tbl_summary( by = Pre_Incision, digits = all_continuous() ~ 2,) %>% add_p(pvalue_fun = ~style_pvalue(.x, digits = 2)) %>% bold_p() %>% add_overall() %>% add_n() %>% modify_header(label ~ "**Door Opening Reasons**") %>% modify_spanning_header(c("stat_1", "stat_2") ~ "**Pre vs Post Incision**") %>% bold_labels() str(FRSFinal) summary(FRSFUll$HXCOPD) print(FRSFUll$HXCOPD) FRSFUll$SMOKE <- as.factor(FRSFUll$SMOKE) as.numeric(FRSFUll$Age) DOPre[DOPre ==0] <- NA FRSComplete <- Oddsratio2[Oddsratio2$Figure.3=="Neoadjuvant Multiagent Chemotherapy",] var_label(DOPreFinal$Anesthesiologist_Breaks_.._Pre) <- "Anesthesiologist Breaks" var_label(DOPreFinal$Nurse_Break_._Pre) <- "Nurse Breaks" var_label(DOPreFinal$Surgical_Tech_Break_._Pre) <- "Surgical Tech Breaks" var_label(DOPreFinal$Anesthesiologist_Breaks_.._Pre) <- "Anesthesiologist Breaks" var_label(DOPreFinal$Total_Staff_Breaks_._Pre) <- "Total Staff Breaks" var_label(DOPreFinal$Nurse_Supplies_._Pre) <- "Nurse Supply Breaks" var_label(DOPreFinal$Vendor_Supplies_._Pre) <- "Vendor Supplies Breaks" var_label(DOPreFinal$Surgical_Team_.i.e._assessing_patient_status_and_surgery_start_time._Pre) <- "Assessing Patient Status/Surgery Start Time" var_label(DOPreFinal$Anesth._attending_helping_resident_Pre) <- "Anesthesiologist Attending Assisting Resident" var_label(DOPreFinal$Hallway_Door_Openings_.nonsterile_door_patient_entering_supply.runs_surgical_team_etc.._Pre) <- "Hallway Door Openings" var_label(DOPreFinal$Case_irrelevent_talk_Pre) <- "Case Irrelevant Discussion" var_label(DOPreFinal$Other_.i.e..case.related.phone.calls..C.arm.delivery._Pre) <- "Other (phone calls, C Arm Deliver, etc..." var_label(DOPreFinal$No.clear_reason_Pre) <- "No Clear Reasons" DOPreFinal$Surgical_Tech_Break_._Pre <- as.factor(DOPreFinal$Surgical_Tech_Break_._Pre)
Odds Ratio of Delayed Gastric Emptying
FRS Score Demographic Table install.packages("datatable") library(dplyr) library(gtsummary) library(survival) library(labelled) library(tidyverse) library(broom) library(ggplot2) library(survminer) Importin csv getwd() oddsratio <- read.csv ("Panfinal.csv", header = TRUE, sep = "," ) Final Code: library(IfElse) FRSOddsRatio1 <- FRSOddsRatio1 %>% select(Fistula.Grade, Sex, AgeBetter, ASACLAS, , Duct, PAN_GLANDTEXT, AmylaseDrainPod1 ) str(FRSFUll$RACE_NEW) FRSFinal <- na.omit(FRSFUll) FRSFUll$BMI <- (FRSFUll$WEIGHT * 703) / (FRSFUll$HEIGHT * FRSFUll$HEIGHT) ?filter FRSOddsRatio1 %>% tbl_summary( by = Fistula.Grade, statistic = all_continuous() ~ "{mean} ({sd})", digits = all_continuous() ~ 2,) %>% add_p(pvalue_fun = ~style_pvalue(.x, digits = 2)) %>% bold_p() %>% add_overall() %>% add_n() %>% modify_header(label ~ "**Variable**") %>% modify_spanning_header(c("stat_1", "stat_2") ~ "**CR-POPF vs No CR-POPF**") %>% bold_labels() str(Sm_FRSFull) summary(FRSFUll$HXCOPD) print(FRSFUll$HXCOPD) FRSFUll$SMOKE <- as.factor(FRSFUll$SMOKE) DGEDemoTable$PAN_DELGASTRIC_20140315 <- as.numeric(DGEDemoTable$PAN_DELGASTRIC_20140315) FRSFUll$PAN_AMYLASE_POD1[FRSFUll$PAN_AMYLASE_POD1 == ">5,000"] <- "Yes" FRSFUll$BMI[FRSFUll$BMI == >24] <- ">24" FRSComplete <- Oddsratio2[Oddsratio2$Figure.3=="Neoadjuvant Multiagent Chemotherapy",] var_label(FRSFUll$AGE) <- "Age" var_label(FRSFUll$SEX) <- "Sex" var_label(FRSFUll$RACE_NEW) <- "Race" var_label(FRSFUll$SMOKE) <- "Smoker" var_label(FRSFUll$HYPERMED) <- "Hypertension" var_label(FRSFUll$DIABETES) <- "Diabetes" var_label(FRSFUll$ASCITES) <- "Ascites" var_label(FRSFUll$HXCHF) <- "Hx of CHF 30 Prior to Surgery" var_label(FRSFUll$BMI) <- "BMI" summary(FRSFUll$PAN_APPROACH) str(FRSFUll$PAN_APPROACH) print(FRSFUll$PAN_APPROACH) UnivariantModel <- DGEDemoTable %>% select(PAN_DELGASTRIC_20140315, AgeB, SEX, RACE_NEW, BMIOWeight, PanGasDuo, PAN_CHEMO, PAN_RADIO, DIABETES) %>% tbl_uvregression( method = glm, y = PAN_DELGASTRIC_20140315, method.args = list(family = binomial), exponentiate = TRUE, pvalue_fun = ~style_pvalue(.x, digits = 2) ) %>% bold_p(t = 0.10) %>% bold_labels() %>% italicize_levels() MVOR <- glm(PAN_DELGASTRIC_20140315 ~ AgeB + SEX + BMIOWeight + PanGasDuo, data = DGEDemoTable, family = binomial("logit"), na.action =na.omit ) MVOR <- tbl_regression(MVOR, exponentiate = T, pvalue_fun = ~style_pvalue(.x, digits = 2), ) %>% bold_p(t = 0.10) %>% bold_labels() %>% italicize_levels() tbl_merge( list(UnivariantModel, MVOR), tab_spanner = c("**Univariable**", "**Multivariable**") ) %>% bold_labels() %>% italicize_levels() print(FRSFUll$PRNCPTX) ?filter str(FRSFUll) FRSOddsRatio1$Fistula.Grade <- as.numeric(FRSOddsRatio1$Fistula.Grade) FRSFUll %>% [BMI == >24] <- ">24" FRSFUll <- mutate(FRSFUll, BMINew = ifelse(BMI == >24 |BMI == )) ifelse(BMI >= >24, ">24","<24") oddsratio1 <- ifelse(FRSFUll$BMI >24, ">24", "<24") as.factor(FRSFUll$BMI) Oddsratio1 <- FRSFUll(ifelse(BMI, >24, ">24", "<24")) AgeCheck <- mutate(FRSFUll, AgeDoublecheck = ifelse(Age > 60, ">60", "<60")) DGEDemoTable <- mutate(DGEDemoTable, AgeB = ifelse(Age < 60, "<60", ">60")) sum(is.na(Oddsratio3$AmylaseDrainPod1)) str(FRSOddsRatio1$AgeBetter) sum(is.na(DGEDemoTable$PAN_RADIO)) DGEDemoTable$PAN_DELGASTRIC_20140315[DGEDemoTable$PAN_DELGASTRIC_20140315 =="No"] <- 0 FRSOddsRatio1 <- cbind(FRSOddsRatio1, AgeDB = AgeCheck$AgeDoublecheck) DGEDemoTable[DGEDemoTable == "Unknown"] <- NA DGE$PAN_GASTDUO[DGE$PAN_GASTDUO == "Unknown"] <- NA DGE <- mutate(FRSFUll, BMIOWeight = ifelse(BMI > 24, "Overweight","Normal BMI")) print(DGE$PAN_GASTDUO) DGE$PAN_GASTDUO[DGE$PAN_GASTDUO =="Null"] <- "Unknown" DGEDemoTable <- cbind(DGEDemoTable, PanGasDuo = DGE$PAN_GASTDUO)
Delayed Gastric Emptying Demographic table
anti(retrocolic) anastamosis preop XRT Preop chemo DM Age bmi FRS Score Demographic Table install.packages("survminer") library(dplyr) library(gtsummary) library(survival) library(labelled) library(tidyverse) library(broom) library(ggplot2) library(survminer) library(ifelse) Importin csv getwd() FRSFUll <- read.csv ("Panfinal.csv", header = TRUE, sep = "," ) Final Code: DGEDemoTable <- DGE %>% select(Age, SEX, RACE_NEW, BMIOWeight, PAN_GASTDUO, PAN_CHEMO, PAN_RADIO, SMOKE, HYPERMED, DYSPNEA, PAN_GLANDTEXT, DIABETES, ASCITES, HXCHF, DIALYSIS, HXCOPD, ASACLAS, PAN_DUCTSIZE, PAN_GLANDTEXT, PAN_DELGASTRIC_20140315, PAN_MALIG_HISTOLOGIC, Fistula.Present) str(FRSFUll$RACE_NEW) FRSFinal <- na.omit(FRSFUll) FRSFUll$BMI <- (FRSFUll$WEIGHT * 703) / (FRSFUll$HEIGHT * FRSFUll$HEIGHT) DGEDemoTable %>% tbl_summary( by = PAN_DELGASTRIC_20140315, digits = all_continuous() ~ 2,) %>% add_p(pvalue_fun = ~style_pvalue(.x, digits = 2)) %>% bold_p() %>% add_overall() %>% add_n() %>% modify_header(label ~ "**Variable**") %>% modify_spanning_header(c("stat_1", "stat_2") ~ "**Delayed Gastric Emptying**") %>% bold_labels() str(Sm_FRSFull) summary(FRSFUll$HXCOPD) print(FRSFUll$HXCOPD) FRSFUll$SMOKE <- as.factor(FRSFUll$SMOKE) as.numeric(FRSFUll$Age) DGE$PAN_DELGASTRIC_20140315[DGEDemoTable$PAN_DELGASTRIC_20140315 =="Unknown"] <- NA FRSComplete <- Oddsratio2[Oddsratio2$Figure.3=="Neoadjuvant Multiagent Chemotherapy",] var_label(FRSFUll$AGE) <- "Age" var_label(FRSFUll$SEX) <- "Sex" var_label(FRSFUll$RACE_NEW) <- "Race" var_label(FRSFUll$SMOKE) <- "Smoker" var_label(FRSFUll$HYPERMED) <- "Hypertension" var_label(FRSFUll$DIABETES) <- "Diabetes" var_label(FRSFUll$ASCITES) <- "Ascites" var_label(FRSFUll$HXCHF) <- "Hx of CHF 30 Prior to Surgery" var_label(FRSFUll$BMI) <- "BMI" FRSFUll$BMI <- (FRSFUll$WEIGHT * 703) / (FRSFUll$HEIGHT * FRSFUll$HEIGHT) DGE <- mutate(DGE, DelayedGastricEmptying = ifelse(PAN_DELGASTRIC_20140315 > 30, "Obese","Non-Obese")) DGE$PAN_DELGASTRIC_20140315[DGE$PAN_DELGASTRIC_20140315 == "Unknown"] <- NA DGE <- mutate(FRSFUll, BMIOWeight = ifelse(BMI > 24, "Overweight","Normal BMI")) print(DGE$PAN_GASTDUO) DGE$PAN_GASTDUO[DGE$PAN_GASTDUO =="Null"] <- "Unknown"
Odds Ratio: NA Omitted dataset DGE
FRS Score Demographic Table install.packages("datatable") library(dplyr) library(gtsummary) library(survival) library(labelled) library(tidyverse) library(broom) library(ggplot2) library(survminer) Importin csv getwd() oddsratio <- read.csv ("Panfinal.csv", header = TRUE, sep = "," ) Final Code: library(IfElse) FRSOddsRatio1 <- FRSOddsRatio1 %>% select(Fistula.Grade, Sex, AgeBetter, ASACLAS, , Duct, PAN_GLANDTEXT, AmylaseDrainPod1 ) str(FRSFUll$RACE_NEW) FRSFinal <- na.omit(FRSFUll) FRSFUll$BMI <- (FRSFUll$WEIGHT * 703) / (FRSFUll$HEIGHT * FRSFUll$HEIGHT) ?filter FRSOddsRatio1 %>% tbl_summary( by = Fistula.Grade, statistic = all_continuous() ~ "{mean} ({sd})", digits = all_continuous() ~ 2,) %>% add_p(pvalue_fun = ~style_pvalue(.x, digits = 2)) %>% bold_p() %>% add_overall() %>% add_n() %>% modify_header(label ~ "**Variable**") %>% modify_spanning_header(c("stat_1", "stat_2") ~ "**CR-POPF vs No CR-POPF**") %>% bold_labels() str(Sm_FRSFull) summary(FRSFUll$HXCOPD) print(FRSFUll$HXCOPD) FRSFUll$SMOKE <- as.factor(FRSFUll$SMOKE) DGEDemoTable$PAN_DELGASTRIC_20140315 <- as.numeric(DGEDemoTable$PAN_DELGASTRIC_20140315) FRSFUll$PAN_AMYLASE_POD1[FRSFUll$PAN_AMYLASE_POD1 == ">5,000"] <- "Yes" FRSFUll$BMI[FRSFUll$BMI == >24] <- ">24" FRSComplete <- Oddsratio2[Oddsratio2$Figure.3=="Neoadjuvant Multiagent Chemotherapy",] var_label(FRSFUll$AGE) <- "Age" var_label(FRSFUll$SEX) <- "Sex" var_label(FRSFUll$RACE_NEW) <- "Race" var_label(FRSFUll$SMOKE) <- "Smoker" var_label(FRSFUll$HYPERMED) <- "Hypertension" var_label(FRSFUll$DIABETES) <- "Diabetes" var_label(FRSFUll$ASCITES) <- "Ascites" var_label(FRSFUll$HXCHF) <- "Hx of CHF 30 Prior to Surgery" var_label(FRSFUll$BMI) <- "BMI" summary(FRSFUll$PAN_APPROACH) str(FRSFUll$PAN_APPROACH) print(FRSFUll$PAN_APPROACH) UnivariantModel <- DGETable %>% select(PAN_DELGASTRIC_20140315, AgeB, SEX, RACE_NEW, BMIOWeight, PAN_CHEMO, PAN_RADIO, DIABETES) %>% tbl_uvregression( method = glm, y = PAN_DELGASTRIC_20140315, method.args = list(family = binomial), exponentiate = TRUE, pvalue_fun = ~style_pvalue(.x, digits = 2) ) %>% bold_p(t = 0.10) %>% bold_labels() %>% italicize_levels() MVOR <- glm(PAN_DELGASTRIC_20140315 ~ AgeB + SEX + BMIOWeight +PAN_CHEMO + PAN_RADIO, data = DGETable, family = binomial("logit"), na.action =na.omit ) MVOR <- tbl_regression(MVOR, exponentiate = T, pvalue_fun = ~style_pvalue(.x, digits = 2), ) %>% bold_p(t = 0.10) %>% bold_labels() %>% italicize_levels() tbl_merge( list(UnivariantModel, MVOR), tab_spanner = c("**Univariable**", "**Multivariable**") ) %>% bold_labels() %>% italicize_levels() print(FRSFUll$PRNCPTX) ?filter str(FRSFUll) FRSOddsRatio1$Fistula.Grade <- as.numeric(FRSOddsRatio1$Fistula.Grade) FRSFUll %>% [BMI == >24] <- ">24" FRSFUll <- mutate(FRSFUll, BMINew = ifelse(BMI == >24 |BMI == )) ifelse(BMI >= >24, ">24","<24") oddsratio1 <- ifelse(FRSFUll$BMI >24, ">24", "<24") as.factor(FRSFUll$BMI) Oddsratio1 <- FRSFUll(ifelse(BMI, >24, ">24", "<24")) AgeCheck <- mutate(FRSFUll, AgeDoublecheck = ifelse(Age > 60, ">60", "<60")) DGEDemoTable <- mutate(DGEDemoTable, AgeB = ifelse(Age < 60, "<60", ">60")) sum(is.na(Oddsratio3$AmylaseDrainPod1)) str(FRSOddsRatio1$AgeBetter) sum(is.na(DGEDemoTable$PAN_MALIG_HISTOLOGIC)) DGESubset <- na.omit(DGEDemoTable$PAN_MALIG_HISTOLOGIC) DGEDemoTable$PAN_DELGASTRIC_20140315[DGEDemoTable$PAN_DELGASTRIC_20140315 =="No"] <- 0 FRSOddsRatio1 <- cbind(FRSOddsRatio1, AgeDB = AgeCheck$AgeDoublecheck) DGEDemoTable[DGEDemoTable == "N/A"] <- NA print(DGEDemoTable$PAN_MALIG_HISTOLOGIC) PancAdenoTable <- DGEDemoTable[DGEDemoTable$PAN_MALIG_HISTOLOGIC=="Pancreatic adenocarcinoma",] DGETable <- na.omit(DGEDemoTable)
Odds Ratio FRS
FRS Score Demographic Table install.packages("datatable") library(dplyr) library(gtsummary) library(survival) library(labelled) library(tidyverse) library(broom) library(ggplot2) library(survminer) Importin csv getwd() oddsratio <- read.csv ("Panfinal.csv", header = TRUE, sep = "," ) Final Code: library(IfElse) FRSOddsRatio1 <- FRSOddsRatio1 %>% select(Fistula.Grade, Sex, AgeBetter, ASACLAS, , Duct, PAN_GLANDTEXT, AmylaseDrainPod1 ) str(FRSFUll$RACE_NEW) FRSFinal <- na.omit(FRSFUll) FRSFUll$BMI <- (FRSFUll$WEIGHT * 703) / (FRSFUll$HEIGHT * FRSFUll$HEIGHT) ?filter FRSOddsRatio1 %>% tbl_summary( by = Fistula.Grade, statistic = all_continuous() ~ "{mean} ({sd})", digits = all_continuous() ~ 2,) %>% add_p(pvalue_fun = ~style_pvalue(.x, digits = 2)) %>% bold_p() %>% add_overall() %>% add_n() %>% modify_header(label ~ "**Variable**") %>% modify_spanning_header(c("stat_1", "stat_2") ~ "**CR-POPF vs No CR-POPF**") %>% bold_labels() str(Sm_FRSFull) summary(FRSFUll$HXCOPD) print(FRSFUll$HXCOPD) FRSFUll$SMOKE <- as.factor(FRSFUll$SMOKE) as.numeric(FRSFUll$Age) FRSFUll$PAN_AMYLASE_POD1[FRSFUll$PAN_AMYLASE_POD1 == ">5,000"] <- "Yes" FRSFUll$BMI[FRSFUll$BMI == >24] <- ">24" FRSComplete <- Oddsratio2[Oddsratio2$Figure.3=="Neoadjuvant Multiagent Chemotherapy",] var_label(FRSFUll$AGE) <- "Age" var_label(FRSFUll$SEX) <- "Sex" var_label(FRSFUll$RACE_NEW) <- "Race" var_label(FRSFUll$SMOKE) <- "Smoker" var_label(FRSFUll$HYPERMED) <- "Hypertension" var_label(FRSFUll$DIABETES) <- "Diabetes" var_label(FRSFUll$ASCITES) <- "Ascites" var_label(FRSFUll$HXCHF) <- "Hx of CHF 30 Prior to Surgery" var_label(FRSFUll$BMI) <- "BMI" summary(FRSFUll$PAN_APPROACH) str(FRSFUll$PAN_APPROACH) print(FRSFUll$PAN_APPROACH) UnivariantModel <- FRSOddsRatio1 %>% select(Fistula.Grade, Sex, AgeBetter, ASACLAS, Duct, PAN_GLANDTEXT, AmylaseDrainPod1) %>% tbl_uvregression( method = glm, y = Fistula.Grade, method.args = list(family = binomial), exponentiate = TRUE, pvalue_fun = ~style_pvalue(.x, digits = 2) ) %>% bold_p(t = 0.10) %>% bold_labels() %>% italicize_levels() MVOR <- glm(Fistula.Grade ~ Sex + AgeBetter + ASACLAS + Duct + PAN_GLANDTEXT + AmylaseDrainPod1, data = FRSOddsRatio1, family = binomial("logit"), na.action =na.omit ) MVOR <- tbl_regression(MVOR, exponentiate = T, pvalue_fun = ~style_pvalue(.x, digits = 2), ) %>% bold_p(t = 0.10) %>% bold_labels() %>% italicize_levels() tbl_merge( list(UnivariantModel, MVOR), tab_spanner = c("**Univariable**", "**Multivariable**") ) %>% bold_labels() %>% italicize_levels() print(FRSFUll$PRNCPTX) ?filter str(FRSFUll) FRSOddsRatio1$Fistula.Grade <- as.numeric(FRSOddsRatio1$Fistula.Grade) FRSFUll %>% [BMI == >24] <- ">24" FRSFUll <- mutate(FRSFUll, BMINew = ifelse(BMI == >24 |BMI == )) ifelse(BMI >= >24, ">24","<24") oddsratio1 <- ifelse(FRSFUll$BMI >24, ">24", "<24") as.factor(FRSFUll$BMI) Oddsratio1 <- FRSFUll(ifelse(BMI, >24, ">24", "<24")) AgeCheck <- mutate(FRSFUll, AgeDoublecheck = ifelse(Age > 60, ">60", "<60")) Oddsratio3 <- mutate(Oddsratio3, duct = ifelse(Age < 60, "<60", ">60")) sum(is.na(Oddsratio3$AmylaseDrainPod1)) str(FRSOddsRatio1$AgeBetter) sum(is.na(FRSOddsRatio1$AgeBetter)) FRSOddsRatio1$Fistula.Grade[FRSOddsRatio1$Fistula.Grade =="CR-POPF"] <- 1 FRSOddsRatio1 <- cbind(FRSOddsRatio1, AgeDB = AgeCheck$AgeDoublecheck)
Demographic Table CR-POPF vs No CR-POPF mean & SD of the perioperative labs
FRS Score Demographic Table library(dplyr) library(gtsummary) library(survival) library(labelled) library(tidyverse) library(broom) library(ggplot2) library(survminer) Importin csv getwd() oddsratio <- read.csv ("Panfinal.csv", header = TRUE, sep = "," ) Final Code: FRSFinalMean <- FRSFUll %>% select(Fistula.Grade, Age, ANESTHES, PRSODM, PRBUN, PRCREAT, PRALBUM, PRBILI, PRSGOT, PRALKPH, PRALKPH, PRWBC, PRHCT, PRPLATE, PRPTT, PRINR, PRPT) str(FRSFUll$RACE_NEW) FRSFinal <- na.omit(FRSFUll) FRSFUll$BMI <- (FRSFUll$WEIGHT * 703) / (FRSFUll$HEIGHT * FRSFUll$HEIGHT) FRSFinalMean %>% tbl_summary( by = Fistula.Grade, statistic = all_continuous() ~ "{mean} ({sd})", digits = all_continuous() ~ 2,) %>% add_p(pvalue_fun = ~style_pvalue(.x, digits = 2)) %>% bold_p() %>% add_overall() %>% add_n() %>% modify_header(label ~ "**Variable**") %>% modify_spanning_header(c("stat_1", "stat_2") ~ "**CR-POPF vs No CR-POPF**") %>% bold_labels() str(Sm_FRSFull) summary(FRSFUll$HXCOPD) print(FRSFUll$HXCOPD) FRSFUll$SMOKE <- as.factor(FRSFUll$SMOKE) as.numeric(FRSFUll$Age) FRSFUll[FRSFUll =="NULL"] <- "Unknown" FRSComplete <- Oddsratio2[Oddsratio2$Figure.3=="Neoadjuvant Multiagent Chemotherapy",] var_label(FRSFUll$AGE) <- "Age" var_label(FRSFUll$SEX) <- "Sex" var_label(FRSFUll$RACE_NEW) <- "Race" var_label(FRSFUll$SMOKE) <- "Smoker" var_label(FRSFUll$HYPERMED) <- "Hypertension" var_label(FRSFUll$DIABETES) <- "Diabetes" var_label(FRSFUll$ASCITES) <- "Ascites" var_label(FRSFUll$HXCHF) <- "Hx of CHF 30 Prior to Surgery" var_label(FRSFUll$BMI) <- "BMI" summary(FRSFUll$PAN_APPROACH) str(FRSFUll$PAN_APPROACH) print(FRSFUll$PAN_APPROACH)
Demographic Table CR-POPF vs No CR-POPF
FRS Score Demographic Table library(dplyr) library(gtsummary) library(survival) library(labelled) library(tidyverse) library(broom) library(ggplot2) library(survminer) Importin csv getwd() FRSFUll <- read.csv ("Panfinal.csv", header = TRUE, sep = "," ) Final Code: FRSFinal <- FRSFUll %>% select(Age, SEX, WEIGHT, HEIGHT, BMI, RACE_NEW, SMOKE, HYPERMED, DYSPNEA, DIABETES, ASCITES, HXCHF, DIALYSIS, HXCOPD, ASACLAS, PAN_DUCTSIZE, PAN_GLANDTEXT, PAN_DRAINS, PAN_DRAINSYS_SUCTN, PAN_PERCDRAIN_20140315, PAN_DELGASTRIC_20140315, PAN_MALIG_HISTOLOGIC, Fistula.Grade, REOPERATION1, OPTIME, TOTHLOS, STILLINHOSP, DPRNA, DPRBUN, DPRCREAT, DPRALBUM, DPRBILI, DPRSGOT, DPRALKPH, DPRWBC, DPRHCT, DPRPLATE, DPRPTT, DPRPT, DPRINR, PRSODM, PRBUN, PRCREAT, PRALBUM, PRBILI, PRSGOT, PRALKPH, PRALKPH, PRWBC, PRHCT, PRPLATE, PRPTT, PRINR, PRPT) str(FRSFUll$RACE_NEW) FRSFinal <- na.omit(FRSFUll) FRSFUll$BMI <- (FRSFUll$WEIGHT * 703) / (FRSFUll$HEIGHT * FRSFUll$HEIGHT) FRSFinal %>% tbl_summary( by = Fistula.Grade, digits = all_continuous() ~ 2,) %>% add_p(pvalue_fun = ~style_pvalue(.x, digits = 2)) %>% bold_p() %>% add_overall() %>% add_n() %>% modify_header(label ~ "**Variable**") %>% modify_spanning_header(c("stat_1", "stat_2") ~ "**CR-POPF vs No CR-POPF**") %>% bold_labels() str(Sm_FRSFull) summary(FRSFUll$HXCOPD) print(FRSFUll$HXCOPD) FRSFUll$SMOKE <- as.factor(FRSFUll$SMOKE) as.numeric(FRSFUll$Age) FRSFUll[FRSFUll =="NULL"] <- "Unknown" FRSComplete <- Oddsratio2[Oddsratio2$Figure.3=="Neoadjuvant Multiagent Chemotherapy",] var_label(FRSFUll$AGE) <- "Age" var_label(FRSFUll$SEX) <- "Sex" var_label(FRSFUll$RACE_NEW) <- "Race" var_label(FRSFUll$SMOKE) <- "Smoker" var_label(FRSFUll$HYPERMED) <- "Hypertension" var_label(FRSFUll$DIABETES) <- "Diabetes" var_label(FRSFUll$ASCITES) <- "Ascites" var_label(FRSFUll$HXCHF) <- "Hx of CHF 30 Prior to Surgery" var_label(FRSFUll$BMI) <- "BMI"
Survival Based off downstaging for patients treated with neoadjuvant multiagent chemo
library(dplyr) library(gtsummary) library(survival) library(labelled) library(tidyverse) library(broom) SurvivalFigure3 <- read.csv ("Figure3.csv", header = TRUE, sep = "," ) Table3Final <- Demotable3 %>% select(AGE, SEX, RACE.2, INSURANCE_STATUS.2, Regions, MED_INC_QUAR_12, NO_HSD_QUAR_12, Population.Density, CDCC_TOTAL_BEST, TNM_CLIN_T, TNM_CLIN_N, Downstaging.Figure.4, Surgery.Type, Tumor.Grade, Surgical.Margins, Figure.4) Downstagingsurvival[Downstagingsurvival == "Unknown"] <- NA Oddsratio2$Death <- as.numeric(Oddsratio2$Death) Oddsratio1$Death[Oddsratio1$Death =="Alive"] <- 1 Oddsratio2 <- cbind(Oddsratio1, Age = Demotable2$AGE.2) UVSurv <- Downstagingsurvival %>% select(ClinicalDownstaging, Age, INSURANCE_STATUS.2, No.High.School.Degree.2, TNM_CLIN_T, TNM_CLIN_N, Death, TTDeath) %>% tbl_uvregression( method = coxph, y = Surv(TTDeath, Death), exponentiate = TRUE) %>% bold_p(t = 0.10) %>% bold_labels() %>% italicize_levels() MVSurv <- coxph(Surv(TTDeath, Death) ~ ClinicalDownstaging + Age, data = Downstagingsurvival ) %>% tbl_regression(exponentiate = T ) %>% bold_p(t = 0.10) %>% bold_labels() %>% italicize_levels() Ensure that vital status is labeled as 1= Alive and 2=Death tbl_merge( list(UVSurv, MVSurv), tab_spanner = c("**Univariable**", "**Multivariable**") ) %>% bold_labels() %>% italicize_levels()
Survival Analysis Univariable & Multivariable for neoadjuvant vs postop Treatment groups Final
library(dplyr) library(gtsummary) library(survival) library(labelled) library(tidyverse) library(broom) SurvivalFigure3 <- read.csv ("Figure3.csv", header = TRUE, sep = "," ) Table3Final <- Demotable3 %>% select(AGE, SEX, RACE.2, INSURANCE_STATUS.2, Regions, MED_INC_QUAR_12, NO_HSD_QUAR_12, Population.Density, CDCC_TOTAL_BEST, TNM_CLIN_T, TNM_CLIN_N, Downstaging.Figure.4, Surgery.Type, Tumor.Grade, Surgical.Margins, Figure.4) Oddsratio2$TNM_CLIN_N[Oddsratio2$TNM_CLIN_N == "Unknown"] <- NA Oddsratio2$Death <- as.numeric(Oddsratio2$Death) Oddsratio1$Death[Oddsratio1$Death =="Alive"] <- 1 Oddsratio2 <- cbind(Oddsratio1, Age = Demotable2$AGE.2) UVSurv <- Oddsratio2 %>% select(Figure.3, Age, INSURANCE_STATUS.2, No.High.School.Degree.2, TNM_CLIN_T, TNM_CLIN_N, Death, TTDeath) %>% tbl_uvregression( method = coxph, y = Surv(TTDeath, Death), exponentiate = TRUE) %>% bold_p(t = 0.10) %>% bold_labels() %>% italicize_levels() MVSurv <- coxph(Surv(TTDeath, Death) ~ Figure.3 + Age, data = Oddsratio2 ) %>% tbl_regression(exponentiate = T ) %>% bold_p(t = 0.10) %>% bold_labels() %>% italicize_levels() Ensure that vital status is labeled as 1= Alive and 2=Death tbl_merge( list(UVSurv, MVSurv), tab_spanner = c("**Univariable**", "**Multivariable**") ) %>% bold_labels() %>% italicize_levels()
Survival Analysis Figure 4
library(dplyr) library(gtsummary) library(survival) library(labelled) library(tidyverse) library(broom) SurvivalFigure3 <- read.csv ("Figure4.csv", header = TRUE, sep = "," ) Table3Final <- Demotable3 %>% select(AGE, SEX, RACE.2, INSURANCE_STATUS.2, Regions, MED_INC_QUAR_12, NO_HSD_QUAR_12, Population.Density, CDCC_TOTAL_BEST, TNM_CLIN_T, TNM_CLIN_N, Downstaging.Figure.4, Surgery.Type, Tumor.Grade, Surgical.Margins, Figure.4) Table3Final[Table3Final == "Unknown"] <- NA Oddsratio2$Death <- as.numeric(Oddsratio2$Death) Oddsratio2$Death[Oddsratio2$Death =="Dead"] <- 2 Oddsratio2 <- cbind(Oddsratio2, Death = Demotable3$PUF_VITAL_STATUS) UVSurv <- Oddsratio2 %>% select(Figure.4, Regions, Tumor.Grade, Death, TTDeath) %>% tbl_uvregression( method = coxph, y = Surv(TTDeath, Death), exponentiate = TRUE) %>% bold_p(t = 0.10) %>% bold_labels() %>% italicize_levels() MVSurv <- coxph(Surv(TTDeath, Death) ~ Tumor.Grade + Regions, data = Oddsratio2 ) %>% tbl_regression(exponentiate = T ) %>% bold_p(t = 0.10) %>% bold_labels() %>% italicize_levels() Ensure that vital status is labeled as 1= Alive and 2=Death tbl_merge( list(UVSurv, MVSurv), tab_spanner = c("**Univariable**", "**Multivariable**") ) %>% bold_labels() %>% italicize_levels()
Odds Ratio for Figure 4
library(dplyr) library(gtsummary) library(survival) library(labelled) library(tidyverse) library(broom) Demotable3 <- read.csv ("Figure4.csv", header = TRUE, sep = "," ) Table3Final <- Demotable3 %>% select(AGE, SEX, RACE.2, INSURANCE_STATUS.2, Regions, MED_INC_QUAR_12, NO_HSD_QUAR_12, Population.Density, CDCC_TOTAL_BEST, TNM_CLIN_T, TNM_CLIN_N, Downstaging.Figure.4, Surgery.Type, Tumor.Grade, Surgical.Margins, Figure.4) Table3Final$Figure.4[Table3Final$Figure.4 == "Neoadjuvant Multiagent Chemotherapy xrt"] <- 0 Table3Final$MED_INC_QUAR_12[Table3Final$MED_INC_QUAR_12 =="Unknown"] <- NA Oddsratio <- cbind(Table3Final, Age2 = Demotable2$AGE.2) Table3Final$Figure.4 <- as.numeric(Table3Final$Figure.4) Final Code UnivariantModel <- Table3Final %>% select(Figure.4, Regions, Tumor.Grade) %>% tbl_uvregression( method = glm, y = Figure.4, method.args = list(family = binomial), exponentiate = TRUE, pvalue_fun = ~style_pvalue(.x, digits = 2) ) %>% bold_p(t = 0.10) %>% bold_labels() %>% italicize_levels() MVOR <- glm(Figure.4 ~ Regions + Tumor.Grade, data = Table3Final, family = binomial("logit"), na.action =na.omit ) MVOR <- tbl_regression(MVOR, exponentiate = T, pvalue_fun = ~style_pvalue(.x, digits = 2), ) %>% bold_p(t = 0.10) %>% bold_labels() %>% italicize_levels() tbl_merge( list(UnivariantModel, MVOR), tab_spanner = c("**Univariable**", "**Multivariable**") ) %>% bold_labels() %>% italicize_levels() var_label(UnivariantOR$Age2) <- "Age"
Odds Ratio Neoadjuvant mutliagent Chemo Univariable & Multivariable
UnivariantModel <- UnivariantOR %>% select(Figure.3, Age2, RACE.2, INSURANCE_STATUS.2, No.High.School.Degree.2, TNM_CLIN_T, TNM_CLIN_N, ClinicalDownstaging, Surgery.Type.2, Tumor.Grade) %>% tbl_uvregression( method = glm, y = Figure.3, method.args = list(family = binomial), exponentiate = TRUE, pvalue_fun = ~style_pvalue(.x, digits = 2) ) %>% bold_p(t = 0.10) %>% bold_labels() %>% italicize_levels() MVOR <- glm(Figure.3 ~ Age2 + RACE.2 + INSURANCE_STATUS.2 + No.High.School.Degree.2 + Surgery.Type.2 + Tumor.Grade + TNM_CLIN_T + ClinicalDownstaging, data = UnivariantOR, family = binomial("logit"), na.action =na.omit ) MVOR <- tbl_regression(MVOR, exponentiate = T, pvalue_fun = ~style_pvalue(.x, digits = 2), ) %>% bold_p(t = 0.10) %>% bold_labels() %>% italicize_levels() tbl_merge( list(UnivariantModel, MVOR), tab_spanner = c("**Univariable**", "**Multivariable**") ) %>% bold_labels() %>% italicize_levels()
Table 3 Vascular Involvement Demographic Table
Final Code library(dplyr) library(gtsummary) library(survival) library(labelled) Demotable3 <- read.csv ("Figure4.csv", header = TRUE, sep = "," ) Table3Final <- Demotable3 %>% select(AGE, SEX, RACE.2, INSURANCE_STATUS.2, Regions, MED_INC_QUAR_12, NO_HSD_QUAR_12, Population.Density, CDCC_TOTAL_BEST, TNM_CLIN_T, TNM_CLIN_N, Downstaging.Figure.4, Surgery.Type, Tumor.Grade, Surgical.Margins, Figure.4) Table3Final$NO_HSD_QUAR_12[Table3Final$NO_HSD_QUAR_12 == ""] <- "Unknown" SM_DemographicsTable2$[SM_DemographicsTable2$TNM_CLIN_T ==""] <- "Unknown" DemotableFinal2 <- cbind(DemotableFinal1, SurgicalMargins = Demotable2$Surgical.Margins) allData <- cbind(allData, userID = userData$userId) var_label(DemotableFinal2$ClinicalDownstaging) <- "Clinical Downstaging" var_label(Table3Final$AGE) <- "Age" var_label(Table3Final$SEX) <- "Sex" var_label(Table3Final$RACE.2) <- "Race" var_label(Table3Final$INSURANCE_STATUS.2) <- "Type of Insurance" var_label(Table3Final$Regions.2) <- "Regions" var_label(Table3Final$MED_INC_QUAR_12) <- "Income" var_label(Table3Final$NO_HSD_QUAR_12) <- "No High School Degree" var_label(Table3Final$Population.Density) <- "Population Density" var_label(Table3Final$CDCC_TOTAL_BEST) <- "Charlson-Deyo Disability Score" var_label(Table3Final$TNM_CLIN_T) <- "TNM Clinical T" var_label(Table3Final$TNM_CLIN_N) <- "TNM Clinical N" var_label(Table3Final$Surgery.Type) <- "Surgery Type" var_label(Table3Final$Tumor.Grade) <- "Tumor Grade" var_label(Table3Final$Surgical.Margins) <- "Surgical Margins" var_label(Table3Final$Downstaging.Figure.4) <- "Clinical Downstaging" Table3Final %>% tbl_summary( by = Figure.4, statistic = all_continuous() ~ "{mean} ({sd})", digits = all_continuous() ~ 2,) %>% add_p(pvalue_fun = ~style_pvalue(.x, digits = 2)) %>% bold_p() %>% add_overall() %>% add_n() %>% modify_header(label ~ "**Variable**") %>% modify_spanning_header(c("stat_1", "stat_2") ~ "**Treatment Groups for Patients with Vascular Involvement**") %>% bold_labels()
Table 2 Vascular Involvement Demographic Table
library(dplyr) library(gtsummary) library(survival) library(labelled) Demotable3 <- read.csv ("Figure4.csv", header = TRUE, sep = "," ) Table2Final <- DemotableFinal2 %>% select(AGE, SEX, RACE.2, INSURANCE_STATUS.2, Regions.2, Income, No.High.School.Degree.2, Population.Density, CDCC_TOTAL_BEST, TNM_CLIN_T, TNM_CLIN_N, ClinicalDownstaging, Surgery.Type.2, Tumor.Grade, SurgicalMargins, Figure.3) SM_DemographicsTable2[SM_DemographicsTable2$TNM_CLIN_N == "cx",]$TNM_CLIN_N <- "Unknown" SM_DemographicsTable2$TNM_CLIN_T[SM_DemographicsTable2$TNM_CLIN_T ==""] <- "Unknown" DemotableFinal2 <- cbind(DemotableFinal1, SurgicalMargins = Demotable2$Surgical.Margins) allData <- cbind(allData, userID = userData$userId) var_label(DemotableFinal2$ClinicalDownstaging) <- "Clinical Downstaging" var_label(DemotableFinal$AGE) <- "Age" var_label(DemotableFinal$SEX) <- "Sex" var_label(DemotableFinal$RACE.2) <- "Race" var_label(DemotableFinal$INSURANCE_STATUS.2) <- "Type of Insurance" var_label(DemotableFinal$Regions.2) <- "Regions" var_label(DemotableFinal$Income) <- "Income" var_label(DemotableFinal$No.High.School.Degree.2) <- "No High School Degree" var_label(DemotableFinal$Population.Density) <- "Population Density" var_label(DemotableFinal$CDCC_TOTAL_BEST) <- "Charlson-Deyo Disability Score" var_label(DemotableFinal$TNM_CLIN_T) <- "TNM Clinical T" var_label(DemotableFinal$TNM_CLIN_N) <- "TNM Clinical N" var_label(DemotableFinal$Surgery.Type.2) <- "Surgery Type" var_label(DemotableFinal$Tumor.Grade) <- "Tumor Grade" Table2Final %>% tbl_summary( by = Figure.3, statistic = all_continuous() ~ "{mean} ({sd})", digits = all_continuous() ~ 2,) %>% add_p(pvalue_fun = ~style_pvalue(.x, digits = 2)) %>% bold_p() %>% add_overall() %>% add_n() %>% modify_header(label ~ "**Variable**") %>% modify_spanning_header(c("stat_1", "stat_2") ~ "**Treatment Groups for Patients with Vascular Involvement**") %>% bold_labels()
Table 1 Vascular Involvement Demographic Table
library(dplyr) library(gtsummary) library(survival) library(labelled) Demotable1 <- read.csv ("vascularinvolvementALL.csv", header = TRUE, sep = "," ) SM_DemographicsTable <- Demotable1 %>% select(AGE, SEX, RACE.2, INSURANCE_STATUS.2, Regions.2, Income, No.HS.Degree, Population.Density, CDCC_TOTAL_BEST, TNM_CLIN_T, TNM_CLIN_N, Surgery.Type.2, Tumor.Grade, Demographics.Table.1) SM_DemographicsTable$TNM_CLIN_T[SM_DemographicsTable$TNM_CLIN_T ==""] <- "Unknown" DemotableFinal <- na.omit(SM_DemographicsTable) var_label(DemotableFinal$Tumor.Grade) <- "Tumor Grade" var_label(DemotableFinal$AGE) <- "Age" var_label(DemotableFinal$SEX) <- "Sex" var_label(DemotableFinal$RACE.2) <- "Race" var_label(DemotableFinal$INSURANCE_STATUS.2) <- "Type of Insurance" var_label(DemotableFinal$Regions.2) <- "Regions" var_label(DemotableFinal$Income) <- "Income" var_label(DemotableFinal$No.HS.Degree) <- "No High School Degree" var_label(DemotableFinal$Population.Density) <- "Population Density" var_label(DemotableFinal$CDCC_TOTAL_BEST) <- "Charlson-Deyo Disability Score" var_label(DemotableFinal$TNM_CLIN_T) <- "TNM Clinical T" var_label(DemotableFinal$TNM_CLIN_N) <- "TNM Clinical N" var_label(DemotableFinal$Surgery.Type.2) <- "Surgery Type" var_label(DemotableFinal$Tumor.Grade) <- "Tumor Grade" DemotableFinal %>% tbl_summary( by = Demographics.Table.1, statistic = all_continuous() ~ "{mean} ({sd})", digits = all_continuous() ~ 2,) %>% add_p(pvalue_fun = ~style_pvalue(.x, digits = 2)) %>% bold_p() %>% add_overall() %>% add_n() %>% modify_header(label ~ "**Variable**") %>% modify_spanning_header(c("stat_1", "stat_2") ~ "**Treatment Groups for Patients with Vascular Involvement**") %>% bold_labels()
Survival Analysis Univariable & Multivariable for neoadjuvant vs postop Treatment groups
Code Script prior to final run: library(gtsummary) library(labelled) library(dplyr) library(survival) FreshStart <- read.csv("figure3.csv", header = T, sep = ",") SurvivalDraft <- FreshStart %>% select(RACE.2, INSURANCE_STATUS.2, Income.2, No.High.School.Degree, TNM_CLIN_T, TNM_CLIN_N, Downstaging.Figure.3, Surgery.Type, Tumor.Grade, Figure.3, PUF_VITAL_STATUS.2, DX_LASTCONTACT_DEATH_MONTHS) Final Code Used: UVSurv <- SurvivalDraft %>% select(Figure.3, RACE.2, INSURANCE_STATUS.2, Income.2, No.High.School.Degree, TNM_CLIN_T, TNM_CLIN_N, Downstaging.Figure.3, Surgery.Type, Tumor.Grade, PUF_VITAL_STATUS.2, DX_LASTCONTACT_DEATH_MONTHS) %>% tbl_uvregression( method = coxph, y = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS.2), exponentiate = TRUE ) %>% bold_p(t = 0.10) %>% bold_labels() %>% italicize_levels() MVSurv <- coxph(Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS.2) ~ Figure.3 + RACE.2 + INSURANCE_STATUS.2 + Income.2 +No.High.School.Degree + TNM_CLIN_T + TNM_CLIN_N +Downstaging.Figure.3 +Surgery.Type + Tumor.Grade, data = SurvivalDraft ) %>% tbl_regression(exponentiate = T ) %>% bold_p(t = 0.10) %>% bold_labels() %>% italicize_levels() tbl_merge( list(UVSurv, MVSurv), tab_spanner = c("**Univariable**", "**Multivariable**") ) %>% bold_labels() var_label(SurvivalDraft$Figure.3) <- "Treatment Groups"
Survival Analysis Univariable & Multivariable for neoadjuvant vs postop Treatment groups
Code Script prior to final run: library(gtsummary) library(labelled) library(dplyr) library(survival) FreshStart <- read.csv("figure3.csv", header = T, sep = ",") SurvivalDraft <- FreshStart %>% select(RACE.2, INSURANCE_STATUS.2, Income.2, No.High.School.Degree, TNM_CLIN_T, TNM_CLIN_N, Downstaging.Figure.3, Surgery.Type, Tumor.Grade, Figure.3, PUF_VITAL_STATUS.2, DX_LASTCONTACT_DEATH_MONTHS) Final Code Used: UVSurv <- SurvivalDraft %>% select(Figure.3, RACE.2, INSURANCE_STATUS.2, Income.2, No.High.School.Degree, TNM_CLIN_T, TNM_CLIN_N, Downstaging.Figure.3, Surgery.Type, Tumor.Grade, PUF_VITAL_STATUS.2, DX_LASTCONTACT_DEATH_MONTHS) %>% tbl_uvregression( method = coxph, y = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS.2), exponentiate = TRUE ) %>% bold_p(t = 0.10) %>% bold_labels() %>% italicize_levels() MVSurv <- coxph(Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS.2) ~ Figure.3 + RACE.2 + INSURANCE_STATUS.2 + Income.2 +No.High.School.Degree + TNM_CLIN_T + TNM_CLIN_N +Downstaging.Figure.3 +Surgery.Type + Tumor.Grade, data = SurvivalDraft ) %>% tbl_regression(exponentiate = T ) %>% bold_p(t = 0.10) %>% bold_labels() %>% italicize_levels() tbl_merge( list(UVSurv, MVSurv), tab_spanner = c("**Univariable**", "**Multivariable**") ) %>% bold_labels() var_label(SurvivalDraft$Figure.3) <- "Treatment Groups"
Univariant vs Multivariant Odds Ratio for Neoadjuvant Multiagent Chemo vs Postop Treatment
Rscript code MultivariantAnalysis <- Final %>% select(RACE.2, INSURANCE_STATUS.2, Income.2, No.High.School.Degree, TNM_CLIN_T, TNM_CLIN_N, Downstaging.Figure.3, Surgery.Type, Tumor.Grade, Figure.3) TBl_uvreg <- UnivariantAnalysis %>% tbl_uvregression( method = glm( Y = Figure.3, method.args =list(family = binomial), exponentiate = T ) ) T1 <- tbl_uvregression( UnivariantAnalysis[c("RACE.2", "INSURANCE_STATUS.2", "Income.2", "No.High.School.Degree", "TNM_CLIN_T", "TNM_CLIN_N", "Downstaging.Figure.3", "Surgery.Type", "Tumor.Grade", "Figure.3")], method = glm, y = Figure.3, method.args = list(family = binomial), exponentiate = TRUE ) tbl_merge( list(T1, T2), tab_spanner = c("**Univariable**", "**Multivariable**") ) %>% bold_labels() %>% italicize_levels() class() inherits(tbl_uv_ex1, "gtsummary") as_gt(ModelOR) s <- na.omit(Figure3NADraft) as.integer(Figure3NADraft$Figure.3) ModelOR <- glm(Figure.3 ~ RACE.2 + INSURANCE_STATUS.2 + Income.2 + No.High.School.Degree + TNM_CLIN_T + TNM_CLIN_N + Downstaging.Figure.3 + Surgery.Type + Tumor.Grade, data = MultivariantAnalysis, family = binomial("logit"), na.action =na.omit ) T1 <- tbl_regression(ModelOR, exponentiate = T, pvalue_fun = ~style_pvalue(.x, digits = 2), ) %>% bold_p(t = 0.10) %>% bold_labels() %>% italicize_levels() T1 <- tbl_uvregression( UnivariantAnalysis[c("RACE.2", "INSURANCE_STATUS.2", "Income.2", "No.High.School.Degree", "TNM_CLIN_T", "TNM_CLIN_N", "Downstaging.Figure.3", "Surgery.Type", "Tumor.Grade", "Figure.3")], method = glm, y = Figure.3, method.args = list(family = binomial), exponentiate = TRUE ) %>% bold_p(t = 0.10) %>% bold_labels() %>% italicize_levels() T2 <- tbl_regression(ModelOR, exponentiate = T, pvalue_fun = ~style_pvalue(.x, digits = 2), ) %>% bold_p(t = 0.10) %>% bold_labels() %>% italicize_levels() Figure3NADraft$Figure.3 <- as.numeric(Figure3NADraft$Figure.3) UnivariantAnalysis Final Code UnivariantAnalysis %>% tbl_uvregression( method = glm( Y = Figure.3, method.args =list(family = binomial), exponentiate = T ) ) T1 <- tbl_uvregression( UnivariantAnalysis[c("RACE.2", "INSURANCE_STATUS.2", "Income.2", "No.High.School.Degree", "TNM_CLIN_T", "TNM_CLIN_N", "Downstaging.Figure.3", "Surgery.Type", "Tumor.Grade", "Figure.3")], method = glm, y = Figure.3, method.args = list(family = binomial), exponentiate = TRUE ) tbl_merge( list(T1, T2), tab_spanner = c("**Univariable**", "**Multivariable**") ) %>% bold_labels() %>% italicize_levels()
Odds ratio for figure 3 Neoadjuvant Multi-Agent Chemotherapy vs Postop Treatment
Code below library(gtsummary) library(labelled) library(dplyr) FreshStart <- read.csv("figure3.csv", header = T, sep = ",") Figure3NADraft <- FreshStart %>% select(RACE.2, INSURANCE_STATUS.2, Income.2, No.High.School.Degree, TNM_CLIN_T, TNM_CLIN_N, Downstaging.Figure.3, Surgery.Type, Tumor.Grade, Figure.3) Figure3NADraft <- FreshStart %>% select(RACE.2, INSURANCE_STATUS, Income, No.High.School.Degree, TNM_CLIN_T, TNM_CLIN_N, Downstaging.Figure.3, Surgery.Type, Tumor.Grade, Figure.3) Figure3NADraft[Figure3NADraft$TNM_CLIN_N =="",]$TNM_CLIN_N <- NA Figure3NADraft[Figure3NADraft$Figure.3 =="1",]$Figure.3 <- 1 Figure3NADraft[Figure3NADraft$Figure.3 =="0",]$Figure.3 <- 0 Final[Final$TNM_CLIN_T =="c0",]$TNM_CLIN_T <- NA Figure3NADraft[Figure3NADraft$Income.2 =="",]$Income.2 <- NA Figure3NADraft[Figure3NADraft$Figure.3 =="Postop Multiagent Chemotherapy",]$Figure.3 <- 0 I then made Neoadjuvant Multi-agent Chemotherapy the "event and coded it as 1" Crossfingers <- na.omit(Figure3NADraft) as.integer(Figure3NADraft$Figure.3) ModelOR <- glm(Figure.3 ~ RACE.2 + INSURANCE_STATUS.2 + Income.2 + No.High.School.Degree + TNM_CLIN_T + TNM_CLIN_N + Downstaging.Figure.3 + Surgery.Type + Tumor.Grade, data = Final, family = binomial("logit"), na.action =na.omit ) tbl_regression(ModelOR, exponentiate = T, pvalue_fun = ~style_pvalue(.x, digits = 2), ) %>% bold_p(t = 0.10) %>% bold_labels() %>% italicize_levels() Figure3NADraft$Figure.3 <- as.numeric(Figure3NADraft$Figure.3)
Vascular Involvement: Demographic Table Neoadjuvant Multiagent Chemo vs Neoadjuvant Multiagent Chemo still no p value for tnm clin t but already obtained from JMP
Code used Figure4Draft <- read.csv("figure4.csv", header = T, sep = ",") Sm_Figure4 <- Figure4Draft %>% select(AGE, SEX, RACE.2, INSURANCE_STATUS.2, Regions, MED_INC_QUAR_12, NO_HSD_QUAR_12, Population.Density, CDCC_TOTAL_BEST, TNM_CLIN_T, TNM_CLIN_N, Downstaging.Figure.4, Surgery.Type, Surgical.Margins, Tumor.Grade, Figure.4) Figure4Draft[Figure4Draft$Surgical.Margins == "",]$Surgical.Margins <- "Unknown" sm_Figure3TNM <- Figure3Draft %>% select(TNM_CLIN_T, Figure.3) install.packages("labelled") library(gtsummary) library(labelled) library(dplyr) var_label(Sm_Figure4$TNM_CLIN_N) <- "TNM Clinical N" str(Sm_Figure4) Figure4Draft[Figure4Draft$Population.Density == "",]$Population.Density <- "Unknown" Sm_Figure3$TNM_CLIN_T <- as.factor(Sm_Figure3$TNM_CLIN_T) chisq.test(sm_, y = NULL, correct = TRUE, p = rep(1/length(x), length(x)), rescale.p = FALSE, simulate.p.value = FALSE, B = 2000) Sm_Figure4 %>% tbl_summary( by = Figure.4, statistic = all_continuous() ~ "{mean} ({sd})", digits = all_continuous() ~ 4, ) %>% add_p(pvalue_fun = ~style_pvalue(.x, digits = 2)) %>% add_overall() %>% add_n() %>% modify_header(label ~ "**Variable**") %>% modify_spanning_header(c("stat_1", "stat_2") ~ "**Treatment Groups**") %>% bold_labels()
Vascular Involvement: Demographic Table Neoadjuvant Multiagent Chemo vs Postop Chemo P value omitted for tnm clinical T
Sm_Figure3 %>% tbl_summary( by = Figure.3, statistic = all_continuous() ~ "{mean} ({sd})", digits = all_continuous() ~ 2, missing_text = "(Unknown)" ) %>% add_p(pvalue_fun = ~style_pvalue(.x, digits = 4)) %>% add_overall() %>% add_n() %>% modify_header(label ~ "**Variable**") %>% modify_spanning_header(c("stat_1", "stat_2") ~ "**Treatment Groups**") %>% bold_labels()
Vascular Involvement: Demographic Table Neoadjuvant Multiagent Vhemo vs Postop Chemo
This was the final version Code used below: Figure3Draft <- read.csv("figure3.csv", header = T, sep = ",") remove(DemTable2) Sm_Figure3 <- Figure3Draft %>% select(AGE, SEX, RACE.2, INSURANCE_STATUS, Regions.2, Income, No.High.School.Degree, Population.Density, CDCC_TOTAL_BEST, TNM_CLIN_T, TNM_CLIN_N.2, Downstaging.Figure.3, Surgery.Type.2, Surgical.Margins, Tumor.Grade, Figure.3) Sm_Figure3[Sm_Figure3$TNM_CLIN_T == "",] <- NA Sm_Figure3Draft2 <- na.omit(Sm_Figure3$TNM_CLIN_T) install.packages("labelled") library(gtsummary) library(labelled) library(dplyr) var_label(Sm_Figure3$Population.Density) <- "Population Density" str(DemoTable1) Sm_DemoTable1[Sm_DemoTable1 =="NA"] <- "Unknown" DemoTable1PDF <- sm_figu Sm_Figure3 %>% tbl_summary( by = Figure.3, statistic = all_continuous() ~ "{mean} ({sd})", digits = all_continuous() ~ 2,) %>% add_p(pvalue_fun = ~style_pvalue(.x, digits = 2)) %>% add_overall() %>% add_n() %>% modify_header(label ~ "**Variable**") %>% modify_spanning_header(c("stat_1", "stat_2") ~ "**Treatment Groups**") %>% bold_labels()
HTML
Vascular Involvement Demographic table 2
HTML
Demographic Table 1