解析R中的列和识别字段

时间:2017-02-13 02:09:48

标签: r string parsing

这是我的df的一个例子:

5VT7N16324000434

我想创建一个仅显示标题和年份的数据框。有没有人对如何解析这个有任何建议?我想我可能需要拆分data 276 '83 Rally '83 (1983) (V)\t\t\t\t1983 277 '87: A Love Story (2007)\t\t\t\t2007 278 '88 Dodge Aries (2002)\t\t\t\t\t2002 279 '9': Acting Out (2009) (V)\t\t\t\t2009

上的列
\t\t\t\t

这是dput

     Title                Year 
276 '83 Rally '83     (1983) 
277 '87: A Love Story (2007)                                                                                             
278 '88 Dodge Aries   (2002)
279 '9': Acting Out   (2009) 

1 个答案:

答案 0 :(得分:1)

使用gsub():

df$Title <- gsub("(.*?) \\(.*", "\\1", df$data)
df$Year  <- gsub(".*\\((\\d{4})\\).*", "\\1", df$data)

> df[c("Title", "Year")]
                  Title Year
1     276 '83 Rally '83 1983
2 277 '87: A Love Story 2007
3   278 '88 Dodge Aries 2002
4   279 '9': Acting Out 2009

注意:如果data实际上是一个独立的向量,那么就直接使用它,例如

Title <- gsub("(.*?) \\(.*", "\\1", data)

以下是用于提取年份的正则表达式的解释:

.*        match everything
\\(       up until the first parenthesis
(\\d{4})  then capture a four digit year
\\)       followed by a closing parenthesis
.*        consume the remainder of the string

\\1中用作替换的数量gsub()使用比赛期间捕获的四位数年份。