Uncategorized

A milestone

Screen Shot 2016-02-13 at 11.59.14 PM

A good training program I would recommend to any data scientists and researchers.

Here is the final assignment I just completed in this course:

## R Programming Assignment 3 - Part III
## TASKS:
## (1) Plot the 30-day mortality rates for heart attack
## (2) Finding the best hospital in a state
## (3) Ranking hospitals by outcome in a state
## -> (4) Ranking hospitals in all states
## (4) Ranking hospitals in all states
rankall <- function (outcome_name, num = "best") {
setwd("/Users/lucky1eva/Downloads/rprog-data-ProgAssignment3-data/")
outcome <- read.csv("outcome-of-care-measures.csv")
# Check validity
if (!outcome_name %in% c("heart attack", "heart failure", "pneumonia")) {
stop("invalid outcome")
}
# Subset relevant data from all states
outcome <- subset(outcome, 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"))
# Assign colnames to match the arguments in terms of outcome_name
colnames(outcome) <- c("Name","State", "heart attack", "heart failure", "pneumonia")
# Correct classes of each variable
outcome[, 3:5] <- apply(outcome[, 3:5], 2, function(x) as.numeric(x))
outcome[, 1:2] <- apply(outcome[, 1:2], 2, function(x) as.character(x))
# Restructure the data frame and keep the class unchanged
outcome_by_state <- split(outcome, outcome$State) # split outcome table by state
outcome_table <- lapply(outcome_by_state, as.data.frame) # set each element class to data.frame
# define a function to use lapply() to set new order for each table at once
f <- function (x, y) {x[order(x[, y], x[, 1]), ]}
sorted_table <- lapply(outcome_table, f, y = outcome_name)
all_listed <- NULL # just to define the return variable used in the following
for (i in 1:54) { # check in each state if the rank requested by 'num' is numeric / char and if within range
if (class(num) == "numeric" && num <= sum(!is.na(sorted_table[[i]][, outcome_name])) && num >= 1) {
all_listed <- rbind(all_listed, sorted_table[[i]][num, 1:2])
} else if (class(num) == "numeric" && num > sum(!is.na(sorted_table[[i]][, outcome_name])) ) {
all_listed <- rbind(all_listed, data.frame("Name" = NA, "State" = names(sorted_table[i])))
} else if ( num == "best") {
all_listed <- rbind(all_listed, sorted_table[[i]][1, 1:2])
} else if (num == "worst") {
all_listed <- rbind(all_listed, sorted_table[[i]][sum(!is.na(sorted_table[[i]][, outcome_name])), 1:2])
}
}
all_listed
}
view raw rankall.R hosted with ❤ by GitHub

Ph.D. in Economics with interests in Life Science, Behavioral Science, Health Economics Evaluation and Health Technology Assessment. Executive MBA student at The University of Chicago Booth School of Business in Hong Kong, graduating in 2020.

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.