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

R语言跨数据框条件匹配值替换与未匹配样本批量追加实现

R 实现qPCR复孔统计与样本汇总通用方案

前置数据结构约定

以下方案基于常见的仪器输出数据结构设计,你可以根据自己的实际列名修改对应参数:

  • Data 列名:sample_name(样本名)、well(孔位编号,如A1、B3)、cq_value(单孔检测输出值)
  • Replicates 列名:well_list(复孔组孔位拼接字符串,默认逗号分隔,如"A1,A2")、Mean.Cq(复孔均值)、STD.Cq(复孔标准差)

实现代码

首先安装依赖包(已安装可跳过):

install.packages("tidyverse")

加载包并执行处理:

library(tidyverse)

# 1. 处理复孔数据,匹配对应样本名
Replicates_with_sample <- Replicates %>%
  # 拆分孔位列表为单个孔位,一行对应一个孔位
  separate_rows(well_list, sep = ",") %>%
  # 匹配Data里的样本名
  left_join(Data, by = c("well_list" = "well")) %>%
  # 按复孔组的统计值分组(如有复孔组唯一ID,替换为ID列更准确)
  group_by(Mean.Cq, STD.Cq) %>%
  # 取第一个样本名作为该复孔组的样本名
  summarise(sample_name = first(sample_name), .groups = "drop") %>%
  # 调整列顺序和后续单孔样本格式对齐
  select(sample_name, Mean.Cq, STD.Cq)

# 2. 提取所有属于复孔组的孔位,用于筛选非复孔样本
replicate_wells <- Replicates %>%
  separate_rows(well_list, sep = ",") %>%
  pull(well_list)

# 3. 处理非复孔样本,生成对应统计值
single_well_samples <- Data %>%
  # 筛选不在复孔组里的孔位
  filter(!well %in% replicate_wells) %>%
  # 单孔样本均值为自身检测值,标准差可按需设为0或NA
  mutate(Mean.Cq = cq_value, STD.Cq = 0) %>%
  # 选择和复孔处理结果一致的列
  select(sample_name, Mean.Cq, STD.Cq)

# 4. 合并两类样本得到最终汇总表
final_summary <- bind_rows(Replicates_with_sample, single_well_samples)

适配修改说明

  • 如果你的孔位分隔符不是逗号,把separate_rows里的sep参数改成对应的分隔符,比如空格就写sep = " "
  • 如果Replicates有额外的唯一标识复孔组的列(比如复孔组ID),可以把summarise前的group_by参数替换成对应的ID列,匹配准确度更高
  • 如果非复孔样本的标准差你希望设为NA而非0,把STD.Cq = 0改成STD.Cq = NA_real_

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 20:18:03