删除最后一个数字之后的所有字符

Remove all characters after the last number

我列中的值是字母和数字的组合,看起来像这样:abc1237pqr, 413ogty, ptw569q, qrt

如何删除最后一位出现后的所有字符,使其变为:abc1237, 413, ptw569, qrt?也就是说,保留开头的字母,但不保留数字后面的字母。

我们可以使用sub来捕获一个数字((\d)),然后是一个或多个不是数字的字符([^0-9]+),直到字符串结束($) 并替换为捕获组

的反向引用 (\1)
sub("(\d)[^0-9]+$", "\1", df1$v1)
#[1] "abc1237" "413"     "ptw569"  "qrt"    

数据

df1 <- data.frame(v1 =c('abc1237pqr', '413ogty', 'ptw569q', 'qrt'), stringsAsFactors = FALSE)