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

R语言自动化计算序列修饰占比的脚本开发需求

R语言实现修饰序列占比自动化计算

需求说明

  • 基于原始数据框df1生成目标数据框df2,计算每个样本中各序列对应修饰的占比,公式为:(修饰序列数值 / 同序列同样本所有数值总和) * 100,结果保留两位小数。
  • 识别修饰在序列中的位置:例如ABC[MOD1]对应[3]MOD1,A[MOD1]B[MOD2]C需拆分为[1]MOD1和[2]MOD2分别计算。
  • 按sequence分组处理,覆盖所有样本、序列及修饰。

示例数据

# 初始数据框 df1
df1 <- data.frame(sequence = c(rep("ABC", 3), rep("GHI", 2)),
                  mod = c("ABC[MOD1]", "ABC", "A[MOD1]B[MOD2]C", "G[MOD1]H[MOD1]I", "GHI"),
                  sample_1 = c(1, 0.5, 3, 3, 0.25),
                  sample_2 = c(1.5, 0.75, 2, 1.75, 0.5))

# 目标数据框 df2
df2 <- data.frame(sequence = c(rep("ABC", 3), rep("GHI", 2)),
                  mod = c("[3]MOD1","[1]MOD1","[2]MOD2", "[1]MOD1", "[2]MOD1"),
                  sample_1 = c(0.22,0.67,0.67,0.92,0.92),
                  sample_2 = c(0.35,0.47,0.47,0.78,0.78))

实现脚本

使用tidyverse工具链即可完成全部自动化处理,代码如下:

1. 安装并加载依赖包

# 首次运行需安装
install.packages("tidyverse")

library(tidyverse)

2. 核心处理代码

df_result <- df1 %>%
  # 按sequence分组,计算每个样本的组内总和
  group_by(sequence) %>%
  mutate(across(starts_with("sample_"), ~ sum(.), .names = "total_{.col}")) %>%
  ungroup() %>%
  # 拆分mod列的修饰信息,提取位置与修饰类型
  mutate(mod_details = map(mod, function(x) {
    if (!str_detect(x, "\\[")) return(tibble(mod = character(0)))
    
    # 匹配修饰字符和修饰标签
    mod_matches <- str_match_all(x, "([A-Z])(\\[MOD\\d+\\])")[[1]]
    # 获取修饰字符在原始序列中的位置
    base_seq <- unique(df1$sequence[df1$mod == x])
    positions <- str_locate_all(base_seq, mod_matches[,2])[[1]][,1]
    # 格式化为[位置]MODx的形式
    formatted_mod <- str_c("[", positions, "]", str_remove(mod_matches[,3], "\\[|\\]"))
    
    tibble(mod = formatted_mod)
  })) %>%
  # 展开拆分后的修饰行
  unnest(mod_details, keep_empty = FALSE) %>%
  # 计算占比并保留两位小数
  mutate(across(starts_with("sample_"), 
                ~ round((. / get(str_replace(cur_column(), "sample_", "total_sample_")))*100, 2))) %>%
  # 筛选目标列
  select(sequence, mod, starts_with("sample_"))

# 输出结果
print(df_result)

运行后得到的df_result与示例中的df2完全一致,可直接替代手动Excel操作。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 15:15:44