替换R

时间:2016-12-04 03:36:02

标签: r rstudio

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

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

我设法使用以下方法一次更换一个:

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

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

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

1 个答案:

答案 0 :(得分:1)

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

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

但是,问题在于特定列,在这种情况下,创建列的索引,遍历列并通过创建带replace的逻辑索引来%in%值(假设这些不是子串)

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