Я хотел знать, как разбивать столбцы указанным разделителем, а также его позицией. Мне нужно отделить название фильма, и общим разделителем является "(", но, очевидно, в некоторых фильмах также есть скобки в названии, поэтому я хотел указать, что за скобками должен следовать номер, но само число не должно использовать в качестве разделителя.
Вот код:
imdb_ratings <- imdb_ratings %>% separate(col = title, into = c("title", "year"),
sep = "\\(*[:digit:]")
Очевидно, выдает ошибку, что все значения в столбце года - NA. Я уже знаю, что мой код пытается использовать скобку и число в качестве разделителей (я думаю, вы можете иметь только один символ), но я не знаю, как указать, где должна быть скобка. Я пытался использовать что-то вроде этого "\\(?=[:digit:]"
, но это также не работает.
[ОБНОВЛЕНИЕ]
Вот мой код сейчас:
imdb_ratings <- imdb_ratings %>% filter(Animation == 1 & !str_detect(title, "\\$")) %>%
separate(col = title, into = c("title", "year"),
sep = "\\((?=\\d)")
Я хотел отфильтровать строки, заканчивающиеся backsla sh потому что я знаю, что у них нет года, поэтому я использовал код !str_detect(title, "\\$")
, но он не работает, потому что после того, как я его отфильтровал, результаты приходят с теми же строками, которые имеют обратную косую черту sh в конце: [! [введите описание изображения Ион здесь] [1]] [1]
[ОБНОВЛЕНИЕ2] Как использовать отдельную функцию для получения года MOV ie во втором столбце в случаях, когда после скобки нет год, но какой-то символ строки. На скриншоте вы можете увидеть пример «Aladdin (Видеоигра 1993)» Что делать, чтобы разделить Aladdin в первом столбце и 1993 в втором столбце? Возможно, вариант будет заключаться в том, чтобы видеоигра была заключена в квадратные скобки в первом столбце.
[! [Введите описание изображения здесь] [2]] [2]
[ОБНОВЛЕНИЕ] Регулярное выражение Строка работала все время, но теперь внезапно R выдает ошибку.
Код не был изменен:
imdb <- imdb %>% extract(title, c("title", "year"),
"^(.*?)(?:\s*\([^()]*?(\d{4})[^()]*\))?$")
the error: Error in drop && length(x) == 1L : invalid 'x' type in 'x && y'