我已经找遍了所有的地方,但是没有找到答案。我有一个数据框,它包含具有多个级别的列,这些列沿着“未知”、“无响应”或“拒绝回答”等行。所有这些对我的分析都是无用的,所以我想用NA替换它们。
注意,我不想在整个数据框中替换它们,只想替换特定的列!还有一些列包含具有相同名称的值,这些值实际上对我很有用,我不想去管它们。
我已经设法通过使用以下命令逐个替换它们:
data$col1 <- factor(gsub("Unknown", "NA", data$col1))但它一次只对一个字符串有效。如果我尝试添加多个字符串,R会抛出一个错误。有没有更有效的方法来做到这一点?
我对编程比较陌生,请温文点!
发布于 2016-12-04 11:44:09
如果我们需要将多个值更改为NA,一种选择是在读取数据时在read.csv/read.table中使用na.strings
dat <- read.csv("yourfile.csv", na.strings = c("Unknown", "No response", 
             "Refused to answer"))然而,这里的问题在于特定的列,在这种情况下,创建列的索引,循环遍历列,并通过使用%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
https://stackoverflow.com/questions/40955089
复制相似问题