#r #dataframe #stringr
#r #фрейм данных #stringr
Вопрос:
У меня есть фрейм данных:
ID value
1 he following object is masked from ‘package:purrr’
2 Attaching package: ‘magrittr’
3 package ‘ggplot2’ was built under R version 3.6.2
4 Warning messages:
вот код для преобразования значения столбца:
df <- df %>%
mutate(value = stringr::str_replace(value, '(^he following object)', '\1'),
value = stringr::str_replace(value, '(^Attaching package:)', '\1'),
value = stringr::str_replace(value, '(^package ‘ggplot2’)', '\1'))
) %>%
group_by(ID, value)
вывод:
ID value
1 he following object
2 Attaching package:
3 package ‘ggplot2’
4 Warning messages:
Как вы видите, я использую stringr::str_replace несколько раз для одного столбца. мои фактические данные намного больше (например, миллионы строк). это всего лишь пример подмножества. итак, как я мог бы объединить это трехкратное использование этой функции за один раз? я хочу использовать одни и те же функции и библиотеки (без радикальных изменений)
Ответ №1:
Если я правильно понимаю вопрос, вы должны быть в состоянии найти полезным str_replace
заменить str_replace_all
в своем коде с помощью оператора канала |
, чтобы избежать необходимости str_replace
многократного вызова в разных строках.
Например.:
table_patterns <- table %>%
mutate(value = str_replace_all(value, "(^he following object)|(^Attaching package:)|(^package ‘ggplot2’)", '\1')) %>%
group_by(ID, value)
Комментарии:
1. спасибо, возможно ли это сделать с помощью функции str_starts()?
2. Основываясь на документации, да, похоже, что это, по сути, выполняет то же регулярное выражение, что и то, что вы пытаетесь сделать здесь. Я пытался дать вам общий шаблон, выходящий за рамки только этого конкретного варианта использования.
3. не могли бы вы показать, как это будет выглядеть с помощью str_starts() ?