2016-03-31 35 views
1

bir dize birden fazla defa geçiyor bir desen değiştirilmesi, aşağıda örneğin:Ben her satır bir sql select deyimi bir kısmını oluşturuyor bir sütun, bir dataframe sahip Ar

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 

İsterim, \w+ her örneği için, tablo diğer adını değişkene ekleyin. Örneğin:

      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 

ben "Bazı metin" ile her değişkeni yerine, ama ben o zaman takma ad + orijinal değişken metinle her geçtiği yerde değiştirmek nasıl bilemiyorum str_replace kullanma

library(stringr) 

str_replace_all(text, "\\w+", "some text") 

cevap

2

Sadece deseni yakalamanız ve \\1 ile başvurmanız gerekir. Örneğin,

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