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

如何在R语言中拆分数据框某列的因子名称(保留末尾数值点号)

拆分数据框中带点号的编码列

下面提供两种R语言实现方案,满足将col2列拆分为genus、species、replicate三列且不拆分末尾数值点号的需求:

方案一:使用tidyr包的separate()函数(推荐)

separate()函数可以灵活控制拆分规则,通过extra = "merge"参数保留最后一部分的点号:

library(tidyr)

# 构造原始数据框
col1 <- rnorm(3)
col2 <- c("d.MAG.1.1","d.MAG.3.4","d.TEX.5.6")
df <- data.frame(col1, col2)

# 拆分col2列
df_new <- separate(df, col2, into = c("genus", "species", "replicate"), sep = "\\.", extra = "merge")
  • sep = "\\.":指定拆分分隔符为点号(正则中需用反斜杠转义)
  • extra = "merge":将拆分后多余的部分合并到最后一列,避免拆分末尾的点号

方案二:基础R原生实现(无需额外包)

通过strsplit()拆分字符串后,分别提取对应部分并合并末尾内容:

# 构造原始数据框
col1 <- rnorm(3)
col2 <- c("d.MAG.1.1","d.MAG.3.4","d.TEX.5.6")
df <- data.frame(col1, col2)

# 拆分字符串为列表
split_result <- strsplit(df$col2, "\\.")
# 提取各列内容
df$genus <- sapply(split_result, `[`, 1)
df$species <- sapply(split_result, `[`, 2)
df$replicate <- sapply(split_result, function(x) paste(x[3:length(x)], collapse = "."))

# 整理得到目标数据框
df_new <- df[, c("col1", "genus", "species", "replicate")]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 07:45:34