删除列中的部分字符串

时间:2019-01-15 23:23:30

标签: r

我在数据框中有一列,其中包含一系列标识符,一个字母和8个数字,即B15006788。

是否有一种方法可以删除B15的所有实例...,使其成为空单元格(每个类别中有成千上万的数字变体),但保留B16 ....等?

我知道我是否想删除一件事,例如B15;

  

sub(“ B15”,“”,df $ col)

但是我不确定如何删除一定数量的字符/数字(甚至B15之后的所有后续字符)。

预先感谢:)

1 个答案:

答案 0 :(得分:1)

欢迎您!这是一个正则表达式。您可以使用此处显示的base R,也可以使用stringR包来查找易于理解的便捷工具。您还可以查找正则表达式规则,以帮助定义要查找的内容。对于您的要求,您可以使用以下代码示例来提供帮助:

testStrings <- c("KEEPB15", "KEEPB15A", "KEEPB15ABCDE")

gsub("B15.{2}", "", testStrings)

gsub是基本R函数,用于在一个或一系列输入中用其他方式替换模式。为了测试我们的正则表达式,我为不同的示例创建了testStrings向量。

打破正则表达式代码,“ B15”是您要特别寻找的模式。 “。”表示任何字符,并且“ {2}”表示在“ B15”之后我们要抓取的任何字符的范围。您可以根据需要进行更改。如果要删除“ B15”之后的所有内容。用“ B15。”替换模式。 “ ”表示一切都结束了。

编辑:如果要指定“ B15”必须在字符串的开头,则可以在模式的开头添加“ ^”,例如:“ ^ B15。{2}”

https://www.rstudio.com/wp-content/uploads/2016/09/RegExCheatsheet.pdf提供了有关其他正则表达式的信息,您可以使其更具体。