Изменение шаблона, который встречается несколько раз в строке в R
У меня есть датафрейм с одним столбцом, где каждая строка представляет часть оператора выбора SQL, например, ниже:
test <-
bind_rows(
data.frame(text = "spend_1 + spend_2", stringsAsFactors = FALSE),
data.frame(text = "spend_1 + spend_2 + spend_3", stringsAsFactors = FALSE),
data.frame(text = "spend_2 - spend_3", stringsAsFactors = FALSE)
)
print(test)
Source: local data frame [3 x 1]
text
(chr)
1 spend_1 + spend_2
2 spend_1 + spend_2 + spend_3
3 spend_2 - spend_3
Я хотел бы, для каждого случая \w+
Добавьте псевдоним таблицы в переменную. Например:
text text_adj
1 spend_1 + spend_2 a.spend_1 + a.spend_2
2 spend_1 + spend_2 + spend_3 a.spend_1 + a.spend_2 + a.spend_3
3 spend_2 - spend_3 a.spend_2 - a.spend_3
С помощью str_replace
Я могу заменить каждую переменную на "некоторый текст", но я не могу понять, как я могу затем заменить каждый экземпляр псевдонимом + исходный текст переменной
library(stringr)
str_replace_all(text, "\\w+", "some text")
1 ответ
Решение
Вам просто нужно захватить образец и сослаться на него \\1
, Например,
test %>%
mutate(., text2 = str_replace_all(text, "(\\w+)", "alias.\\1"))
# Source: local data frame [3 x 2]
#
# text text2
# (chr) (chr)
# 1 spend_1 + spend_2 alias.spend_1 + alias.spend_2
# 2 spend_1 + spend_2 + spend_3 alias.spend_1 + alias.spend_2 + alias.spend_3
# 3 spend_2 - spend_3 alias.spend_2 - alias.spend_3