Отграничение текста от демократических дебатов - PullRequest
0 голосов
/ 24 сентября 2019

Я пытаюсь разграничить следующие данные по имени, отметке времени, а затем по тексту.В настоящее время все данные перечислены в 1 столбце как фрейм данных. Этот столбец называется Текст 1. Вот как это выглядит

text

First Name:          00:03       Welcome Back text text text
First Name 2:        00:54       Text Text Text
First Name 3:        01:24       Text Text Text

Это то, что я сделал до сих пор:

text$specificname = str_split_fixed(text$text, ":", 2)

и он создал следующее

text                                                            specific name

First Name:          00:03       Welcome Back text text text    First Name
First Name 2:        00:54       Text Text Text                 First Name2
First Name 3:        01:24       Text Text Text                 First Name 3

Как мне сделать то же самое для отметки времени и текста?Это лучший способ сделать это?

РЕДАКТИРОВАТЬ 1: Вот как я ввел свои данные


#Specifying the url for desired website to be scraped
url = 'https://www.rev.com/blog/transcript-of-july-democratic-debate-night-1-full-transcript-july-30-2019'

#Reading the HTML code from the website
wp = read_html(url)

#assignging the class to an object
alltext = html_nodes(wp, 'p')

#turn data into text, then dataframe
alltext = html_text(alltext)
text = data.frame(alltext)

1 Ответ

0 голосов
/ 24 сентября 2019

Предполагая, что text находится в форме, показанной в примечании в конце, то есть вектор символов с одним компонентом на строку, мы можем использовать read.table

read.table(text = gsub("  +", ",", text), sep = ",", as.is = TRUE)

, давая эти data.frame:

             V1    V2                          V3
1   First Name: 00:03 Welcome Back text text text
2 First Name 2: 00:54              Text Text Text
3 First Name 3: 01:24              Text Text Text

Примечание

Lines <- "First Name:          00:03       Welcome Back text text text
First Name 2:        00:54       Text Text Text
First Name 3:        01:24       Text Text Text"

text <- readLines(textConnection(Lines))

Обновление

В отношении EDIT, добавленного к вопросу, определите регулярное выражение pat, соответствующее возможному пробелу, 2 цифры, двоеточие, 2 цифры и, возможно, больше пробелов.Затем grep вычеркните все строки, которые соответствуют ему, давая tt, и в каждой оставленной строке замените совпадение @, шаблоном (кроме пробелов) и @, указав g.Наконец, прочитайте его, используя @ в качестве разделителя полей, давая DF.

pat <- "\\s*(\\d\\d:\\d\\d)\\s*"
tt <- grep(pat, text$alltext, value = TRUE)
g <- sub(pat, "@\\1@", tt)
DF <- read.table(text = g, sep = "@", quote = "", as.is = TRUE)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...