I want to return 2-column data frame containing the hospital in each state that has the specified ranking.
here is an inputs:
rankall <- function(outcome, num = "best") {
data_frame <- data.frame()
data <- read.csv("outcome-of-care-measures.csv", colClasses = "character")
outcomes <- c("heart attack", "heart failure", "pneumonia")
if(!outcome %in% outcomes){stop("invalid outcome")}
df <- subset(data, select = c(Hospital.Name,State,Hospital.30.Day.Death..Mortality..Rates.from.Heart.Attack,
Hospital.30.Day.Death..Mortality..Rates.from.Heart.Failure,
Hospital.30.Day.Death..Mortality..Rates.from.Pneumonia))
Here is a part of my code:
for (i in states){
if(outcome == "heart attack"){
if(num =="best"){
m <- df$Hospital.Name[which.min(df[ ,3])]
data_frame <- rbind(data_frame,data.frame(m,i))
}else if(num == "worst"){
m <- df$Hospital.Name[which.max(df[ ,3])]
data_frame <- rbind(data_frame,data.frame(m,i))
}else{
df <- df[order(df[,3],df[["Hospital.Name"]],decreasing=FALSE,na.last=NA),]
m<- df[num,"Hospital.Name"]
data_frame <- rbind(data_frame,data.frame(m,i))
The problem is, that my data.frame of hospitals returns me one hospital for all states: here is my code:
head(rankall("heart attack", 20), 10)
m i
1 NORTHWESTERN MEMORIAL HOSPITAL AL
2 NORTHWESTERN MEMORIAL HOSPITAL AK
3 NORTHWESTERN MEMORIAL HOSPITAL AZ
4 NORTHWESTERN MEMORIAL HOSPITAL AR
5 NORTHWESTERN MEMORIAL HOSPITAL CA
6 NORTHWESTERN MEMORIAL HOSPITAL CO
7 NORTHWESTERN MEMORIAL HOSPITAL CT
8 NORTHWESTERN MEMORIAL HOSPITAL DE
9 NORTHWESTERN MEMORIAL HOSPITAL DC
10 NORTHWESTERN MEMORIAL HOSPITAL FL
Can you please advice me how to return data frame containing the hospitals for each state with specified ranking?
data
structure(list(Hospital.Name = c("SOUTHEAST ALABAMA MEDICAL CENTER",
"MARSHALL MEDICAL CENTER SOUTH", "ELIZA COFFEE MEMORIAL HOSPITAL",
"MIZELL MEMORIAL HOSPITAL", "CRENSHAW COMMUNITY HOSPITAL", "MARSHALL MEDICAL CENTER NORTH",
"ST VINCENT'S EAST", "DEKALB REGIONAL MEDICAL CENTER", "SHELBY BAPTIST MEDICAL CENTER",
"CALLAHAN EYE FOUNDATION HOSPITAL", "HELEN KELLER MEMORIAL HOSPITAL",
"DALE MEDICAL CENTER", "CHEROKEE MEDICAL CENTER", "BAPTIST MEDICAL CENTER SOUTH",
"JACKSON HOSPITAL & CLINIC INC"), State = c("AL", "AL", "AL",
"AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL",
"AL"), Hospital.30.Day.Death..Mortality..Rates.from.Heart.Attack = c("14.3",
"18.5", "18.1", "Not Available", "Not Available", "Not Available",
"17.7", "18.0", "15.9", "Not Available", "19.6", "17.3", "Not Available",
"17.8", "17.5"), Hospital.30.Day.Death..Mortality..Rates.from.Heart.Failure = c("11.4",
"15.2", "11.3", "13.6", "13.8", "12.5", "10.9", "16.6", "13.6",
"Not Available", "12.6", "11.8", "12.1", "11.8", "10.2"), Hospital.30.Day.Death..Mortality..Rates.from.Pneumonia = c("10.9",
"13.9", "13.4", "14.9", "15.8", "8.7", "16.2", "15.8", "10.7",
"Not Available", "15.0", "9.9", "14.7", "14.3", "14.7")), .Names = c("Hospital.Name",
"State", "Hospital.30.Day.Death..Mortality..Rates.from.Heart.Attack",
"Hospital.30.Day.Death..Mortality..Rates.from.Heart.Failure",
"Hospital.30.Day.Death..Mortality..Rates.from.Pneumonia"), row.names = c(NA,
15L), class = "data.frame")