R/rCut.R

Defines functions rCut

Documented in rCut

#'rCut



#' This produces cut offs for each variable using the maximal rank statistics method.

#' @import survival
#' @import maxstat
#' @import survminer
#' @import tidyverse
#' @import gplots



#' @export



#Function

rCut <- function(Data, CSS, OS, DFS, RFS, MISC, minprop="0.1", PlotPalette="SPSS", ID, Survival="Survival", SurvivalStatus="SurvivalStatus", DiseaseFree="DiseaseFree", DiseaseFreeStatus="DiseaseFreeStatus", Recurrence="Recurrence", RecurrenceStatus="RecurrenceStatus", Miscellaneous="Miscellaneous", MiscellaneousStatus="MiscellaneousStatus", Variables)
{
  if (!all(Variables %in% colnames(Data)))
    stop("Some variables are not found in the data: ",
         paste(setdiff(Variables, colnames(Data)), collapse = ", "))


  OriginalData <- Data


  #Reconfigure variables
  names(Data)[names(Data) == SurvivalStatus] <- "SurvivalStatus"
  names(Data)[names(Data) == Survival] <- "Survival"
  names(Data)[names(Data) == DiseaseFreeStatus] <- "DiseaseFreeStatus"
  names(Data)[names(Data) == DiseaseFree] <- "DiseaseFree"
  names(Data)[names(Data) == RecurrenceStatus] <- "RecurrenceStatus"
  names(Data)[names(Data) == Recurrence] <- "DiseaseFree"
  names(Data)[names(Data) == MiscellaneousStatus] <- "MiscellaneousStatus"
  names(Data)[names(Data) == Miscellaneous] <- "Miscellaneous"

  if (CSS == "Yes") {
    Data$CSS <- ifelse(Data$SurvivalStatus == 1, c("1"), c("0"))
    Data$CSS <- as.numeric(Data$CSS)
  }
  if (OS == "Yes") {
    Data$OS <- ifelse(Data$SurvivalStatus > 0, c("1"), c("0"))
    Data$OS <- as.numeric(Data$OS)
  }

  if (DFS == "Yes") {
    Data$DFS <- ifelse(Data$DiseaseFreeStatus > 0, c("1"), c("0"))
    Data$DFS <- as.numeric(Data$DFS)
  }

  if (RFS == "Yes") {
    Data$RFS <- ifelse(Data$RecurrenceStatus == 1, c("1"), c("0"))
    Data$RFS <- as.numeric(Data$RFS)
  }
  if (MISC == "Yes") {
    Data$MISC <- ifelse(Data$MiscellaneousStatus == 1, c("1"), c("0"))
    Data$MISC <- as.numeric(Data$MISC)
  }


  Number <- 1
  CurrentDirectory <- toString(getwd())
  NewDirectory <- paste("CutOffs", Sys.Date(), Number, sep = '_')


  while(file.exists(NewDirectory))
  {
    Number <- Number + 1
    NewDirectory <- paste("CutOffs", Sys.Date(), Number, sep = '_')
  }

  setwd(CurrentDirectory)
  dir.create(NewDirectory)
  setwd(NewDirectory)
  on.exit(setwd(CurrentDirectory), add = TRUE)




  Plots <- list()

  sink("waste.txt")

  if (PlotPalette == "SPSS") {

    #Determine cut off for cancer-specific survival
    if (CSS == "Yes") {
      CSS.res.cut <- surv_cutpoint(Data, time = "Survival", event = "CSS", minprop = minprop, Variables)
      CSSCutPoints <- summary(CSS.res.cut)
      CSS_Plots <- plot(CSS.res.cut, Variables, palette = c("#d70033", "#5596e6"), main="Cancer-Specific Survival")
      CSS_Title <- "Cancer-specific survival cut offs;"
      Plots <- c(Plots, CSS_Plots)
      YourCSSPlots <<- CSS_Plots
      n = length(Variables)
      for (i in 1:n) {
        png(paste0("CSS_", Variables[i], ".png"))
        CSS.res.cut <- surv_cutpoint(Data, time = "Survival", event = "CSS", minprop = minprop, Variables[i])
        SPSSCSSSinglePlot <- plot(CSS.res.cut, Variables[i], palette = c("#d70033", "#5596e6"), main="Cancer-Specific Survival")
        print(SPSSCSSSinglePlot)
        dev.off()
      }
    }



    #Determine cut off for overall survival
    if (OS == "Yes") {
      OS.res.cut <- surv_cutpoint(Data, time = "Survival", event = "OS", minprop = minprop, Variables)
      OSCutPoints <- summary(OS.res.cut)
      OS_Plots <- plot(OS.res.cut, Variables, palette = c("#d70033", "#5596e6"), main="Overall Survival")
      OS_Title <- "Overall survival cut offs;"
      Plots <- c(Plots, OS_Plots)
      YourOSPlots <<- OS_Plots
      n = length(Variables)
      for (i in 1:n) {
        png(paste0("OS_", Variables[i], ".png"))
        OS.res.cut <- surv_cutpoint(Data, time = "Survival", event = "OS", minprop = minprop, Variables[i])
        SPSSOSSinglePlot <- plot(OS.res.cut, Variables[i], palette = c("#d70033", "#5596e6"), main="Overall Survival")
        print(SPSSOSSinglePlot)
        dev.off()
      }
    }

    #Determine cut off for disease-free survival
    if (DFS == "Yes") {
      DFS.res.cut <- surv_cutpoint(Data, time = "DiseaseFree", event = "DFS", minprop = minprop, Variables)
      DFSCutPoints <- summary(DFS.res.cut)
      DFS_Plots <- plot(DFS.res.cut, Variables, palette = c("#d70033", "#5596e6"), main="Disease-Free Survival")
      DFS_Title <- "Disease-free survival cut offs;"
      Plots <- c(Plots, DFS_Plots)
      YourDFSPlots <<- DFS_Plots
      n = length(Variables)
      for (i in 1:n) {
        png(paste0("DFS_", Variables[i], ".png"))
        DFS.res.cut <- surv_cutpoint(Data, time = "DiseaseFree", event = "DFS", minprop = minprop, Variables[i])
        SPSSDFSSinglePlot <- plot(DFS.res.cut, Variables[i], palette = c("#d70033", "#5596e6"), main="Disease-Free Survival")
        print(SPSSDFSSinglePlot)
        dev.off()
      }
    }

    if (RFS == "Yes") {
      RFS.res.cut <- surv_cutpoint(Data, time = "DiseaseFree", event = "RFS", minprop = minprop, Variables)
      RFSCutPoints <- summary(RFS.res.cut)
      RFS_Plots <- plot(RFS.res.cut, Variables, palette = c("#d70033", "#5596e6"), main="Recurrence Survival")
      RFS_Title <- "Recurrence-free survival cut offs;"
      Plots <- c(Plots, RFS_Plots)
      YourRFSPlots <<- RFS_Plots
      n = length(Variables)
      for (i in 1:n) {
        png(paste0("RFS_", Variables[i], ".png"))
        RFS.res.cut <- surv_cutpoint(Data, time = "DiseaseFree", event = "RFS", minprop = minprop, Variables[i])
        SPSSRFSSinglePlot <- plot(RFS.res.cut, Variables[i], palette = c("#d70033", "#5596e6"), main="Recurrence-Free Survival")
        print(SPSSRFSSinglePlot)
        dev.off()
      }
    }

    if (MISC == "Yes") {
      MISC.res.cut <- surv_cutpoint(Data, time = "Miscellaneous", event = "MISC", minprop = minprop, Variables)
      MISCCutPoints <- summary(MISC.res.cut)
      MISC_Plots <- plot(MISC.res.cut, Variables, palette = c("#d70033", "#5596e6"), main="Miscellaneous Survival")
      MISC_Title <- "Miscellaneous survival cut offs;"
      Plots <- c(Plots, MISC_Plots)
      YourMISCPlots <<- MISC_Plots
      n = length(Variables)
      for (i in 1:n) {
        png(paste0("CSS_", Variables[i], ".png"))
        MISC.res.cut <- surv_cutpoint(Data, time = "Miscellaneous", event = "MISC", minprop = minprop, Variables[i])
        SPSSCSSSinglePlot <- plot(MISC.res.cut, Variables[i], palette = c("#d70033", "#5596e6"), main="Miscellaneous Survival")
        print(SPSSMISCSinglePlot)
        dev.off()
      }
    }

  }






  if (PlotPalette == "Grayscale") {

    #Determine cut off for cancer-specific survival
    if (CSS == "Yes") {
      CSS.res.cut <- surv_cutpoint(Data, time = "Survival", event = "CSS", minprop = minprop, Variables)
      CSSCutPoints <- summary(CSS.res.cut)
      CSS_Plots <- plot(CSS.res.cut, Variables, palette = c("#000000", "#ABABAB", "#545454", "#FFFFFF"), main="Cancer-Specific Survival")
      CSS_Title <- "Cancer-specific survival cut offs;"
      Plots <- c(Plots, CSS_Plots)
      YourCSSPlots <<- CSS_Plots
      n = length(Variables)
      for (i in 1:n) {
        png(paste0("CSS_", Variables[i], ".png"))
        CSS.res.cut <- surv_cutpoint(Data, time = "Survival", event = "CSS", minprop = minprop, Variables[i])
        GSCSSinglePlot <- plot(CSS.res.cut, Variables[i], palette = c("#000000", "#ABABAB", "#545454", "#FFFFFF"), main="Cancer-Specific Survival")
        print(GSCSSinglePlot)
        dev.off()
      }
    }



    #Determine cut off for overall survival
    if (OS == "Yes") {
      OS.res.cut <- surv_cutpoint(Data, time = "Survival", event = "OS", minprop = minprop, Variables)
      OSCutPoints <- summary(OS.res.cut)
      OS_Plots <- plot(OS.res.cut, Variables, palette = c("#000000", "#ABABAB", "#545454", "#FFFFFF"), main="Overall Survival")
      OS_Title <- "Overall survival cut offs;"
      Plots <- c(Plots, OS_Plots)
      YourOSPlots <<- OS_Plots
      n = length(Variables)
      for (i in 1:n) {
        png(paste0("OS_", Variables[i], ".png"))
        OS.res.cut <- surv_cutpoint(Data, time = "Survival", event = "OS", minprop = minprop, Variables[i])
        GSOSinglePlot <- plot(OS.res.cut, Variables[i], palette = c("#000000", "#ABABAB", "#545454", "#FFFFFF"), main="Overall Survival")
        print(GSOSinglePlot)
        dev.off()
      }
    }

    #Determine cut off for disease-free survival
    if (DFS == "Yes") {
      DFS.res.cut <- surv_cutpoint(Data, time = DiseaseFree, event = DiseaseFreeStatus, minprop = minprop, Variables)
      DFSCutPoints <- summary(DFS.res.cut)
      DFS_Plots <- plot(DFS.res.cut, Variables, palette = c("#000000", "#ABABAB", "#545454", "#FFFFFF"), main="Disease-Free Survival")
      DFS_Title <- "Disease-free survival cut offs;"
      Plots <- c(Plots, DFS_Plots)
      YourDFSPlots <<- DFS_Plots
      n = length(Variables)
      for (i in 1:n) {
        png(paste0("DFS_", Variables[i], ".png"))
        DFS.res.cut <- surv_cutpoint(Data, time = "DiseaseFree", event = "DiseaseFreeStatus", minprop = minprop, Variables[i])
        GSDFSSinglePlot <- plot(DFS.res.cut, Variables[i], palette = c("#000000", "#ABABAB", "#545454", "#FFFFFF"), main="Disease-Free Survival")
        print(GSDFSSinglePlot)
        dev.off()
      }
    }

    if (RFS == "Yes") {
      RFS.res.cut <- surv_cutpoint(Data, time = "DiseaseFree", event = "RFS", minprop = minprop, Variables)
      RFSCutPoints <- summary(RFS.res.cut)
      RFS_Plots <- plot(RFS.res.cut, Variables, palette = c("#000000", "#ABABAB", "#545454", "#FFFFFF"), main="Recurrence Survival")
      RFS_Title <- "Recurrence-free survival cut offs;"
      Plots <- c(Plots, RFS_Plots)
      YourRFSPlots <<- RFS_Plots
      n = length(Variables)
      for (i in 1:n) {
        png(paste0("RFS_", Variables[i], ".png"))
        RFS.res.cut <- surv_cutpoint(Data, time = "DiseaseFree", event = "RFS", minprop = minprop, Variables[i])
        SPSSRFSSinglePlot <- plot(RFS.res.cut, Variables[i], palette = c("#000000", "#ABABAB", "#545454", "#FFFFFF"), main="Recurrence-Free Survival")
        print(SPSSRFSSinglePlot)
        dev.off()
      }
    }

    if (MISC == "Yes") {
      MISC.res.cut <- surv_cutpoint(Data, time = "Miscellaneous", event = "MISC", minprop = minprop, Variables)
      MISCCutPoints <- summary(MISC.res.cut)
      MISC_Plots <- plot(MISC.res.cut, Variables, palette = c("#000000", "#ABABAB", "#545454", "#FFFFFF"), main="Miscellaneous Survival")
      MISC_Title <- "Miscellaneous survival cut offs;"
      Plots <- c(Plots, MISC_Plots)
      YourMISCPlots <<- MISC_Plots
      n = length(Variables)
      for (i in 1:n) {
        png(paste0("CSS_", Variables[i], ".png"))
        MISC.res.cut <- surv_cutpoint(Data, time = "Miscellaneous", event = "MISC", minprop = minprop, Variables[i])
        SPSSCSSSinglePlot <- plot(MISC.res.cut, Variables[i], palette = c("#000000", "#ABABAB", "#545454", "#FFFFFF"), main="Miscellaneous Survival")
        print(SPSSMISCSinglePlot)
        dev.off()
      }
    }

  }



  YourPlotsAll <<- Plots

  pdf("YourPlots.pdf");
  if (CSS == "Yes") {
    textplot(CSSCutPoints, halign="center", valign="top", cex = 1)
    title("CSS Cut Offs")
  }
  if (OS == "Yes") {
    textplot(OSCutPoints, halign="center", valign="top", cex = 1)
    title("OS Cut Offs")
  }
  if (DFS == "Yes") {
    textplot(DFSCutPoints, halign="center", valign="top", cex = 1)
    title("DFS Cut Offs")
  }
  if (RFS == "Yes") {
    textplot(RFSCutPoints, halign="center", valign="top", cex = 1)
    title("RFS Cut Offs")
  }
  if (MISC == "Yes") {
    textplot(MISCCutPoints, halign="center", valign="top", cex = 1)
    title("MISC Cut Offs")
  }
  print(YourPlotsAll);
  dev.off();


  write.csv(OriginalData,"OriginalData.csv", row.names = FALSE)
  write.csv(Data,"ModifiedData.csv", row.names = FALSE)



  message("Wonder Woman hopes that you enjoy your cut-offs. Blessings of Gaea be with you :)")


  return(Plots);


  sink();

}
HHayman/M19 documentation built on June 29, 2021, 2:17 a.m.