#r #text
Вопрос:
Вот мои данные:
текст Содержание 1. Миссис ДЕФГ.Содержание 2. **8 Мистер DBC что-то еще. Содержание 3.
Как я могу получить фрейм данных, как показано ниже:
9 Г-н АБКД. Содержание 1 9 Миссис ДЕФГ. Содержание 2 8 Г-н DBC. Содержание 3
3 строки, 4 переменные (номер, мистер/миссис, имя, содержание)
Имена в моих данных всегда после «Мистер» или «Миссис» и всегда в верхнем регистре. Всегда есть период до того контента, который я хотел.
Вообще говоря, я хочу знать, кто что сказал (с табличкой с номером)
Спасибо!
Ответ №1:
Мы можем сделать
library(stringr)
library(tidyr)
library(dplyr)
tibble(col1 = text) %>%
separate_rows(col1, sep = "(?<=Content\d\.)\s ") %>%
mutate(grp = readr::parse_number(col1)) %>%
fill(grp) %>%
mutate(col1 = str_c(grp, str_remove(col1, "^[*] \d \s*"),
sep=" "), grp = NULL) %>%
pull(col1)
-выход
[1] "9 Mr.ABCD. Content1." "9 Mrs. DEFG.Content2." "8 Mr.DBC something else. Content3."
данные
text <- "**9 Mr.ABCD. Content1. Mrs. DEFG.Content2. **8 Mr.DBC something else. Content3."