【问题标题】:Subsetting data frame in R, based on function character parameterR中的子集数据框,基于函数字符参数
【发布时间】:2015-09-12 06:21:25
【问题描述】:

我需要从 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”,“心力衰竭”)没有任何反应。如果我尝试在 if 语句之后放置 print(OutcomeCol) - 它会返回 NA。

错误在哪里?也许还有另一种简单的方法来执行此操作?

【问题讨论】:

  • 您的函数没有return 值或结束}...或者您只是没有完整粘贴?
  • 谢谢@Frank!是的,这是功能中似乎不起作用的部分。我找到了另一种正确解决此问题的方法。 mortalityColumn &lt;- c(11, 17, 23) lookup &lt;- data.frame(outcomes, mortalityColumn) OutcomeCol &lt;- lookup$mortalityColumn[lookup$outcomes %in% outcome]
  • 酷,很高兴听到你已经想通了。是的,制作一个查找表是一个好方法(而不是ifs 的序列)
  • 是的。我正在为我的统计数据学习这个工具。所以第一步是困难的。谢谢!

标签: r function if-statement subset


【解决方案1】:

所以我找到了另一种方法 - 制作查找表是一种很好的方法(而不是一系列 ifs!

  mortalityColumn <- c(11, 17, 23) lookup <- data.frame(outcomes, 
  mortalityColumn) OutcomeCol <- lookup$mortalityColumn[lookup$outcomes %in% outcome]

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-21
    • 1970-01-01
    • 1970-01-01
    • 2020-11-21
    • 1970-01-01
    • 2013-06-06
    相关资源
    最近更新 更多