我有一个数据框,有两列Link
和Value
.该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)
但这不是一个动态的方法,因为最后"/"的位置会改变.这也影响了第二列.
所以需要一些帮助.
试试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)