如何在R中提取数字和分号之间的文本数据?

问题描述 投票:0回答:1

我的愿望是提取以1920开头的数字和分号之间的文本。

abc 1993 def ghi; klm
cba 2012 kff kkk; zzz
xxx 1999 ggg yyy; vvv
cgc 2015 tet mmm; bbb

预期输出:

93 def ghi
12 kff kkk
99 ggg yyy
15 tet mmm

很多tnx!

r text stringr
1个回答
0
投票

我们可以使用基数R中的sub来捕获数字和;之间的字符,并用所捕获组的后向引用(\\1代替]

trimws(sub(".*(19|20)([^;]+);.*", "\\2", str1))
#[1] "93 def ghi" "12 kff kkk" "99 ggg yyy" "15 tet mmm"

或带有str_extract

library(stringr)
trimws(str_extract(str1, "(?<=(19|20)\\d{2})[^;]+"))
#[1] "def ghi" "kff kkk" "ggg yyy" "tet mmm"

数据

str1 <- c("abc 1993 def ghi; klm", "cba 2012 kff kkk; zzz", "xxx 1999 ggg yyy; vvv", 
"cgc 2015 tet mmm; bbb")
© www.soinside.com 2019 - 2024. All rights reserved.