R中的字符串匹配返回“不包含”结果

时间:2016-08-25 22:45:53

标签: regex r

我想删除数据框中的所有行,其中A列包含“_”或“(”或“)”,其中D列不包含“InService”。

我相信你可以使用grep或grepl作为contains部分,但我不知道如何将它绑定到下面的表达式中。

Atoll <- read.csv("ATOLL_TABLE20160803_084232.csv")
AtollInService <- Atoll[(Atoll$MILESTONE=="InService" & grep(???)),]

下面是我导入的excel文件的示例,请注意我隐藏了几列,因为数据分布在许多字段中。

NOMINAL_ID     MILESTONE
WW_4752 (MD)    Planned
WW_4752 (MD)    Planned
WW_4752 (MD)    Planned
LX0022 (OZ)     Planned
LX0022 (OZ)     Planned
LX0023          InService
LX0023          InService
LX0023          InService
LX0023          InService
LX0023          InService
LX0023          InService

以下是我希望实现的目标:

NOMINAL_ID      MILESTONE
LX0023          InService
LX0023          InService
LX0023          InService
LX0023          InService
LX0023          InService
LX0023          InService

1 个答案:

答案 0 :(得分:1)

使用grepl;见?grepl

Atoll <- read.csv("ATOLL.csv")

Atoll_filtered <- 
  with(Atoll, Atoll[grepl("[_()]", NOMINAL_ID) & 
                      !grepl("InService", MILESTONE), ])

nrow(Atoll)
# [1] 65

nrow(Atoll_filtered)
# [1] 36

head(Atoll_filtered)
#      NOMINAL_ID MILESTONE
# 1 WW_4664 (KNP)   Planned
# 2 WW_4664 (KNP)   Planned
# 3 WW_4664 (KNP)   Planned
# 4 WW_4664 (KNP)   Planned
# 5 WW_4664 (KNP)   Planned
# 9 WW_4665 (KNP)   Planned
相关问题