我有一个数据框,有两列Link
和Value
。 Link
列的值为“abcd.com/efgh/ijkl/mnop”,是一个URL。此帧中有10,000行,我从100,000行的样本中获取。
现在我想从左到右提取最后一个“/”后的数据,或者从右到左提取第一个“/”。所以对于例如上面显示的示例我是提取“mnop”
我想对列Link
中的所有10,000行执行此操作,而Value
列不应该生效。
我能够使用
a = sapply(webdatatest, substring, 36)
但这不是一个动态的方法,因为最后“/”的位置会改变。这也影响了第二列。
所以需要一些帮助。
试试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))