使用正则表达式填充数据框列(?)

Rya*_*ons 3 regex r dataframe

好的,所以我有一个网络论坛评论的数据框.每行都有一个包含ID的单元格,该ID是该注释的父注释的链接的一部分.行包含注释的完整永久链接,其中ID是变化的部分.

我想添加一个列,显示附加到该父注释的用户名.我假设我需要使用一些正则表达式函数,在这一点上我觉得很神秘.

在工作流术语中,我需要找到其URL包含父注释ID的行,从该行中获取用户名.这是一个玩具示例:

toy <- rbind(c("yes?", "john", "www.website.com/4908", "3214", NA), c("don't think so", "mary", "www.website.com/3958", "4908", NA))
toy <- as.data.frame(toy)
colnames(toy) <- c("comment", "user", "URL", "parent", "parent_user")

         comment user                  URL parent parent_user
1           yes? john www.website.com/4908   3214        <NA>
2 don't think so mary www.website.com/3958   4908        <NA>
Run Code Online (Sandbox Code Playgroud)

需要成为:

         comment user                  URL parent parent_user
1           yes? john www.website.com/4908   3214        <NA>
2 don't think so mary www.website.com/3958   4908        john
Run Code Online (Sandbox Code Playgroud)

此列中的某些值将为NA,因为它们是顶级注释.所以,像,

dataframe$parent_user <- dataframe['the row where parent
ID i is found in the URL column', 'the user name column in that row']
Run Code Online (Sandbox Code Playgroud)

谢谢!!

the*_*ail 6

另一种选择,使用basename基数R中的函数," 删除所有路径,包括最后一个路径分隔符(如果有的话) "

toy$user[match(toy$parent, basename(as.character(toy$URL)))]
#1] <NA> john
#Levels: john mary
Run Code Online (Sandbox Code Playgroud)

  • 在这种情况下,`basename()`是一个很好的函数.我从基地R找到了新的东西.谢谢.:) (3认同)