【问题标题】:Removing 'Not Available' from a .csv file in R从 R 中的 .csv 文件中删除“不可用”
【发布时间】:2021-02-13 19:08:13
【问题描述】:

我正在尝试使用 R 从 .csv 文件中删除“不可用”。我已经想出了如何缩小文件范围并排列数据,但未删除“不可用”。我尝试过使用 complete.cases、na.omit 和 lapply,但它们都不起作用。对此的任何帮助将不胜感激。请参阅下面的作业:

"编写一个名为 best 的函数,它有两个参数:一个状态的 2 字符缩写名称和一个 结果名称。该函数读取 result-of-care-measures.csv 文件并返回一个字符向量 指定结果的 30 天死亡率最高(即最低)的医院的名称 在那个状态。医院名称是 Hospital.Name 变量中提供的名称。结果可以 是“心脏病发作”、“心力衰竭”或“肺炎”之一。没有特定数据的医院 在决定排名时应将结果从医院集合中排除"

best <- function(state, outcome)
{
  chart <- read.csv("outcome-of-care-measures.csv", colClasses = "character")
  
  if (!any(state == chart$State)){
    stop("invalid state")
  } else if(!outcome %in% c("heart attack" , "heart failure" , "pneumonia")){
    stop("invalid outcome")
  } else {
    keys <- c("heart attack" = 11, "heart failure" = 17, "pneumonia" = 23)
    outcomeKey <- keys[outcome]
  }
  
  dataByState <- split(chart, chart$State)
  outcomeState <- dataByState[[state]]
  outcomeStateOrder <- na.omit(arrange(outcomeState, desc(outcomeState[,outcomeKey]),Hospital.Name))
  goodData <- outcomeStateOrder[complete.cases(outcomeStateOrder) , ]
  View(goodData)
  
}

best("TX", "heart attack")

【问题讨论】:

  • 字符串“Not Available”不能识别R中的缺失值。缺失值由NA指定。阅读?read.csv 的手册页,并特别注意na.strings= 参数。
  • 这是我的想法,但我不确定。然后我需要使用 for 和 if 循环来删除这些行吗?
  • 没有。使用complete.cases() 函数。它返回一个逻辑向量,如果没有缺失值,则返回 TRUE,如果有,则返回 FALSE。使用它仅从您的数据中提取完整的案例。

标签: r csv na


【解决方案1】:

在这种情况下,因为“不可用”与 NA 不同,我使用子集函数删除了值等于“不可用”的行

  goodData <- subset(outcomeState, outcomeState[, outcomeKey] != "Not Available")

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-03-05
    • 2011-05-03
    • 1970-01-01
    • 2023-01-12
    • 1970-01-01
    • 1970-01-01
    • 2016-11-05
    • 2020-07-18
    相关资源
    最近更新 更多