Ошибка при поиске минимума набора данных, подмножества из большого фрейма данных - PullRequest
0 голосов
/ 09 октября 2019

Задача Задача: Найти лучшую больницу в штате

Файл данных, если необходимо: результат лечения .csv

Пояснение Я работаю с данными больниц для разных штатов США. Файл csv содержит информацию о 30-дневной смертности и реадмиссии для сердечных приступов, сердечной недостаточности и пневмонии для более чем 4000 больниц.

Я хочу написать функцию под названием «best», которая принимает два аргумента:-характер сокращенное название штата (например, «Нью-Йорк» для Нью-Йорка) и название результата. Функция читает файл 'result-of-care-measure.csv' и возвращает вектор символов с названием больницы, которая имеет лучшую (т.е. самую низкую) 30-дневную смертность для указанного результата в этом состоянии. Название больницы - это имя, указанное в переменной Hospital.Name в файле csv. Результатами могут быть «сердечный приступ», «сердечная недостаточность» или «пневмония». Больницы, у которых нет данных о конкретном результате, должны быть исключены из набора больниц при определении рейтинга

Функция должна проверять достоверность своих аргументов. Если недопустимое значение состояния передается наилучшим образом, функция должна выдать ошибку через функцию stop с точным сообщением «недопустимое состояние». Если недопустимое значение результата передается наилучшему, функция должна выдать ошибку с помощью функции остановки с точным сообщением «недопустимый результат».

Код I, написанный:

best <- function(state,outcome) {
  df <- read.csv("outcome-of-care-measures.csv")
  df1 <- df[ ,c(2,7,11,17,23)] # column numbers correspond to the columns of interest from the entire csv file
  table <- split(df1,df1$State)
  if (outcome == "heart attack") {
    n = 3
  } else if (outcome == "heart failure") {
    n = 4
  } else if (outcome == "pneumonia") {
    n = 5
  } else {
    stop("Invalid Outcome")
  }

  min.val <- min(table$state[,n],na.rm = TRUE)
  row.no <- which(table$state[,n] == min.val)
  print(table$state[1,row.no])
}

Ошибка

best("TX", "heart failure")
NULL
Warning message:
In min(table$state[, n], na.rm = TRUE) :
  no non-missing arguments to min; returning Inf
...