我需要从CSV中选择大型数据集中的列。
我有这个功能。两个字符参数 - 是State和desease名称。根据疾病名称,我需要在大型数据集中选择正确的列来执行计算。
best <- function(state, outcome) {
OutcomeData <- read.csv("outcome-of-care-measures.csv", colClasses = "character")
其次,我尝试根据函数参数结果为变量OutcomeCol
赋值。 Number是OutcomeData
数据集中对应outcome
参数的列号。
I
## 2 - Hospital.Name
## 7 - State
## 11 - 30 Day mortality Heart Attack
## 17 - 30 Day mortality Heart Failure
## 23 - 30 Day mortality Pneumonia
## Choose Outcome for filtering data
if (outcome == "heart attack") {OutcomeCol <- 11}
if (outcome == "heart failure") {OutcomeCol <- 17}
if (outcome == "pneumonia") {OutcomeCol<- 23}
try(if (!exists("OutcomeCol")) {stop("invalid outcome")}, silent = TRUE)
但是当我尝试运行最佳功能(“TX”,“心脏衰竭”)时,没有任何反应。如果我尝试在if语句之后放置print(OutcomeCol)
,则返回NA。
错误在哪里?也许有其他简单的方法来执行此操作?
答案 0 :(得分:0)
所以我找到了另一种方法 - 制作查找表是一个很好的方法(而不是一系列ifs!
mortalityColumn <- c(11, 17, 23) lookup <- data.frame(outcomes,
mortalityColumn) OutcomeCol <- lookup$mortalityColumn[lookup$outcomes %in% outcome]