Plot The 30-day Mortality Rates For Heart Attack, Pneumonia And Heart Failure
outcome <- read.csv("F:/Programming Assignment 3/outcome-of-care-measures.csv",colClasses = "character")
outcome[,11] <- as.numeric(outcome[,11]) # Converting Column Class to Numeric for 11th column
## Warning: NAs introduced by coercion
outcome[,17] <- as.numeric(outcome[,17]) # Converting Column Class to Numeric for 17th column
## Warning: NAs introduced by coercion
outcome[,23] <- as.numeric(outcome[,23]) # Converting Column Class to Numeric for 23th column
## Warning: NAs introduced by coercion
par(mfrow=c(3,1))
hist(outcome[,11],main = "Heart Attack")
hist(outcome[,23],main = "Pneumonia")
hist(outcome[,17],main = "Heart Failure")

Finding The Best Hospital In A state
best <- function(state,outcome){
database <- read.csv("F:/Programming Assignment 3/outcome-of-care-measures.csv",colClasses = "character")
## Creating New Data Frame 'hst' and naming the columns
hst <- as.data.frame(cbind(database[,2],database[,7],database[,11],database[,17],database[,23]),stringsAsFactors = FALSE)
colnames(hst) <- c("hospital","state","heart attack","heart failure","pneumonia")
## Code for finding the best hospital in the state for the required outcome
if(!state %in% hst$state){
stop('invalid state')
} else if (!outcome %in% c("heart attack","heart failure","pneumonia")){
stop('invalid outcome')
} else {
s <- which(hst[,"state"]==state)
ts <- hst[s,] # Data extraction from available states
o <- as.numeric(ts[,eval(outcome)])
minimumvalue <- min(o,na.rm = TRUE)
final <- ts[,"hospital"][which(o==minimumvalue)]
output <- final[order(final)]
}
output
}
Ranking Hospitals By Outcome In A State
rankhospital <- function(state,outcome,rank="best"){
database <- read.csv("F:/Programming Assignment 3/outcome-of-care-measures.csv",colClasses = "character")
## Creating New Data Frame 'hst' and naming the columns
hst <- as.data.frame(cbind(database[,2],database[,7],database[,11],database[,17],database[,23]))
colnames(hst) <- c("hospital","state","heart attack","heart failure","pneumonia")
## Code for ranking hospital by outcome in a state
if(!state %in% hst$state){
stop('invalid state')
} else if (!outcome %in% c("heart attack","heart failure","pneumonia")){
stop('invalid outcome')
} else if (is.numeric(rank)){
s <- which(hst[,"state"]==state)
ts <- hst[s,] # Data extraction from available states
ts[, eval(outcome)] <- as.numeric(ts[, eval(outcome)])
ts <- ts[order(ts[, eval(outcome)], ts[, "hospital"]), ]
output <- ts[, "hospital"][rank]
} else if (!is.numeric(rank)){
if (rank=="best"){
output <- best(state,outcome)
} else if (rank=="worst") {
s <- which(hst[,"state"]==state)
ts <- hst[s,] # Data extraction from available states
ts[, eval(outcome)] <- as.numeric(ts[, eval(outcome)])
ts <- ts[order(ts[, eval(outcome)], ts[, "hospital"],decreasing=TRUE), ]
output <- ts[,"hospital"][1]
} else{
stop('invalid rank')
}
}
output
}
Ranking Hospitals In All States
rankall <- function(outcome, num = "best"){
## Read outcome data
database <- read.csv("F:/Programming Assignment 3/outcome-of-care-measures.csv",colClasses = "character")
## Creating New Data Frame 'hst' and naming the columns
hst <- as.data.frame(cbind(database[,2],database[,7],database[,11],database[,17],database[,23]) ,stringsAsFactors = FALSE)
colnames(hst) <- c("hospital","state","heart attack","heart failure","pneumonia")
hst[, eval(outcome)] <- as.numeric(hst[, eval(outcome)])
## Coding for ranking the hospitals in all the states
if (!outcome %in% c("heart attack", "heart failure", "pneumonia")){
stop('invalid outcome')
} else if (is.numeric(num)) {
by_state <- with(hst, split(hst, state))
ordered <- list()
for (i in seq_along(by_state)){
by_state[[i]] <- by_state[[i]][order(by_state[[i]][, eval(outcome)],
by_state[[i]][, "hospital"]), ]
ordered[[i]] <- c(by_state[[i]][num, "hospital"], by_state[[i]][, "state"][1])
}
result <- do.call(rbind, ordered)
output <- as.data.frame(result, row.names = result[, 2], stringsAsFactors = FALSE)
names(output) <- c("hospital", "state")
} else if (!is.numeric(num)) {
if (num == "best") {
by_state <- with(hst, split(hst, state))
ordered <- list()
for (i in seq_along(by_state)){
by_state[[i]] <- by_state[[i]][order(by_state[[i]][, eval(outcome)],
by_state[[i]][, "hospital"]), ]
ordered[[i]] <- c(by_state[[i]][1, c("hospital", "state")])
}
result <- do.call(rbind, ordered)
output <- as.data.frame(result, stringsAsFactors = FALSE)
rownames(output) <- output[, 2]
} else if (num == "worst") {
by_state <- with(hst, split(hst, state))
ordered <- list()
for (i in seq_along(by_state)){
by_state[[i]] <- by_state[[i]][order(by_state[[i]][, eval(outcome)],
by_state[[i]][, "hospital"],
decreasing = TRUE), ]
ordered[[i]] <- c(by_state[[i]][1, c("hospital", "state")])
}
result <- do.call(rbind, ordered)
output <- as.data.frame(result, stringsAsFactors = FALSE)
rownames(output) <- output[, 2]
} else {
stop('invalid num')
}
}
output
}