【问题标题】:How to calculate the minimum amount based on user input value如何根据用户输入值计算最小金额
【发布时间】:2016-05-14 06:23:34
【问题描述】:

这里我得到包含 4706 个观察值的 csv 文件,然后我需要构建一个“最佳主机”函数,该函数基于状态和关键字用户输入来计算不同医院不同医院的最小心脏病发作、心力衰竭、肺炎发病率状态,然后按升序返回第一个医院名称。

下面是我写的部分代码,但是我一直在纠结如何根据状态用户输入计算最小值。例如,如果用户输入 NY,则找到最低心脏病发作率,然后返回 NY 的医院名称

best<-function(state,outcome){
a<-read.csv("outcome-of-care-measures.csv",na.string="Not Available")
if(!state %in% a[,7])
print ("invalid state")
if(outcome=="heart attack")
bd<-suppressWarnings(as.numeric(as.character(a[,11])))
.... 
}

数据样本可能是这样的:

Hospital   State    deaths in heart attack   deaths in heart failure 

L hospital  NY       10.1                     10.2

S hospital  NY       10.2                     10.5

M hospital  AZ       18.0                     14.5

Z hospital  AZ       14.0                     14.5

预期结果是:

best("NY", "heart attack")

[1] L Hospital

best("AZ", "heart failure")

[1] "M Hostpital"

请注意,文件中的心脏病发作率是factor 变量,所以我需要将其转换为numeric,如何进行?谢谢!

【问题讨论】:

  • 我已经添加了示例文件和预期结果,对不起,我会更加注意。

标签: r min


【解决方案1】:

也许这有帮助

best <- function(dat, St, keyword){
  nm1 <- grep(keyword, names(dat))
  i1 <- dat[["State"]] == St
  Subdat <- dat[i1,]
  Subdat[["Hospital"]][which.min(Subdat[,nm1])]
 }

best(df1, "NY", "heart attack")
#[1] "L hospital"
best(df1, "AZ", "heart failure")
#[1] "M hospital"

注意:不清楚哪一列是heart attack rate

数据

df1 <- structure(list(Hospital = c("L hospital", "S hospital", 
"M hospital", 
"Z hospital"), State = c("NY", "NY", "AZ", "AZ"), 
`deaths in heart attack` = c(10.1, 
10.2, 18, 14), `deaths in heart failure` = c(10.2, 10.5, 14.5, 
14.5)), .Names = c("Hospital", "State", "deaths in heart attack", 
"deaths in heart failure"), class = "data.frame", row.names = c(NA, -4L))

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-23
    • 2012-07-12
    • 2022-01-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多