首页 > 解决方案 > 在通话记录中连接多个字符串

问题描述

我有一个数据集,看起来像以下一千行:

dat = c("Speaker 1: ONE TWO THREE | Speaker 2: FOUR FIVE SIX SEVEN | Speaker 1: EIGHT NINE TEN | Speaker 2: ELEVEN* TWELVE THIRTEEN | Speaker 1: FOURTEEN FIFTEEN","Speaker 1: ONE TWO")
dat = tolower(dat) #lowercase 
dat = gsub("\\*","",dat) #strip asterisks

我试图让它看起来像下面这样:

dat[1]:
Four five six seven. Eleven twelve thirteen.
dat[2]:
NA #(or blank)

也就是说,我想从 Speaker 1 中删除任何内容,删除星号,将剩下的内容更改为句子大小写,并在每个语句的末尾加上句号。

感谢您提供任何帮助,特别是如果这里存在此解决方案而我找不到它。

标签: r

解决方案


使用基础 R 你可以这样做:

a = gsub(".*?2:\\s*([^|]*)\\b|(?:(?!Speaker 2).)*","\\L\\1. ", dat, perl = T)
b = gsub("\\*", "", sub("(?|(?<=^)|(?<=\\W))\\W*$", '', a, perl = T))
`is.na<-`(b,nchar(b)==0)


[1] "four five six seven. eleven twelve thirteen."
[2] NA

推荐阅读