如何在R中删除字符串的常量部分

时间:2018-11-16 08:50:39

标签: r string parsing

我想自动删除字符串的常量(共享)部分并保留变量部分。 例如我有一列包含以下内容:

D20181116_Basel-Take1_digital
D20181116_Basel-Take2_digital
D20181116_Basel-Take3_digital
D20181116_Basel-Take4_digital
D20181116_Basel-Take5_digital
D20181116_Basel-Take5a_digital

我如何自动获取任何类似的列(此处删除:“ D20181116_Basel-Take”和“ _digital”)。但是代码应该是找到常量部分本身并删除它们。

1
2
3
4
5
5a

我希望这很清楚。非常感谢。

2 个答案:

答案 0 :(得分:0)

您可以使用正则表达式进行操作:它将删除“ Take”之前和下划线字符之后的所有内容:

vec<- c("D20181116_Basel-Take1_digital", 
"D20181116_Basel-Take2_digital",
"D20181116_Basel-Take3_digital",
"D20181116_Basel-Take4_digital",
"D20181116_Basel-Take5_digital",
"D20181116_Basel-Take5a_digital")

sub(".*?Take(.*?)_.*", "\\1", vec)
[1] "1"  "2"  "3"  "4"  "5"  "5a"

答案 1 :(得分:0)

使用gsub():

假设您有一个数据框df并想更改列

df$column <- gsub("^D20181116_Basel-Take","",df$column)
df$column <- gsub("_digital$","",df$column)