You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用R的dplyr检测列变量中的单词并生成新列?

在R中提取字符串下划线后的内容生成新列

原始数据

library(tidyverse)
var = c("A_CAT","B_DOG","A_CAT","F_HORSE","GEORGE_DOG","HeLeN_CAT")
df = tibble(var)

对应的数据框:

var
A_CAT
B_DOG
A_CAT
F_HORSE
GEORGE_DOG
HeLeN_CAT

目标结果

需要生成包含var_new列的数据框,提取每个var值中下划线后的部分:

varvar_new
A_CATCAT
B_DOGDOG
A_CATCAT
F_HORSEHORSE
GEORGE_DOGDOG
HeLeN_CATCAT

解决方案

方法1:使用str_extract(tidyverse)

利用正则表达式匹配下划线后的所有字符,代码简洁高效:

df <- df %>%
  mutate(var_new = str_extract(var, "(?<=_).+"))

正则表达式(?<=_).+是正向预查,表示匹配所有跟在下划线后面的字符,无需考虑下划线前的内容长度。

方法2:使用separate(tidyverse)

将var列按下划线分割为两列,保留需要的部分:

df <- df %>%
  separate(var, into = c("prefix", "var_new"), sep = "_", remove = FALSE) %>%
  select(-prefix)
  • remove = FALSE:保留原始的var列
  • 最后通过select(-prefix)删除不需要的前缀列

方法3:Base R 原生方法

用strsplit分割字符串后提取第二部分:

df$var_new <- sapply(strsplit(df$var, "_"), function(x) x[2])

strsplit将每个字符串拆分为列表,sapply遍历列表取出第二个元素。

内容的提问来源于stack exchange,提问作者Homer Jay Simpson

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.15 22:20:34