未能根据通过rankall函数的num参数传递的秩对正确的行进行子集划分
这是我在Coursera上为R编程准备的课程。我已经完成了这门课程,但我真的想弄清代码中错误的根源 该数据集的相关字段包含医院、州和三个死亡率指标。需要创建一个函数未能根据通过rankall函数的num参数传递的秩对正确的行进行子集划分,r,R,这是我在Coursera上为R编程准备的课程。我已经完成了这门课程,但我真的想弄清代码中错误的根源 该数据集的相关字段包含医院、州和三个死亡率指标。需要创建一个函数rankall(outcome,num=“best”),以返回一个数据框,该数据框基于通过num参数传递的排名和通过outcome传递的死亡率度量,显示每个州的医院 当num是一个数值时,我的脚本工作正常。然而,当num为“最佳”或“最差”时,返回的医院不正确 调用tail(rankall(“肺炎”,“最差”),3)时,返回的预期值应
rankall(outcome,num=“best”)
,以返回一个数据框,该数据框基于通过num
参数传递的排名和通过outcome传递的死亡率度量,显示每个州的医院
当num
是一个数值时,我的脚本工作正常。然而,当num
为“最佳”或“最差”时,返回的医院不正确
调用tail(rankall(“肺炎”,“最差”),3)
时,返回的预期值应如下所示:
hospital state
WI MAYO CLINIC HEALTH SYSTEM - NORTHLAND, INC WI
WV PLATEAU MEDICAL CENTER WV
WY NORTH BIG HORN HOSPITAL DISTRICT WY
我得到的返回值如下:
state
WI "HOLY FAMILY MEMORIAL INC" "WI"
WV "THOMAS MEMORIAL HOSPITAL" "WV"
WY "SHERIDAN MEMORIAL HOSPITAL" "WY"
提前感谢任何愿意抽出时间阅读我文章的人
这是我的剧本:
rankall <- function (outcome, num = "best") {
dat <- read.csv("outcome-of-care-measures.csv", colClass = "character", na.strings = "Not Available")
#verify outcome
if (!outcome %in% c("heart attack", "heart failure", "pneumonia")){
stop("invalid outcome")
}
#verify num
if (!is.numeric(num)) {
if (is.character(num)) {
if (!num %in% c("best", "worst")){
stop("invalid num")
}
}
}
col = c("heart attack" = 11, "heart failure" = 17, "pneumonia" = 23)
state = unique(dat$State)
state = state[order(state)]
subdat <- dat[,c(2,7,col)]
names(subdat) <- c("hospital", "state", "death")
subdat$death <- as.numeric(subdat$death)
subdat$hospital <- as.character(subdat$hospital)
subdat <- subdat[complete.cases(subdat$death),]
s = split(subdat, subdat$state)
ls_hospital <- lapply(s, function(x, num) {
x <- x[order(x$death, x$hospital, na.last = NA),]
if (num == "best") {return(x$hospital[1])}
else if (num == "worst") {return(x$hospital[nrow(x)])}
else {return(x$hospital[num])}
}, num)
ans <- cbind(unlist(ls_hospital), state)
return(ans)
}
rankall只有一个错误。当您对原始文件进行子集设置时
dataframe您的代码是:
subdat <- dat[,c(2,7,col)]
subdat只有一个错误。当您对原始文件进行子集设置时
dataframe您的代码是:
subdat <- dat[,c(2,7,col)]
subdat天哪,这真是个愚蠢的错误。非常感谢你的帮助,警察!天哪,这真是个愚蠢的错误。非常感谢你的帮助,警察!