我有一个数据框架,该数据框架由500个书面议会辩论的协议组成,其中每个会话代表一个新的行。我的目标是创建一个数据框架,其中每一行都是独特的话语,并且没有掉落字符串的部分。
协议具有标准格式,其中每种新话语都是由说话者的名称和政党/组织引入的,然后是结肠。例如,这些实例以
的形式" MP Peter Mueller(SPD(:"或"外部专家Petra Meier(德国工会(:"
协议看起来有点像这样:
protocol <- "MP Peter Mueller (SPD): What do you think about the bill? External Expert Petra Meier (German Trade Union): I support the bill. MP Peter Mueller (SPD): Thank you for your expertise."
我熟悉我需要匹配的所有正则表达式,并找到新话语的这些实例。对于此示例,我会使用。
utterances <- c(grep("MP \w+ \w+ \(\w+\):", protocol),
grep("External Expert \w+ \w+ \(\w+ \w+ \w+\):", protocol))
我现在正在努力提取每个新话语作为子字符串,并将其写入我的数据框架中的新行中。我的预期输出是:
dataframe
[1] "MP Peter Mueller (SPD): What do you think about the bill?"
[2] "External Expert Petra Meier (German Trade Union): I support the bill."
[3] "MP Peter Mueller (SPD): Thank you for your expertise."
非常感谢您的帮助!
我在这里发表评论中留下的话。使用提供的示例(即协议(,一个建议是以下建议。您想用遵循?
或.
的空间分开字符串。在这里,我在Stringi软件包中使用了stri_split_regex()
。但是您可以使用任何其他类似的功能。
trimws(unlist(stri_split_regex(str = protocol, pattern = "(?<=[.|?])", omit_empty = T)))
#[1] "MP Peter Mueller (SPD): What do you think about the bill?"
#[2] "External Expert Petra Meier (German Trade Union): I support the bill."
#[3] "MP Peter Mueller (SPD): Thank you for your expertise."