我有一个数据集,其中包含在聊天 session 期间创建的两个人之间的对话。例如,
我想在R中创建一个简单的函数,它将在B说话之前将A的行合并为一行,这样我就有了一个数据集,如下所示:
我知道如何合并/合并单元格,但是我不确定如何创建逻辑语句,从而为A在B之前讲话的行创建一个指示符(反之亦然)。
最佳答案
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))
现在可以使用
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=" ")
}))
结果:
## [1] "A: Hi How are you today"
## [2] "B: Fine. How are you?"
## [3] "A: I'm good"
## [4] "B: Cool"
关于r - 结合名义变量的运行,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/28526566/