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

如何用R的tidyverse拆分age列并创建填充color列?

拆分age列提取颜色的实现方法

以下是几种适合的R语言实现方式,满足你用mutate()或更简便工具处理的需求:

方法1:用tidyr::separate()(最便捷)

这种方法直接拆分指定列,一步完成age列的拆分和新color列的创建,同时可自动转换数据类型:

library(dplyr)
library(tidyr)

df_processed <- df %>%
  separate(age, into = c("age", "color"), sep = "_", convert = TRUE)
  • sep="_":指定按下划线作为分隔符
  • into = c("age", "color"):定义拆分后生成的两列名称
  • convert = TRUE:自动将拆分后的age列转换为数值类型(原数据是字符型)

方法2:用dplyr::mutate() + stringr函数

如果需要明确用mutate()来分步处理,可结合字符串提取函数实现:

library(dplyr)
library(stringr)

df_processed <- df %>%
  mutate(
    # 提取下划线后的颜色部分
    color = str_extract(age, "(?<=_).+"),
    # 提取开头的数字并转换为数值,替换原age列
    age = as.numeric(str_extract(age, "^\\d+"))
  )
  • str_extract(age, "(?<=_).+"):通过正则表达式的正向预查,匹配下划线之后的所有字符
  • str_extract(age, "^\\d+"):匹配age字符串开头的所有数字,再转为数值类型

方法3:基础R实现(无需额外包)

如果不想加载tidyverse系列包,用基础R的字符串拆分函数也能完成:

# 拆分age列的每个元素
split_result <- strsplit(df$age, "_")
# 提取数字部分替换原age列
df$age <- sapply(split_result, function(x) as.numeric(x[1]))
# 提取颜色部分生成新color列
df$color <- sapply(split_result, function(x) x[2])

处理后的结果

不管用哪种方法,最终都会得到如下数据框:

nameagesexcolor
Steve12Mpink
Darrel14Mgreen
Barney19Mblue
Lola24Fcyan

内容的提问来源于stack exchange,提问作者morningstarsaus

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 22:15:33