Как разбить столбец на два в R на основе символа из результатов очистки? - PullRequest
1 голос
/ 09 апреля 2019

Итак, я просмотрел сайт IMDB, используя rvest, и столкнулся с проблемой расщепления. Я пробовал разные методы для разделения столбца, но все не удалось.

Это мой код для очистки информации с сайта IMDB:

votes_gross <- pagesource %>% html_nodes(".sort-num_votes-visible") %>% html_text()

Затем я использовал следующие коды для очистки и разделения:

votes_gross <- gsub("\r?\n|\r", " ", votes_gross)
votes_gross <- data.frame(votes_gross)
library(tidyr)
votes_gross <- separate(votes_gross,
       col = "votes_gross",
       into = c("Votes", "Gross"),
       sep = "|")

кадр данных становится пустым сразу после того, как я выполню отдельные коды. Я также пытался использовать strsplit, но тоже не получилось. Я знаю, что здесь есть другие подобные вопросы, но они не похожи на мою ситуацию.

Я надеюсь сделать это:

          votes_gross
Votes: 489,547 | Gross: $700.06M
Votes: 615,401 | Gross: $678.82M
Votes: 192,034 | Gross: $608.58M

в эти:

    Votes         Gross (Millions)
Votes: 489,547    Gross: $700.06
Votes: 615,401    Gross: $678.82
Votes: 192,034    Gross: $608.58

Спасибо

1 Ответ

2 голосов
/ 09 апреля 2019

Согласно ?separate

sep - Если символ, интерпретируется как регулярное выражение.Значением по умолчанию является регулярное выражение, которое соответствует любой последовательности не буквенно-цифровых значений.

Так что, если нам нужно, чтобы оно оценивалось буквально, поместите его в квадратные скобки ([|] или escape \\|)) или же это рассматривается как OR

library(tidyverse)
votes_gross <- separate(votes_gross,
   col = "votes_gross",
   into = c("Votes", "Gross"),
   sep = "\\s*[|]\\s*")
...