【问题标题】:Extracting part of string based on two conditions根据两个条件提取部分字符串
【发布时间】:2019-03-15 15:51:15
【问题描述】:

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

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

b) 如果它是“Patient:”,则将字符串拆分为两列:一列包含单词“Patient”,另一列包含剩余文本。

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

我拥有的数据示例:

> 数据$语音[1:5]

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

[2] “病人:嗯-嗯。”

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

[4] “病人:嗯-嗯。”

[5] “治疗师:嗯……告诉我你在治疗后发现自己的想法和感受。”

我真的很感激。

谢谢!

【问题讨论】:

  • 示例的预期输出是什么?
  • @SvenHohenstein 两列:一列包含“治疗师”或“患者”,另一列包含剩余的文本字符串。

标签: r text mining


【解决方案1】:

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

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

结果:

         V1                                                                                     V2
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.

【讨论】:

    【解决方案2】:

    您可以使用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" 来处理演讲中: 的存在。

    【讨论】:

      猜你喜欢
      • 2022-01-02
      • 1970-01-01
      • 1970-01-01
      • 2014-02-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-01-20
      相关资源
      最近更新 更多