基于函数字符参数在R中子集数据框
Subsetting data frame in R, based on function character parameter
我需要从 CSV 中的大型数据集中选择一列。
我有这个功能。两个字符参数 - 是州名称和疾病名称。根据疾病名称,我需要在大型数据集中选择正确的列来执行计算。
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","heart failure")什么也没有发生。如果我尝试在 if 语句之后放置 print(OutcomeCol)
- 它 returns NA.
哪里出错了?也许还有另一种简单的方法来执行此操作?
所以我找到了另一种方法 - 进行查找 table 是一个很好的方法(而不是一系列的 ifs!
mortalityColumn <- c(11, 17, 23) lookup <- data.frame(outcomes,
mortalityColumn) OutcomeCol <- lookup$mortalityColumn[lookup$outcomes %in% outcome]
我需要从 CSV 中的大型数据集中选择一列。
我有这个功能。两个字符参数 - 是州名称和疾病名称。根据疾病名称,我需要在大型数据集中选择正确的列来执行计算。
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","heart failure")什么也没有发生。如果我尝试在 if 语句之后放置 print(OutcomeCol)
- 它 returns NA.
哪里出错了?也许还有另一种简单的方法来执行此操作?
所以我找到了另一种方法 - 进行查找 table 是一个很好的方法(而不是一系列的 ifs!
mortalityColumn <- c(11, 17, 23) lookup <- data.frame(outcomes,
mortalityColumn) OutcomeCol <- lookup$mortalityColumn[lookup$outcomes %in% outcome]