R 在“之后提取文本”/&引用;在数据帧列中

R 在“之后提取文本”/&引用;在数据帧列中,r,dataframe,R,Dataframe,我有一个数据框,它有两列Link和Value。链接列的值类似于“abcd.com/efgh/ijkl/mnop”,是一个URL。这个框架中有10000行,我从100000行的样本中选取 现在我想从左到右提取最后一个“/”或从右到左提取第一个“/”之后的数据。因此,对于上述样本中的eg,我要提取“mnop” 我想对链接列中的所有10000行执行此操作,而值列不应受到影响 我能够使用 a = sapply(webdatatest, substring, 36) 但这不是一种动态方法,因为最后一个“

我有一个数据框,它有两列
Link
Value
链接
列的值类似于“abcd.com/efgh/ijkl/mnop”,是一个URL。这个框架中有10000行,我从100000行的样本中选取

现在我想从左到右提取最后一个“/”或从右到左提取第一个“/”之后的数据。因此,对于上述样本中的eg,我要提取“mnop”

我想对
链接
列中的所有10000行执行此操作,而
列不应受到影响

我能够使用

a = sapply(webdatatest, substring, 36)
但这不是一种动态方法,因为最后一个“/”的位置会发生变化。这也影响了第二列

所以需要一些帮助。

试试
basename()
。它

删除最后一个路径分隔符(如果有)之前的所有路径

它是矢量化的,因此您可以将整个列粘贴在其中

basename(rep("abcd.com/efgh/ijkl/mnop", 3))
# [1] "mnop" "mnop" "mnop"
因此,要将其应用于数据框
webdata
的一列
link
,只需

webdata$link <- basename(webdata$link)

我不明白你的意思。从“abcd.com/efgh/ijkl/mnop”中需要“mnop”。并希望对所有行重复此操作。我的数据帧名称是webdata。而且“/”是动态的。因此,它并不总是“mnop”。它就像“abcd.com/efgh/ijkl/aaaaaa”或“abcd.com/efgh/ijkl/xxyy-rr”。我还希望结果是一个数据帧expected@KshitijMarwah-你可能有一个因素。使用
basename(as.character(webdatatest$Page))
让我猜猜:
是.character(webdatatest$Page)
FALSE
-你有一个
因子
-首先转换它-
webdatatest$Page为什么我觉得你甚至没有阅读这些注释并运行代码?
webdata$link <- basename(webdata$link)
sub(".*/", "", rep("abcd.com/efgh/ijkl/mnop", 3))