根据出现时间进行分离和模式匹配
Separation and pattern matching according occurrence time
我想在我的数据框中分隔文本中的日期。我的数据如下所示:
tt <- structure(list(V1 = c("(Q)üfür (2013)", "'Bi atlayip çikicam' cümlesini fazla ciddiye aldiysak zaar (2016)",
"A'dan Z'ye (o biçim) (1975)", "Gün ortasinda karanlik (Anne) (1990)"
), V2 = c("Ilker Savaskurt", "Bugra Gülsoy", "Ahmet Mekin",
"Yavuzer Çetinkaya")), .Names = c("V1", "V2"), row.names = c(80404L,
90699L, 34694L, 53178L), class = "data.frame")
我使用此脚本将日期与文本分开。
pattern <- "[()]"
tt$info <- strsplit(tt$V1,pattern)
tt$Title <-sapply(tt$info, `[[`, 1)
tt$Year <- sapply(tt$info, function(m) (m)[2])
它给出了日期,但有些文本有多个括号。日期总是在文本的末尾,因此我需要更改脚本以仅获取第二个括号。
我已经检查了这里的其他问题,但我无法提出解决方案。提前致谢。
使用 stringi
的 stri_extract_last_regex
的选项捕获括号之间的最后一组文本
library(stringi)
stri_extract_last_regex(tt$V1, "(?<=\().*?(?=\))")
#[1] "2013" "2016" "1975" "1990"
通过使用正则表达式,您不需要拆分字符串。试试这个
tt$year=gsub(".*\(([0-9]{4})\).*","\1", tt$V1)
tt
#> V1
#> 80404 (Q)üfür (2013)
#> 90699 'Bi atlayip çikicam' cümlesini fazla ciddiye aldiysak zaar (2016)
#> 34694 A'dan Z'ye (o biçim) (1975)
#> 53178 Gün ortasinda karanlik (Anne) (1990)
#> V2 year
#> 80404 Ilker Savaskurt 2013
#> 90699 Bugra Gülsoy 2016
#> 34694 Ahmet Mekin 1975
#> 53178 Yavuzer Çetinkaya 1990
解释:正则表达式匹配一对括号中的 4 个数字。 gsub()
提取匹配的数字。
我想在我的数据框中分隔文本中的日期。我的数据如下所示:
tt <- structure(list(V1 = c("(Q)üfür (2013)", "'Bi atlayip çikicam' cümlesini fazla ciddiye aldiysak zaar (2016)",
"A'dan Z'ye (o biçim) (1975)", "Gün ortasinda karanlik (Anne) (1990)"
), V2 = c("Ilker Savaskurt", "Bugra Gülsoy", "Ahmet Mekin",
"Yavuzer Çetinkaya")), .Names = c("V1", "V2"), row.names = c(80404L,
90699L, 34694L, 53178L), class = "data.frame")
我使用此脚本将日期与文本分开。
pattern <- "[()]"
tt$info <- strsplit(tt$V1,pattern)
tt$Title <-sapply(tt$info, `[[`, 1)
tt$Year <- sapply(tt$info, function(m) (m)[2])
它给出了日期,但有些文本有多个括号。日期总是在文本的末尾,因此我需要更改脚本以仅获取第二个括号。
我已经检查了这里的其他问题,但我无法提出解决方案。提前致谢。
使用 stringi
的 stri_extract_last_regex
的选项捕获括号之间的最后一组文本
library(stringi)
stri_extract_last_regex(tt$V1, "(?<=\().*?(?=\))")
#[1] "2013" "2016" "1975" "1990"
通过使用正则表达式,您不需要拆分字符串。试试这个
tt$year=gsub(".*\(([0-9]{4})\).*","\1", tt$V1)
tt
#> V1
#> 80404 (Q)üfür (2013)
#> 90699 'Bi atlayip çikicam' cümlesini fazla ciddiye aldiysak zaar (2016)
#> 34694 A'dan Z'ye (o biçim) (1975)
#> 53178 Gün ortasinda karanlik (Anne) (1990)
#> V2 year
#> 80404 Ilker Savaskurt 2013
#> 90699 Bugra Gülsoy 2016
#> 34694 Ahmet Mekin 1975
#> 53178 Yavuzer Çetinkaya 1990
解释:正则表达式匹配一对括号中的 4 个数字。 gsub()
提取匹配的数字。