Извлеките строку после первой запятой и сохраните ее в другом столбце, используя R - PullRequest
0 голосов
/ 27 марта 2019

Я хочу разделить текст после первой запятой и поместить его в другой столбец того же кадра данных.

s2 <- data.frame(text =c("Hi Prashant, As per the contract, employees can avail for various services like gym, recreation center, etc","Various dishes are available in canteen like pasta, rice dishes, etc"),stringsAsFactors = FALSE)

s2$new = gsub(".*,", "", s2)

Но это расщепление после последней запятой, чего я не хочу.

Ожидаемый вывод после разделения текста после первой запятой и сохранения его в другом столбце с именем 'new' должен выглядеть следующим образом:

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

второй ряд: блюда из риса и др.

Ответы [ 2 ]

1 голос
/ 27 марта 2019

Используя sub, и сделайте точку ленивой:

s2$new <- sub("^.*?,", "", s2$text)

Или другим способом:

s2$new <- sub("^[^,]*,", "", s2$text)

Проблема с вашим текущим шаблоном заключается в том, что .* по умолчанию жадный , означающий, что он будет потреблять все до последней запятой.Но в вашем случае вы хотите, чтобы он прекратил сопоставление с первой запятой.

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

Один из способов сделать это - использовать библиотеку stringr и функцию str_split_fixed, которая разбивает вектор строк на матрицу подстрок при совпадении с образцом.

library(stringr)

s2$new <- str_split_fixed(s2$text, ",", 2)[,2]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...