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

在R语言中合并Excel文件中符合条件的行

Python解决方案(pandas)

如果习惯用Python处理数据,以下是等效实现:

import pandas as pd

# 读取Excel文件,替换为你的文件路径
df = pd.read_excel("your_metabolite_data.xlsx")

# 定义分组合并函数
def merge_rrt_subgroup(group):
    # 按RRT排序,确保连续比较
    sorted_group = group.sort_values(by="RRT")
    # 计算相邻RRT差值,生成合并组ID
    rrt_diff = sorted_group["RRT"].diff().fillna(0)
    sorted_group["merge_group"] = (rrt_diff > 0.05).cumsum()
    
    # 定义聚合规则:前四列取均值,样本列取均值(可修改)
    agg_rules = {
        "Mass": lambda x: x.mean(skipna=True),
        "RT": lambda x: x.mean(skipna=True),
        "RRT": lambda x: x.mean(skipna=True)
    }
    # 自动匹配所有样本列,添加聚合规则
    sample_cols = [col for col in df.columns if col not in ["Metabolite", "Mass", "RT", "RRT"]]
    for col in sample_cols:
        agg_rules[col] = lambda x: x.mean(skipna=True)
    
    # 分组聚合
    merged_subgroup = sorted_group.groupby("merge_group").agg(agg_rules).reset_index(drop=True)
    # 补充Metabolite列
    merged_subgroup["Metabolite"] = group.name
    # 恢复原列顺序
    return merged_subgroup[df.columns]

# 按Metabolite分组执行合并
merged_df = df.groupby("Metabolite").apply(merge_rrt_subgroup).reset_index(drop=True)

# 导出结果
merged_df.to_excel("merged_metabolite_data.xlsx", index=False)

关键说明

  • 若之前仅得到少量代谢物,可能是未按Metabolite分组就直接处理RRT差值,导致跨代谢物错误合并;上述代码严格按Metabolite分组,确保合并仅发生在同一名下的代谢物中。
  • 样本列匹配逻辑可优化:如果样本列有统一前缀(如Sample_),可将sample_cols生成逻辑改为sample_cols = [col for col in df.columns if col.startswith("Sample_")]。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 14:17:46