Skip to content

Instantly share code, notes, and snippets.

@oskar-j
Created May 31, 2015 14:01
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save oskar-j/a8825a6794bd1a0f3aa9 to your computer and use it in GitHub Desktop.
Save oskar-j/a8825a6794bd1a0f3aa9 to your computer and use it in GitHub Desktop.
Get rankings for US hospitals for a given state
rankhospital <- function(state, outcome, num = "best") {
dissease <- c("heart attack", "heart failure", "pneumonia")
## Read data
dataset <- read.csv("outcome-of-care-measures.csv",
colClasses = "character")
dataset[, 11] <- suppressWarnings ( as.numeric(dataset[, 11]) )
dataset[, 17] <- suppressWarnings ( as.numeric(dataset[, 17]) )
dataset[, 23] <- suppressWarnings ( as.numeric(dataset[, 23]) )
## Check that state and outcome are valid
if(!is.element(outcome, dissease)){
stop("invalid outcome")
}
if(!state %in% unique(dataset[!is.na(dataset$State), c("State")]) ){
stop("invalid state")
}
## Return hospital name in that state
## with lowest 30-day death rate
if (identical(outcome,dissease[1])) {
scolumn <- 11
}
else if (identical(outcome,dissease[2])) {
scolumn <- 17
}
else {
scolumn <- 23
}
data <- dataset[
which(!is.na(dataset[, scolumn])
& dataset$State %in% state),
]
if (num == "best") {
result <- head( data[ order(data[,scolumn],
data[,2]), c("Hospital.Name")] , n = 1)
result
} else if (num == "worst") {
result <- tail( data[ order(data[,scolumn],
data[,2]), c("Hospital.Name")] , n = 1)
result
} else {
result <- data[ order(data[,scolumn],
data[,2]), c("Hospital.Name")]
tryCatch({ result[num] }, error = function (e) {NA} )
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment