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

在R语言中拆分字符串为多行并同步复制其他列数据

R语言拆分含多磷酸化位点的字符串并拆分行

需求说明:

  • 数据框df的Column1字段中,字符串最后一个下划线后的部分包含1-9组S/T/Y字母+数字的磷酸化位点组合
  • 当组合数量大于1时,需要将该字符串拆分为多行,每行对应一个位点组合,同时复制该行其他列的所有数据

输入示例代码

# 定义输入字符串
string1 <- "A01235_414_429_2_2_Y414T418S687"
string2 <- "C2"
string3 <- "C3"

# 创建数据框
df <- data.frame(Column1 = string1, Column2 = string2, Column3 = string3)

# 打印原数据框
print(df)

解决方案代码

使用tidyr结合dplyr的tidyverse方案实现,逻辑清晰且简洁:

library(tidyr)
library(dplyr)

new_df <- df %>%
  # 拆分出前缀(最后一个下划线之前的内容)和位点组(最后一个下划线之后的内容)
  mutate(
    prefix = sub("_(.*)$", "", Column1),
    sites = sub(".*_", "", Column1)
  ) %>%
  # 按S/T/Y的位置拆分位点组为多行(正向预查正则确保拆分后保留位点前缀字母)
  separate_rows(sites, sep = "(?=[STY])") %>%
  # 重组拆分后的Column1内容
  mutate(Column1 = paste0(prefix, "_", sites)) %>%
  # 移除中间辅助列
  select(-prefix, -sites)

# 打印结果
print(new_df)

输出结果

Column1 Column2 Column3
1 A01235_414_429_2_2_Y414       C2       C3
2 A01235_414_429_2_2_T418       C2       C3
3 A01235_414_429_2_2_S687       C2       C3

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 10:16:02