string <- c("50% something", "something100% more", "Both6% and also60%")


我无法弄清楚如何在“%”之前获得该数字的首次出现。注意,各种字符都可以出现在string中。我从上面的string得到的结果是:

[1]  50 100   6

最佳答案

您可以使用str_extract中的stringr提取%之前的第一组数字。在这里,我使用环视(?=%)来匹配后跟%的数字

library(stringr)
as.numeric(str_extract(string, '\\d+(?=%)'))
#[1]  50 100   6


对于第二种情况

 string1 <- c(string, "50people but 20%")
 as.numeric(str_extract(string1, '\\d+(?=%)'))
 #[1]  50 100   6  20

09-17 16:07
查看更多