Заменить текст после подчеркивания в строках столбца информационного кадра в трубе dplyr - PullRequest
0 голосов
/ 25 июня 2018

Пример df:

 a = c("a_1", "b_1", "b_2", "b_3", "c_1")
 b = c(1,2,3,4,5)
 df = cbind.data.frame(a,b)

Как заменить весь текст после и включая _, используя str_replace в трубе dplyr?

Следующее не работает:

df_1 = df %>% filter(b >= 1.5) %>% str_replace_all(df$a, "_*", "")

1 Ответ

0 голосов
/ 25 июня 2018

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

df %>% mutate(new_a = str_replace(a, '_.*', as.character(b)))

#    a b new_a
#1 a_1 1    a1
#2 b_1 2    b2
#3 b_2 3    b3
#4 b_3 4    b4
#5 c_1 5    c5

Или, если вы просто хотите удалить завершающую часть:

df %>% mutate(new_a = str_replace(a, '_.*', ''))

#    a b new_a
#1 a_1 1     a
#2 b_1 2     b
#3 b_2 3     b
#4 b_3 4     b
#5 c_1 5     c
...