2016-02-02 25 views
1

我有一個數據幀,它有兩列LinkValueLink列的值爲「abcd.com/efgh/ijkl/mnop」,並且是一個URL。在這個框架中有10,000行,我從100,000行的樣本中獲取。提取數據幀列中「/」後面的文本

現在我想從左到右提取最後一個「/」後的數據或從右到左先提取「/」。因此,例如在上述示例中,我要提取「mnop」

我想對列Link中存在的所有10,000行執行此操作,而不應影響Value列。

我能夠使用

a = sapply(webdatatest, substring, 36) 

但這不是一個動態的方法的最後位置「/」將改變。這也是影響第二欄。

所以需要一些幫助。

+0

我沒有得到你。從需要「mnop」的「abcd.com/efgh/ijkl/mnop」。並想對所有行重複此操作。 –

回答

7

嘗試basename()。它

刪除所有直到幷包括最後一個路徑分隔符(如果有的話)的路徑。

basename("abcd.com/efgh/ijkl/mnop") 
# [1] "mnop" 

它是矢量,所以你可以堅持整列在那裏。

basename(rep("abcd.com/efgh/ijkl/mnop", 3)) 
# [1] "mnop" "mnop" "mnop" 

所以,爲了申請這一個數據幀webdatalink欄,你可以簡單地做

webdata$link <- basename(webdata$link) 

其他明顯的功能將是sub(),但我認爲basename()會做的伎倆和這很容易。

sub(".*/", "", rep("abcd.com/efgh/ijkl/mnop", 3)) 
+0

我的數據框名稱是webdata。另外「/」是動態的。所以它不會總是「mnop」。它就像「abcd.com/efgh/ijkl/aaaaaaaa」或「abcd.com/efgh/ijkl/xxyy-rr-rrrrr」。我也希望得到的結果是一個數據框架。 –

+0

K,所以'data $ column < - basename(data $ column)' –

+0

@KshitijMarwah - 你甚至在這些例子上試過'basename'嗎?它工作正常。 'txt < - c(「abcd.com/efgh/ijkl/aaaaaaaa」,「abcd.com/efgh/ijkl/xxyy-rr-rr-rr」); basename(txt)'returns' [1]「aaaaaaaa」「xxyy -rr -rr-rr」' – thelatemail