2017-02-19 2 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年(最後のレコード)のケースでは、上記のエピソード名が不揃い(または存在しない場合があります).Hence私は最後の文字から文字数をカウントします。

現在、私は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を得ることができなかったしたいです。 誰もが

+1

ここで共有したデータに基づいて、 '}'を '}'で単純にgsubし、エピソード名の後ろにパイプを置く必要があります。エピソード名がない場合は、製造日は、それと放送日との間の区分として機能します。 – sconfluentus

+0

@bethanyPでも、すべてのレコードはデータに '}'がありません...問題を起こしているので...最後の文字からやってみました。例えば最後のレコードです。もし可能ならば'$'を使って、最後の文字の助けを借りて正規表現を作成するのを助けてください。 –

答えて

1

を助けることができる場合は、タスクのこの種の後方参照を使用することができますしてください(inputが変更される文字列のベクトルです):

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

基本的にはそれが終了することにある最大の文字列を検索します数字から構成され、 "?"と " - "。その文字列を取り、 "|"の前にその変更されたコピーを置き換えます。

+0

はいそれは働きました..ありがとう –

関連する問題