删除R

问题描述

我有近100,000行已转换为数据帧的抓取数据。一列是一串文本字符,但操作异常。在下面的示例中,有一些文本,该文本带有要删除的方括号信息,并且我也希望删除“(c)”。但是,从技术上讲,前面的空间不是空格(是否认为是空格?)。

我不确定如何在此处重现该示例,因为当我复制/粘贴记录时,会像对待普通记录一样工作并且可以正常工作,但是在抓取的数据中却不会。胆量检查是为了计算空间,它给了我4,这意味着(前面的空间不是真正的空间。我不知道如何删除它!

我通常会运行的代码如下。同样,这种方式也可以,但不适用于我的抓取数据。

test<-c("Barry Windham (c) & Mike Rotundo (c)")
test<-gsub("[ ][(]c[)]","",test)

解决方法

您可以考虑使用:

test<-c("Barry Windham (c) & Mike Rotundo (c)")
gsub("(*UCP)\\s+\\(c\\)","",test,perl=TRUE)
# => [1] "Barry Windham & Mike Rotundo"

请参见an online R demo

详细信息

  • (*UCP)-使PCRE正则表达式中的所有速记字符类(由于perl=TRUE而成为PCRE)都支持Unicode
  • \\s+-任何一个或多个Unicode空白
  • \\(c\\)-(c)子字符串。

如果您需要保留(c),请将其捕获并在替换中使用向后引用:

gsub("(*UCP)\\s+(\\(c\\))","\\1",perl=TRUE)