Как начать новую строку, когда она воспринимает определенное слово в R? - PullRequest
0 голосов
/ 06 августа 2020

Итак, у меня есть текст, подобный приведенному ниже:

"Speaker 1: dasjkdasldasn Speaker 2: sadjasdkasd Speaker 1: sjdakldak Speak 2: sjdlaksdlsak Speaker 1: sjdaskd. " 

Какие функции я могу использовать, чтобы начинать новую строку всякий раз, когда говорит новый говорящий? Конечный результат должен быть

"Speaker 1: dasjkdasldasn 
Speaker 2: sadjasdkasd 
Speaker 1: sjdakldak 
Speak 2: sjdlaksdlsak 
Speaker 1: sjdaskd."

Ответы [ 4 ]

3 голосов
/ 06 августа 2020

Мы можем создать новую строку с помощью gsub и напечатать с помощью cat

cat(gsub("\\s(\\w+\\s+\\d+:)", "\n\\1", str1, perl = TRUE), '\n')
#Speaker 1: dasjkdasldasn
#Speaker 2: sadjasdkasd
#Speaker 1: sjdakldak
#Speak 2: sjdlaksdlsak
#Speaker 1: sjdaskd.  

Или после вставки новой строки прочтите его с помощью read.table

read.table(text = gsub("\\s(\\w+\\s+\\d+:)", "\n\\1", str1), header = FALSE, sep=",")
#                        V1
#1 Speaker 1: dasjkdasldasn
#2   Speaker 2: sadjasdkasd
#3     Speaker 1: sjdakldak
#4    Speak 2: sjdlaksdlsak
#5     Speaker 1: sjdaskd.

data

str1 <- "Speaker 1: dasjkdasldasn Speaker 2: sadjasdkasd Speaker 1: sjdakldak Speak 2: sjdlaksdlsak Speaker 1: sjdaskd. " 
2 голосов
/ 06 августа 2020

Если у вас всегда есть ключевое слово, например Speak*, возможно, мы можем попробовать

cat(gsub("\\s(Speak.*?)","\n\\1",s),"\n")

, чтобы

> cat(gsub("\\s(Speak.*?)","\n\\1",s),"\n")
Speaker 1: dasjkdasldasn
Speaker 2: sadjasdkasd
Speaker 1: sjdakldak
Speak 2: sjdlaksdlsak
Speaker 1: sjdaskd.

Data

s <- "Speaker 1: dasjkdasldasn Speaker 2: sadjasdkasd Speaker 1: sjdakldak Speak 2: sjdlaksdlsak Speaker 1: sjdaskd. " 
0 голосов
/ 06 августа 2020

Использование str_replace_all из stringr. Принимая строку s из @ ThomasIsCoding

cat(stringr::str_replace_all(s, '(Speak)', '\n\\1'))

#Speaker 1: dasjkdasldasn 
#Speaker 2: sadjasdkasd 
#Speaker 1: sjdakldak 
#Speak 2: sjdlaksdlsak 
#Speaker 1: sjdaskd. 
0 голосов
/ 06 августа 2020

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

strsplit(s,'\\s+(?=Speak(er)? \\d+:)',perl=TRUE)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...