从字符串中提取字母(一些数字)和下划线

Extract letters (some numbers) and under scores from a character string

我有一堆不同长度的包含数字和字母的字符。所有章程字符串都以 _ 结尾,后跟数字(例如 _30、_100、_500 或 _1000)。

下面的 String 对象包含一些示例。

Strings <- c("DET37_30", "DET37_500",  "Ele_100",  "Ele_1000", "NDVI_MeanMax_100", "RadWint_30", "RadWint_500", "Slope_100")

对于每个列名,我想 select 所有数字、字母和 _ 在最终 _number

之前

例如 DET37_30DET_500 将导致 DET37,而 Ele_100Ele_1000 将导致 Ele.

换句话说,我想要结尾 _30_100_500_1000.

之前的所有值
sub("_\d+$", "", Strings)
#[1] "DET37"        "DET37"        "Ele"          "Ele"          "NDVI_MeanMax" "RadWint"     
#[7] "RadWint"      "Slope"

此正则表达式匹配一个下划线后跟一个或多个数字,它使用 $ 锚点只允许匹配行尾。

你可以试试:

gsub("(.*)_[0-9]*","\1",Strings)

它用下划线之前的任何内容替换整个字符串。