【问题标题】:Find and replace custom values in a dataframe在数据框中查找和替换自定义值
【发布时间】:2014-02-16 23:54:45
【问题描述】:

我有以下数据框,我想替换所有出现的 "Blank(s)"NA

dat <- data.frame(
    "a"=c("Blank(s)", "1", "2", "Blank(s)", <NA>),
    "b"=c("Blank(s)", "1", "2", "Blank(s)", <NA>),
    "c"=c("Blank(s)", "1", "2", "Blank(s)", <NA>),
    "d"=c("Blank(s)", "1", "2", "Blank(s)", <NA>),
    "e"=c("Blank(s)", "1", "2", "Blank(s)", <NA>),
    "f"=c("Blank(s)", "1", "2", "Blank(s)", <NA>)
)

对于NA的我已经成功找到a wonderful solution by Muhammad Ariz

x <- c(rnorm(5),rep(NA,3),rnorm(5))    # sample data 
dat <- data.frame(x,x)                 # make sample dataframe 
dat2 <- as.matrix(dat)                 # convert to matrix 
y <- which(is.na(dat)==TRUE)           # get index of NA values 
dat2[y] <- "your string"               # replace all NA values 

只需使用as.data.frame(dat2) 再次将矩阵转换为数据框。

要为"Blank(s)" 添加条件,我尝试过y &lt;- which(is.na(dat3)==TRUE || dat3=="Blank(s)"),但什么也没发生。

我想知道我是否可以组合这些条件,以便下次我可以添加一个字符串、向量或is. 函数,就像一个很好的旧查找和替换机制,即:

y <- which(is.na(dat3)==TRUE || is.character(dat3)==TRUE || 
    is.equal(dat3)=="Blank(s)" || is.equal(dat3)==-1 || ...)

注意:我希望有一个执行速度快的函数,因为我的原始数据框有 500,000 个观察值和 55 个变量。

【问题讨论】:

  • 尝试在y &lt;- which(is.na(dat3)==TRUE || dat3=="Blank(s)")中使用单个|
  • @Ananta,你能回答一下吗?它工作得很好,我想感谢你:D

标签: r replace dataframe na


【解决方案1】:

尝试在y &lt;- which(is.na(dat3)==TRUE || dat3=="Blank(s)") 中使用单个|

所以,

y <- which(is.na(dat3)==TRUE | dat3=="Blank(s)")

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-03-01
    • 2017-12-11
    • 2017-11-28
    • 2015-10-06
    • 2022-01-24
    • 2016-06-08
    • 2022-01-22
    相关资源
    最近更新 更多