根据两个条件提取部分字符串

时间:2019-03-15 15:51:16

标签: r text mining

我的数据集中有一个字符列,我想根据两个条件从其中提取字符串的一部分:

a)如果字符串以“ Therapist:”开头,则将字符串分为两列:一列包含“ Therapist”一词,另一列包含其余文本。

b)如果它是“患者:”,则将该字符串分成两列:一列包含单词“患者”,另一列包含其余文本。

我一直遇到的问题是我不知道如何在R中创建if语句。我是新手,但非常愿意学习。即使在谷歌搜索(stackoverflow等)并尝试使用其他功能之后,我仍然感到茫然。

我拥有的数据示例:

> data $ speech [1:5]

[1]“治疗师:好的,我们回来了……”

[2]“患者:嗯-嗯。”

[3]“治疗师:…几个小时后……”

[4]“患者:嗯-嗯。”

[5]“治疗师:嗯……在会后,让我了解一下自己的想法和感觉。”

我真的很感激。

谢谢!

2 个答案:

答案 0 :(得分:0)

此命令创建一个两列数据框:

12.100000

结果:

as.data.frame(do.call(rbind, strsplit(data$speech, ": ")))

答案 1 :(得分:0)

您可以在separate()包中使用{tidyr}

library(tidyr)

df <- data.frame(
  speech = c(
    "Therapist: Okay, we’re back…",
    "Patient: Hmm-hmm.",
    "Therapist: … after a : couple of hours…",
    "Patient: Hmm-hmm.",
    "Therapist: Hmm… Catch me up on what you’ve : found yourself thinking and feeling after the session."
  )
)

separate(df, speech, into = c("Name", "Talk"), sep = ":", extra = "merge")

       Name                                                                                      Talk
1 Therapist                                                                         Okay, we’re back…
2   Patient                                                                                  Hmm-hmm.
3 Therapist                                                              … after a : couple of hours…
4   Patient                                                                                  Hmm-hmm.
5 Therapist  Hmm… Catch me up on what you’ve : found yourself thinking and feeling after the session.

我使用自变量extra = "merge"处理讲话中:的存在。