2017-02-19 76 views
0

我有這個數據包含電視劇數據GSUB替換最後一個字符串的長度不明的最後空間

"!Next?" (1994)      1994-1995 
"#1 Single" (2006)     2006-???? 
"#1 Single" (2006) {Cats and Dogs (#1.4)}  2006 
"#1 Single" (2006) {Finishing a Chapter (#1.5)}  2006 
"#1 Single" (2006) {Is the Grass Greener? (#1.1)} 2006 
"1941" (2009) {(#1.9)}     ???? 
"1942" (2011)      2011-???? 

我需要把這個分成系列名稱|生產日期|插曲名稱|發行年份

該劇集的名稱不均勻(它可能存在也可能不存在),如上面關於1942(最後一條記錄)的情況所見。因此我將從最後一個字符開始計算字符。

目前,我已完成name| production date|,但在發佈年份之前添加pipe(|)有點繁瑣。

我想這樣

"!Next?" |1994|      |1994-1995 
"#1 Single" |2006|     |2006-???? 
"#1 Single" |2006| {Cats and Dogs (#1.4)}  |2006 
"#1 Single" |2006| {Finishing a Chapter (#1.5)}  |2006 
"#1 Single" |2006| {Is the Grass Greener? (#1.1)} |2006 
"1941" |2009| {(#1.9)}     |???? 
"1942" |2011|      |2011-???? 

輸出我已經使用了分第2管,但沒能獲得第三之一。 請,如果有人可以幫助

+1

根據你在這裏分享的數據,你可以簡單地用'} |'gsub'}'並且它應該在集合名稱後放置一個管道......並且如果沒有集合名稱,那麼on生產日期將作爲它與空氣日期之間的分隔線。 – sconfluentus

+0

@bethanyP但事情是所有記錄沒有在數據中有一個'}'...這就是問題......因此我想從最後一個字符開始......例如最後一個記錄..如果你能幫助我在最後一個字符的幫助下創建一個正則表達式,例如使用'$' –

回答

1

您可以使用反向引用這類任務(input是串的向量進行修改):它會搜索位於末端的最大字符串

gsub(pattern = "([0-9?-]+$)", 
    replacement = "|\\1", 
    x = input) 

基本上是由數字組成,「?」和「 - 」;採用該字符串並用前面的「|」替換其修改後的副本。

+0

是的它工作..謝謝很多 –

相關問題