-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathrankhospital.R
34 lines (30 loc) · 1.48 KB
/
rankhospital.R
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
rankhospital <- function(state, outcome, num = "best") {
## Read outcome data
data <- read.csv("outcome-of-care-measures.csv", colClasses = "character")
## Check that state and outcome are valid
sdata <- data[data$State == state, ]
if(length(sdata[, 1]) == 0) {
return(paste("Error in best(",'"',state,'",', '"',outcome,'"',") : invalid state"))
}
if(outcome == "heart attack") {
disease <- "Hospital.30.Day.Death..Mortality..Rates.from.Heart.Attack"
} else if(outcome == "heart failure") {
disease <- "Hospital.30.Day.Death..Mortality..Rates.from.Heart.Failure"
} else if(outcome == "pneumonia") {
disease <- "Hospital.30.Day.Death..Mortality..Rates.from.Pneumonia"
} else {
return(paste("Error in best(",'"',state,'",', '"',outcome,'"',") : invalid outcome"))
}
## Return hospital name in that state with the given rank
subdata <- subset(sdata, , select = c("Hospital.Name", disease))
colnames(subdata) <- c("name", "disease")
dnadata <- subdata[complete.cases(as.numeric(subdata$disease)), ]
rdata <- dnadata[order(as.numeric(dnadata$disease), dnadata$name), ]
if(num == "best") {
num <- 1
} else if(num == "worst") {
num <- as.numeric(length(rdata))
}
## 30-day death rate
return(rdata[num, 1])
}