我正在使用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)