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

Ksh*_*wah 2 r dataframe

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

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

我想对所有的10,000行是有列做到这一点Link,而Value列不应进行.

我能够使用

a = sapply(webdatatest, substring, 36)
Run Code Online (Sandbox Code Playgroud)

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

所以需要一些帮助.

Ric*_*ven 8

试试basename().它

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

basename("abcd.com/efgh/ijkl/mnop")
# [1] "mnop"
Run Code Online (Sandbox Code Playgroud)

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

basename(rep("abcd.com/efgh/ijkl/mnop", 3))
# [1] "mnop" "mnop" "mnop"
Run Code Online (Sandbox Code Playgroud)

因此,要将其应用于link数据框的一列webdata,您可以这样做

webdata$link <- basename(webdata$link)
Run Code Online (Sandbox Code Playgroud)

另一个显而易见的功能是sub(),但我认为basename()会做到这一点,而且更容易.

sub(".*/", "", rep("abcd.com/efgh/ijkl/mnop", 3))
Run Code Online (Sandbox Code Playgroud)

  • 为什么我觉得你甚至没有阅读这些评论并运行代码? (2认同)