R从字符串中提取数字



我一直在努力做到这一点。我想做的是从字符串中提取一年。字符串如下所示,例如:

Toy Story (1995)

或者它可能看起来像这个

Twelve Monkeys (a.k.a. 12 Monkeys) (1995)

为了提取数字,我目前使用

year = gsub("(?<=\()[^()]*(?=\))(*SKIP)(*F)|.", "", x, perl=T)

现在,这在大多数情况下都有效,其中使用了第一个,但在列表中也使用了第二个。

[1] 1995
[2] a.k.a. 12 Monkeys1995

很明显,我不想要绳子,只想要年份,我该怎么得到这个?

我们可以使用

library(stringr)
as.numeric(str_extract(x, "(?<=\()[0-9]+(?=\))"))
#[1] 1995 1995

数据

x <-  c("Toy Story (1995)", "Twelve Monkeys (a.k.a. 12 Monkeys) (1995)")
stringi::stri_match_last_regex(x, "\(([[:digit:]]+)\)")[,2]

逃离parens仍然很痛苦,但它是一个可读性更强的正则表达式IMO.

如果年份总是位于用括号括起来的每个字符串的末尾,则可以在基R:中执行此操作

as.numeric(gsub("\(|\)", "", substr(x, nchar(x)-5,nchar(x))))
#[1] 1995 1995

事先使用trimws(x),以防有任何头部或尾部空间。

相关内容

  • 没有找到相关文章

最新更新