2017-02-19 13 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 трубы с помощью суб, но не в состоянии получить 3-ий. пожалуйста, если кто-то могут помочь

+1

Основываясь на данных, которые вы поделили здесь, вы можете просто gsub '}' с '} |', и он должен поместить трубку после названия эпизода ... и если нет названия эпизода, включение on дата изготовления будет служить разделителем между ним и датой подачи воздуха. – sconfluentus

+0

@bethanyP, но дело в том, что все записи не имеют '' 'в данных ... вот проблема ... поэтому я думал о том, чтобы делать это от последнего символа ... например, последней записи .. Если бы вы могли помогите мне создать регулярное выражение с помощью последнего символа, поскольку ex использует '$' –

ответ

1

Вы можете использовать обратную ссылку для такого рода задач (input вектор строк должны быть изменены):

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

В основном он ищет максимальную строку, расположенную в конце, что состоит из цифр, "?" а также "-"; берет эту строку и заменяет ее модифицированную копию предыдущим «|».

+0

, да, это сработало. Спасибо большое. –

 Смежные вопросы

  • Нет связанных вопросов^_^