2016-12-04 94 views
0

我已经找遍了这个,但没有找到答案。我有一个数据框,其中包含沿着“未知”“无响应”或“拒绝回答”之类的多个级别的列。所有这些对我来说都是无用的分析,所以我想用NA来代替它们。替换R中的特定数据帧列中的多个字符串

请注意,我不想在整个数据框中只替换它们,只有特定的列!还有其他一些列包含的值与我实际有用的名称相同,我想让它们保持独立。

我已经成功使用,以取代他们一次一个:

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

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

我是比较新的编码,请温柔!

+0

在read.csv中使用'na.strings',即在读取数据集时,可以指定哪些值可以更改为NA,'dat < - read.csv (“yourfile.csv”,na.strings = c(“Unknown”,“No response”,“拒绝回答”))' – akrun

+0

尝试'data $ col1 < - factor(gsub(“Unknown | No response | Refused to答案“,”不适用“,数据$ col1))'。 –

回答

1

如果我们需要改变NA多个值,在读取数据

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

然而,这里的问题是与特定的列,在这种情况下,一个选项是在read.csv/read.table使用na.strings,创建的索引的列,依次通过通过创建具有%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

相关问题