我有以下数据框,我想要替换所有出现的"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 <- 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个变量。
答案 0 :(得分:2)
尝试在|
y <- which(is.na(dat3)==TRUE || dat3=="Blank(s)")
所以,
y <- which(is.na(dat3)==TRUE | dat3=="Blank(s)")