如何在R语言中提取数据框列字符串第二个空格之后的内容
R提取数据框字符串列第二个空格后内容的方法
问题背景
需要提取R数据框字符串列中,每个字符串第二个空格之后的全部内容,示例数据如下:
df <- data.frame(col = c("Adenia macrophylla", "Adinobotrys atropurpureus (Wall.) Dunn", "Ardisia purpurea Reinw. ex Blume"))
期望输出:
col 1 2 (Wall.) Dunn 3 Reinw. ex Blume
最优实现方案
不需要使用separate+unite的拆分合并逻辑,也不需要额外做字符串补位,直接通过正则匹配替换即可实现,代码简洁且适配任意长度的字符串:
方案1:tidyverse生态实现
library(dplyr) library(stringr) df <- df %>% mutate(col = str_replace(col, "^\\S+\\s\\S+\\s?", ""))
正则逻辑说明:
^匹配字符串起始位置\\S+匹配首个非空格序列(第一个单词)\\s匹配第一个空格\\S+匹配第二个非空格序列(第二个单词)\\s?匹配第二个单词后可能存在的空格,避免不足两个空格的字符串返回多余空格
方案2:基础R实现(无需加载第三方包)
df$col <- sub("^\\S+\\s\\S+\\s?", "", df$col)
已验证的可行方案
你自己提供的补位后删除前两段的方案也可以实现效果,核心逻辑也是基于正则匹配删除前两个单词及对应空格:
xx %>% mutate(col = str_pad(col, 20,"right")) %>% mutate(col = str_remove(col, '\\w+\\s\\w+\\s'))
内容的提问来源于stack exchange,提问作者Anh
相关产品推荐
相关产品推荐

