Use*_*598 10 string r concatenation
我有一个数据集,其中包含在聊天会话期间创建的两个人之间的对话框.例如,
我想在R中创建一个简单的函数,它将在B说出一行之前组合A的行,这样我就有了一个看起来像这样的数据集:
我知道如何合并/组合单元格,但我不知道如何创建一个逻辑语句创建一个指示符A在B之前说话(反之亦然).
gag*_*ews 10
该rle()功能可用于此目的.它确定给定向量中所有相等值的运行.
v1 <- c("A: Hi" , "A: How are you today", "B: Fine. How are you?",
"A: I'm good" ,"B: Cool") # input data
speakers <- rle(substring(v1, 1, 1))
Run Code Online (Sandbox Code Playgroud)
rle()现在可以使用函数的输出来相应地分割对话部分,然后将它们组合以获得期望的结果.
ids <- rep(paste(1:length(speakers$lengths)), speakers$lengths)
unname(sapply(split(v1, ids), function(monologue) {
# concatenate all statements in a "monologue"
monologue[-1] <- substring(monologue[-1], 4)
paste(monologue, collapse=" ")
}))
Run Code Online (Sandbox Code Playgroud)
结果:
## [1] "A: Hi How are you today"
## [2] "B: Fine. How are you?"
## [3] "A: I'm good"
## [4] "B: Cool"
Run Code Online (Sandbox Code Playgroud)