在数据框列中的“/”之后提取文本

问题描述 投票:1回答:1

我有一个数据框,有两列LinkValueLink列的值为“abcd.com/efgh/ijkl/mnop”,是一个URL。此帧中有10,000行,我从100,000行的样本中获取。

现在我想从左到右提取最后一个“/”后的数据,或者从右到左提取第一个“/”。所以对于例如上面显示的示例我是提取“mnop”

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

我能够使用

a = sapply(webdatatest, substring, 36)

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

所以需要一些帮助。

r dataframe
1个回答
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))
© www.soinside.com 2019 - 2024. All rights reserved.