首页 > 解决方案 > 查找从大型数据框中子集的数据集的最小值时出错

问题描述

问题目标:寻找州内最好的医院

如果需要,数据文件: 结果-of-care-measures.csv

解释 我正在处理美国不同州的医院数据。csv 文件包含有关 4,000 多家医院心脏病发作、心力衰竭和肺炎的 30 天死亡率和再入院率的信息。

我想编写一个名为“best”的函数,它接受两个参数:一个州的 2 字符缩写名称(例如:“NY”代表纽约)和一个结果名称。该函数读取“outcome-of-care-measures.csv”文件并返回一个字符向量,其中包含在该州的指定结果中具有最佳(即最低)30 天死亡率的医院名称。医院名称是 csv 文件的 Hospital.Name 变量中提供的名称。结果可以是“心脏病发作”、“心力衰竭”或“肺炎”之一。在决定排名时,应将没有特定结果数据的医院排除在医院集合之外

该函数应检查其参数的有效性。如果将无效状态值传递给 best,则该函数应通过 stop 函数抛出错误,并显示确切的消息“无效状态”。如果将无效的结果值传递给 best,则该函数应通过 stop 函数抛出错误,并显示确切的消息“无效结果”。

我写的代码:

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

标签: rsplitsubset

解决方案


推荐阅读