0

I'm making a function that takes outcome as an input. outcome makes reference to a column name in my data.frame. When using my function I want to be able to input "heart attack" as the outcome, even though the column name is heart.attack. I want to be able to reference to my column from the input in outcome. Below is what I've so far.

rankall <- function(outcome, num = "best") {
  data <- read.csv("rprog_data_ProgAssignment3-data/outcome-of-care-measures.csv", colClasses = "character")
  names(data)[names(data)=="Hospital.30.Day.Death..Mortality..Rates.from.Heart.Failure"] <- "heart.failure"
  names(data)[names(data)=="Hospital.30.Day.Death..Mortality..Rates.from.Heart.Attack"] <- "heart.attack"
  names(data)[names(data)=="Hospital.30.Day.Death..Mortality..Rates.from.Pneumonia"] <- "pneumonia"
  data$heart.attack <- suppressWarnings(as.numeric(data$heart.attack))
  data$heart.failure <- suppressWarnings(as.numeric(data$heart.failure))
  data$pneumonia <- suppressWarnings(as.numeric(data$pneumonia))

  if(outcome=="heart failure"){
    outcome <- data$heart.attack
  } else if(outcome=="heart attack"){
    outcome <- data$heart.attack
  } else if(outcome=="pneumonia"){
    outcome <- data$pneumonia
  } else{
    stop("Invalid Outcome")
  }

  data <- select(data,Hospital.Name,State,outcome)
  data <- data %>%
    group_by(State) %>%
    mutate(my_ranks = order(order(outcome, Hospital.Name, decreasing = T)))

  if(num=="best"){
    num=1
    data <- subset(data,data$my_ranks==num)
  } else if(num=="worst"){
    num=nrow(data)
  }

}
kevinn-12
  • 13
  • 5
  • Does this answer your question? [Dynamically select data frame columns using $ and a vector of column names](https://stackoverflow.com/questions/18222286/dynamically-select-data-frame-columns-using-and-a-vector-of-column-names) – anotherfred Nov 28 '19 at 12:57
  • Not clear, but I'm assuming you want to select a column using a column name stored in a variable? – anotherfred Nov 28 '19 at 12:58
  • @anotherfred whenever "heart attack" is input as a function I want to reference it to column heart.attack, but that I can still call using outcome. – kevinn-12 Nov 28 '19 at 13:03

0 Answers0