R:grepl with NA's



我正在使用R编程语言。

我有以下数据集:

file = data.frame(id = c(1,2,3,4,5), col1 = c("Red", "Blue", "CCC", "Yellow", "Orange"), col2 = c("AAA", "BBB", "CCC", "DDD", "Red"))

id   col1 col2
1  1    Red  AAA
2  2   Blue  BBB
3  3    CCC  CCC
4  4 Yellow  DDD
5  5 Orange  Red

对于所有包含%LIKE% "CCC"或者%LIKE% "Red",我想用NA代替它们。最终的结果应该像这样:

id   col1 col2
1  1    NA  AAA
2  2   Blue  BBB
3  3   NA   NA
4  4 Yellow  DDD
5  5 Orange  NA

我发现了一个类似的帖子(替换包含特定字符串的整个表达式),并试图将那里提出的逻辑应用于我的问题:

step1 = file[grep("CCC", file)] <- "NA"
step2 = step1[grep("Red", step1)] <- "NA"

然而,我不认为这是工作-我得到的是一个"NA"输出。

谁能告诉我怎么解决这个问题?

我将使用ifelse%in%:

file$col1 <- ifelse(file$col1 %in% c("CCC", "Red"), NA, file$col1)
file$col2 <- ifelse(file$col2 %in% c("CCC", "Red"), NA, file$col2)

对于子字符串匹配,使用grepl:

<!-- language: r -->
file$col1 <- ifelse(grepl("CCC|Red", file$col1), NA, file$col1)

最新更新