我为此四处寻找,但没有找到答案。我有一个数据框,其中包含“未知”“无响应”或“拒绝回答”等行的多个级别的列。所有这些对我来说都是无用的分析,所以我想用NA替换它们。
请注意,我不想在整个数据框中替换它们,只需要特定的列!还有其他列包含具有相同名称的值,这些值对我来说实际上很有用,我想让它们独自存在。
我设法使用以下方法一次更换一个:
data$col1 <- factor(gsub("Unknown", "NA", data$col1))
但是一次只适用于一个字符串。如果我尝试添加多个字符串,R会抛出错误。有没有更有效的方法来做到这一点?
我对编码比较陌生,请温柔!
答案 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