2016-08-05 235 views
2

如何從數據的末尾刪除「/」。讓我們假設這是我的數據刪除每個字符串末尾的特定字符

#input 
ID page 
1 www.example.com/, ww.example.com/flight, www.example.com/flight/ 
2 www.example.com/, ww.example.com/flight 

我想從那些誰了他們的最後一個字符去掉「/」和我的輸出會像

#output 
ID page 
1 www.example.com, ww.example.com/flight, www.example.com/flight 
2 www.example.com, ww.example.com/flight 
+3

也許'GSUB( 「/?(=,| $)」, 「」,as.character(DF $頁),PERL = TRUE)' –

+0

也看看'urltools'包。它具有處理URL的一些很棒的功能 – Sotos

回答

2

我們可以使用gsub沒有lookarounds。 。在這裏,我們刪除/,然後在字符串的末尾($)或,,並將其替換爲,。在隨後的sub中,我們刪除最後的,

df1$page <- sub(",$", "", gsub("/($|,)", ",", df1$page)) 

df1$page 
#[1] "www.example.com, ww.example.com/flight, www.example.com/flight" 
#[2] "www.example.com, ww.example.com/flight"   

或者另一種選擇是

gsub("/(?!\\b)", "", df1$page, perl = TRUE) 
#[1] "www.example.com, ww.example.com/flight, www.example.com/flight" 
#[2] "www.example.com, ww.example.com/flight"  
7

一個選項:

gsub("/(?=,|$)", "", as.character(df$page), perl = TRUE) 
#[1] "www.example.com, ww.example.com/flight, www.example.com/flight" 
#[2] "www.example.com, ww.example.com/flight" 

此檢查是否/被後跟一個逗號,或字符串$並且如果該結束時被發現,/被替換爲"",即它被刪除。由於這是一個向後看,我們使用perl = TRUE

其他選項(低效率):

sapply(strsplit(as.character(df$page), ", ", fixed = TRUE), function(x) toString(sub("/$", "", x))) 
#[1] "www.example.com, ww.example.com/flight, www.example.com/flight" 
#[2] "www.example.com, ww.example.com/flight"