Извлечение части строки на основе двух условий - PullRequest
0 голосов
/ 15 марта 2019

В моем наборе данных есть символьный столбец, из которого я хочу извлечь часть строки на основе двух условий:

a) если строка начинается с «Therapist:», разбейте строку на два столбца: один столбец со словом «Therapist», а другой столбец с оставшимся текстом.

b) если это «Пациент:», разбейте строку на два столбца: один столбец со словом «пациент», а другой столбец с оставшимся текстом.

Проблема, с которой я столкнулся, заключается в том, что я не знаю, как создавать утверждения в R. Я новичок, но очень хочу учиться. Даже после поиска в Google (stackoverflow и т. Д.) И пробуя разные функции, я все еще в растерянности.

Пример данных, которые у меня есть:

> data $ speech [1: 5]

[1] «Терапевт: Хорошо, мы вернулись…»

[2] «Пациент: Хм-хм».

[3] «Терапевт:… через пару часов…»

[4] «Пациент: Хм-хм».

[5] «Терапевт: Хм… Догоните меня в том, о чем вы думали и чувствовали после сеанса».

Я действительно ценю это.

Спасибо!

& # x200B;

Ответы [ 2 ]

0 голосов
/ 15 марта 2019

Вы можете использовать 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", чтобы иметь дело с присутствием : в речи.

0 голосов
/ 15 марта 2019

Эта команда создает фрейм данных из двух столбцов:

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