R 删除除指定字段外的字符串

R 删除除指定字段外的字符串,r,regex,str-replace,gsub,R,Regex,Str Replace,Gsub,我希望使用str_replace或gsub从我的数据框中的列中删除字符“WD”并将其替换为“”。但是,我不希望删除列中的某些字段中的“WD”字符。请注意,我正在处理的数据中有8000多个特性,因此一行代码不需要键入我要更改的每个字段字符串是非常重要的 df = PA_prec COLUMN PA CRAWFORD MEADVILLE WD 02 PA CRAWFORD TITUSVILLE WD 02 PA BLAIR HOLLIDAYSBURG WD 01 PA BLAIR ALTO

我希望使用str_replace或gsub从我的数据框中的列中删除字符“WD”并将其替换为“”。但是,我不希望删除列中的某些字段中的“WD”字符。请注意,我正在处理的数据中有8000多个特性,因此一行代码不需要键入我要更改的每个字段字符串是非常重要的

df = PA_prec

COLUMN

PA CRAWFORD MEADVILLE WD 02

PA CRAWFORD TITUSVILLE WD 02

PA BLAIR HOLLIDAYSBURG WD 01

PA BLAIR ALTOONA WD 03
目标:我想删除所有的“WD”字符,除了在帕克劳福德·泰特斯维尔和帕布莱尔·霍利德斯堡之外。

代码应该类似于:

PA_prec$COLUMN <- str_replace(PA_prec$COLUMN, " WD ", " ")
PA_prec$列您可以使用:

sub("(?<!TITUSVILLE |HOLLIDAYSBURG )WD ", "", x, perl = T)
sub((?您可以使用:

sub("(?<!TITUSVILLE |HOLLIDAYSBURG )WD ", "", x, perl = T)
sub((?使用

使用


太好了!这似乎有效。但是,您知道我是否可以将WD标识为“WD”,以便确保我只删除前面和后面有空格的字符WD?我尝试在您发送的代码中为WD的前面和后面添加空格,但没有成功。谢谢:)请参阅已编辑的解决方案:现在可以删除
WD
,而不留下任何多余的空白。太好了!这似乎很有效。但是,您知道我是否可以将WD识别为“WD”因此,我可以确保仅删除前面和后面有空格的字符WD?我尝试在您发送的代码中的WD前面和后面添加空格,但没有效果。谢谢:)请参阅已编辑的解决方案:此操作现在删除
WD
,而不留下任何多余的空白。
(?<!TITUSVILLE|HOLLIDAYSBURG)\sWD\s
--------------------------------------------------------------------------------
  (?<!                     look behind to see if there is not:
--------------------------------------------------------------------------------
    TITUSVILLE               'TITUSVILLE'
--------------------------------------------------------------------------------
   |                        OR
--------------------------------------------------------------------------------
    HOLLIDAYSBURG            'HOLLIDAYSBURG'
--------------------------------------------------------------------------------
  )                        end of look-behind
--------------------------------------------------------------------------------
  \s                       whitespace (\n, \r, \t, \f, and " ")
--------------------------------------------------------------------------------
  WD                       'WD'
--------------------------------------------------------------------------------
  \s                       whitespace (\n, \r, \t, \f, and " ")
df <- data.frame(COLUMN=c("PA CRAWFORD MEADVILLE WD 02","PA CRAWFORD TITUSVILLE WD 02","PA BLAIR HOLLIDAYSBURG WD 01","PA BLAIR ALTOONA WD 03"))
df$COLUMN <- sub("(?<!TITUSVILLE|HOLLIDAYSBURG)\\sWD\\s", " ", df$COLUMN, perl=TRUE)
df
                        COLUMN
1     PA CRAWFORD MEADVILLE 02
2 PA CRAWFORD TITUSVILLE WD 02
3 PA BLAIR HOLLIDAYSBURG WD 01
4          PA BLAIR ALTOONA 03