2017-06-30 115 views
1

希望得到一些指導,因爲它只是一個偶然的分析師,並且無法真正理解如何用前面的數字值來管理表達式。替換一個子字符串

我的數據如下,我希望將「4D」和「5D」類型的數據轉換爲「4門」和「5門」。

a <- c("4D Sedan", "5D Wagon") 
b <- c("4 Door Sedan", "5 Door Wagon") 
dt <- cbind(a,b) 

謝謝。

+1

https://stackoverflow.com/questions/4736/learning-regular-expressions – jogo

回答

3

我們可以在這裏使用gsub(),搜索模式:

\\b(\\d+)D\\b 

,並替換它:

\\1 Door 

代碼:

a <- c("4D Sedan", "5D Wagon", "AB4D car 5D") 
> gsub("\\b(\\d+)D\\b", "\\1 Door", a) 
[1] "4 Door Sedan" "5 Door Wagon" "AB4D car 5 Door" 

注意,在上面的例子中0123中的確實不是被取代,我們也不希望發生這種情況。通過在\\b(\\d+)D\\b中使用字邊界,我們可以避免發生不必要的替換。

+1

謝謝,只是爲了讓我能夠完全理解,在替換「\\ 1門」中,「1」代表任何數值值? –

+0

不,'\\ 1'是第一個_capture group_,它是我們用來搜索的模式括號中的數量,即'(\\ d +)'。換句話說,假設我們匹配那個模式,它就是'D'前面的_number_。 –