我在数据框中有一列,其中包含一系列标识符,一个字母和8个数字,即B15006788。
是否有一种方法可以删除B15的所有实例...,使其成为空单元格(每个类别中有成千上万的数字变体),但保留B16 ....等?
我知道我是否想删除一件事,例如B15;
sub(“ B15”,“”,df $ col)
但是我不确定如何删除一定数量的字符/数字(甚至B15之后的所有后续字符)。
预先感谢:)
答案 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提供了有关其他正则表达式的信息,您可以使其更具体。