我有一堆包含数字和字母的各种长度的章程字符串。所有章程字符串都以_
结尾,后跟一个数字(例如_30,_100,_500或_1000)。
下面的String
对象包含一些示例。
Strings <- c("DET37_30", "DET37_500", "Ele_100", "Ele_1000", "NDVI_MeanMax_100", "RadWint_30", "RadWint_500", "Slope_100")
对于每个列名,我想在最终_
之前选择所有数字,字母和_number
例如DET37_30
和DET_500
会产生DET37
,而Ele_100
和Ele_1000
会产生Ele。
换句话说,我想要在结束_30
,_100
,_500
或_1000
之前的所有值。
答案 0 :(得分:3)
您可以尝试:
gsub("(.*)_[0-9]*","\\1",Strings)
它用下划线之前的任何内容替换整个字符串。
答案 1 :(得分:0)
sub("_\\d+$", "", Strings)
#[1] "DET37" "DET37" "Ele" "Ele" "NDVI_MeanMax" "RadWint"
#[7] "RadWint" "Slope"
此正则表达式匹配下划线后跟一个或多个数字,并使用$
锚点仅允许该行末尾的匹配。