我有一个由不同组名组成的变量,负责恐怖事件(观察)。
我想排除所有观察,其中此变量包括“共产主义”一词,例如排除所有groupname =“孟加拉共产党”等的情况。这是我的代码:
newdata <- olddata[!grepl("Communist", olddata$groupname),]
但我想在此规则中添加一个例外:所有“反共”组织都应保留在数据框架中。所以代码应该删除“孟加拉共产党”,但留下例如“反共叛乱分子”。
我使用正则表达式吗?或者有没有办法为这种模式匹配添加一个例外?我想最后看起来应该是这样的:
newdata <- olddata[!grepl("Communist"[but exclude "Anti-Communist"], olddata&groupname),]
谢谢!
答案 0 :(得分:0)
您可以使用negative look behind:
x <- c("Bangladesh Communist Party", "Anti-Communist Rebels")
!grepl("(?<!Anti-)Communist", x, perl = TRUE)
# [1] FALSE TRUE