在" /"之后提取文字。在数据框列

时间:2016-02-02 06:03:52

标签: r dataframe

我的数据框有两列LinkValueLink列的值类似于" abcd.com/efgh/ijkl/mnop"并且是一个URL。这帧中有10,000行,我从100,000行样本中获取。

现在我想在最后一次" /"之后提取数据。从左到右或第一个" /"从右到左。因此,例如在上面显示的示例中,我将提取" mnop"

我想对Link列中的所有10,000行执行此操作,而Value列不应生效。

我能够使用

a = sapply(webdatatest, substring, 36)

但这不是一个动态的方法,因为最后的位置" /"会改变。这也影响了第二列。

所以需要一些帮助。

1 个答案:

答案 0 :(得分:7)

试试basename()。它

  

删除所有路径,包括最后一个路径分隔符(如果有)。

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

它是矢量化的,所以你可以将整列放在那里。

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

因此,要将其应用于数据框link的一列webdata,您只需执行

webdata$link <- basename(webdata$link)

另一个显而易见的功能是sub(),但我认为basename()可以解决问题,而且更容易。

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