【问题标题】:Replacing multiple character strings in specific data frame columns in R替换R中特定数据框列中的多个字符串
【发布时间】:2016-12-04 03:36:01
【问题描述】:

我已经四处寻找这个问题,但没有找到答案。我有一个数据框,其中包含多个级别的列,如“未知”、“无响应”或“拒绝回答”等。所有这些对我来说都是无用的分析,所以我想用 NA 替换它们。

请注意,我不想在整个数据框中替换它们,只替换特定的列!还有其他列包含具有相同名称的值,这些值实际上对我有用,我想不理会它们。

我已经设法一次更换一个:

data$col1 <- factor(gsub("Unknown", "NA", data$col1))

但这一次只适用于一个字符串。如果我尝试添加多个字符串,R 会引发错误。有没有更有效的方法来做到这一点?

我对编码比较陌生,请温柔!

【问题讨论】:

  • 使用read.csv中的na.strings,即在读取数据集时,可以指定哪些值可以改成NA,dat &lt;- read.csv("yourfile.csv", na.strings = c("Unknown", "No response", "Refused to answer"))
  • 试试data$col1 &lt;- factor(gsub("Unknown|No response|Refused to answer", "NA", data$col1))

标签: r rstudio


【解决方案1】:

如果我们需要将多个值更改为 NA,一种选择是在读取数据时在 read.csv/read.table 中使用 na.strings

dat <- read.csv("yourfile.csv", na.strings = c("Unknown", "No response", 
             "Refused to answer"))

但是,这里的问题在于特定列,在这种情况下,通过使用 %in% 创建逻辑索引来创建列的索引、循环遍历列和 replace 值(假设这些不是子字符串)

columnsOfInterest <- c(1, 4, 5) #just for an example
df1[columnsOfInterest] <- lapply(df1[columnsOfInterest], function(x)
         replace(x, x %in% c("Unknown", "No response", "Refused to answer"), NA))

注意:更改为引用的 NA 即 "NA" 相当没用,我们只需要 NA

【讨论】:

    猜你喜欢
    • 2014-05-04
    • 1970-01-01
    • 1970-01-01
    • 2022-11-12
    • 2023-02-23
    • 1970-01-01
    • 1970-01-01
    • 2014-12-15
    • 2022-07-01
    相关资源
    最近更新 更多