rankall : returning the correct data frame to rank hospitals on performance

1.4k views Asked by At

this is a solution(not working well) to a coursera problem. I'm trying to rank a data frame containing the names of hospitals based on their performance on 3 different conditions. (I found another to this question at How to subset a row from list based on condition). I think I'm not subsetting right and I don't return the correct data frame at the end. really new to programming and R. thank you for your help.

rankall <- function(outcome, num = 'best'){
    data <- read.csv('outcome-of-care-measures.csv', colClasses =      'character')                 
   data[,11] <- as.numeric(data[,11])
   data[,17] <- as.numeric(data[,17])
   data[17] <- as.numeric(data[,23])

   states <- sort(unique(data$State))
   conditions <- data[c(11,17,23)]
   if(!state %in% states){stop('invalid state')}
   if(!outcome %in% conditions){stop('invalid outcome')}

   for (i in 1:length(states)){
   statedata <-data[data$State == state[i],]
   if(outcome == 'heart attack'){column <- (statedata[,11]}
   if(outcome == 'heart failure') {column <-(statedata[,17]}
   if(outcome == 'pneumonia') {column <- statedata[,23]}

   rankedhospitals <- c()
   rankcondition <- rank(column, na.last = NA)

   if (num == 'best'){num <- 1}
   if(num == 'worst'){num <- nrow(rankcondition)}
   rankedhospitals[i] <- statedata$Hospital.Name[order(column,    statedata$Hospital.Name)[num]]
   rankedhospitals <- cbind(rankedhospitals,states[num,2])

}
  return (c('rankedhospitals', 'states'))
}
0

There are 0 answers