This report was automatically generated with the R package knitr (version 1.0).
rankall <- function(outcome, num = "best") {
## Read outcome data
outcomeCM<-read.csv("outcome-of-care-measures.csv",colClasses = "character") # if not using "colClass" option, death rate will be factor class and as.numberic() will get wrong data
stateName<-outcomeCM[,7] # the State column (no NAs)
ha_dr<-suppressWarnings(as.numeric(outcomeCM[,11])) # the heart attack death rate column (with NA)
hf_dr<-suppressWarnings(as.numeric(outcomeCM[,17])) # the heart failure death rate column (with NA)
pn_dr<-suppressWarnings(as.numeric(outcomeCM[,23])) # the Pneumonia death rate column (with NA)
# ha_dr<-as.numeric(outcomeCM[,11][!outcomeCM[,11]=="Not Available"]) # the heart attack death rate column (without NA)
# hf_dr<-as.numeric(outcomeCM[,17][!outcomeCM[,17]=="Not Available"]) # the heart failure death rate column (with NA)
# pn_dr<-as.numeric(outcomeCM[,23][!outcomeCM[,23]=="Not Available"]) # the Pneumonia death rate column (with NA)
stateNameUni<-unique(stateName[!is.na(stateName)])
state.Name.Order <- stateNameUni[order(stateNameUni)]
const <- list(outcome=c("heart attack","heart failure","pneumonia"),state=state.Name.Order,dr.w.na=list(heart.attack=ha_dr,heart.failure=hf_dr,pneumonia=pn_dr))
## Check that state and outcome are valid
# if(!is.element(state,const$state)){
# #return(sprintf("Error in best(%s, %s) : invalid state",state,outcome))
# stop("invalid state")
# }
if(!is.element(outcome,const$outcome)){
#return(sprintf("Error in best(%s, %s) : invalid outcome",state,outcome))
stop("invalid outcome")
}
## need a function get (the hostpital counts ) by state and outcome
hostpitalNumber<-function(state,outcome){
if(outcome=="heart attack"){
dr=ha_dr
orderHospitalAll<-outcomeCM[order(dr,outcomeCM[,2]),]
orderHosiptalValid<-orderHospitalAll[orderHospitalAll[,11]!="Not Available",] # with no NA in death rate column
}
if(outcome=="heart failure"){
dr=hf_dr
orderHospitalAll<-outcomeCM[order(dr,outcomeCM[,2]),]
orderHosiptalValid<-orderHospitalAll[orderHospitalAll[,17]!="Not Available",] # with no NA in death rate column
}
if(outcome=="pneumonia"){
dr=pn_dr
orderHospitalAll<-outcomeCM[order(dr,outcomeCM[,2]),]
orderHosiptalValid<-orderHospitalAll[orderHospitalAll[,23]!="Not Available",] # with no NA in death rate column
}
length(orderHosiptalValid[orderHosiptalValid$State==state,][,2])
}
rankhospitalLite <- function(state, outcome, num = "best") {
if(outcome=="heart attack"){
orderHositalAll<-outcomeCM[order(ha_dr,outcomeCM[,2]),] #
if (num=="best"){num=1}
if (num=="worst"){num<-hostpitalNumber(state,outcome)}
if (num> hostpitalNumber(state,outcome)){num=""}
orderHositalAll[orderHositalAll$State==state,][,2][num]
}
else if(outcome=="heart failure"){
orderHositalAll<-outcomeCM[order(hf_dr,outcomeCM[,2]),]
if (num=="best"){num=1}
if (num=="worst"){num<-hostpitalNumber(state,outcome)}
if (num> hostpitalNumber(state,outcome)){num=""}
orderHositalAll[orderHositalAll$State==state,][,2][num]
}
else if(outcome=="pneumonia"){
orderHositalAll<-outcomeCM[order(pn_dr,outcomeCM[,2]),]
if (num=="best"){num=1}
if (num=="worst"){num<-hostpitalNumber(state,outcome)}
if (num> hostpitalNumber(state,outcome)){num=""}
orderHositalAll[orderHositalAll$State==state,][,2][num]
}
}
## For each state, find the hospital of the given rank
## Return a data frame with the hospital names and the
## (abbreviated) state name
resu <- data.frame(hospital="",state=const$state)
resu$hospital <- sapply(const$state,rankhospitalLite,outcome,num)
return(resu)
}
The R session information (including the OS info, R version and all packages used):
sessionInfo()
## R version 2.15.2 (2012-10-26)
## Platform: x86_64-w64-mingw32/x64 (64-bit)
##
## locale:
## [1] LC_COLLATE=Chinese (Simplified)_People's Republic of China.936
## [2] LC_CTYPE=Chinese (Simplified)_People's Republic of China.936
## [3] LC_MONETARY=Chinese (Simplified)_People's Republic of China.936
## [4] LC_NUMERIC=C
## [5] LC_TIME=Chinese (Simplified)_People's Republic of China.936
##
## attached base packages:
## [1] stats graphics grDevices utils datasets methods base
##
## loaded via a namespace (and not attached):
## [1] digest_0.6.0 evaluate_0.4.3 formatR_0.7 knitr_1.0
## [5] stringr_0.6.2 tools_2.15.2
Sys.time()
## [1] "2013-01-22 16:26:34 CST"