在R语言中如何提取左括号与%之间的百分比数值?
在R中提取括号与%之间的百分比数字
可以通过正则表达式实现这个需求,下面提供两种常用方法:
方法1:使用base R的sub()函数
先定义原始文本向量:
text <- c("2 (5.7%)", "34 (8.9%)")
利用正则匹配提取目标数字:
result <- sub(".*\\((\\d+\\.\\d+)%\\)", "\\1", text) # 输出结果 result # [1] "5.7" "8.9"
如果需要将结果转为数值类型,执行:
as.numeric(result) # [1] 5.7 8.9
方法2:使用stringr包的str_extract()函数
先安装并加载stringr包(如果未安装):
install.packages("stringr") library(stringr)
利用正向/反向预查正则直接提取目标内容:
result <- str_extract(text, "(?<=\\()\\d+\\.\\d+(?=%)") # 输出结果 result # [1] "5.7" "8.9"
同样可以转为数值类型:
as.numeric(result) # [1] 5.7 8.9
正则说明
.*\\(:匹配左括号(之前的所有内容(\\d+\\.\\d+):捕获一个或多个数字+小数点+一个或多个数字的组合(即目标百分比数字)%\\):匹配右括号前的%符号(?<=\\():反向预查,匹配左括号(之后的位置(?=%):正向预查,匹配%符号之前的位置
内容的提问来源于stack exchange,提问作者alex
相关产品推荐
相关产品推荐

