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

R语言批量计算药物与空白组蛋白表达差值均值的实现方法

R语言实现方案

方案1:tidyverse实现(推荐,适配大批量数据场景)

# 加载依赖包
library(tidyverse)

# 1. 提取空白对照组数值
none_df <- df %>% 
  filter(treatment == "none") %>% 
  select(subjectID, protein, none_value = value)

# 2. 批量计算差值并汇总得到目标格式
resdf <- df %>% 
  filter(treatment != "none") %>% 
  left_join(none_df, by = c("subjectID", "protein")) %>% 
  mutate(diff = value - none_value) %>% 
  group_by(protein, treatment) %>% 
  summarise(mean_diff = mean(diff), .groups = "drop") %>% 
  pivot_wider(names_from = treatment, values_from = mean_diff, names_glue = "{treatment}_mean_diff")

运行后输出的resdf完全匹配你需要的结果格式,不需要修改逻辑即可直接适配5名受试者、9种药物、100种蛋白的原始数据集。

方案2:base R实现(无需安装额外依赖包)

# 构建空白值索引向量
none_vals <- with(df[df$treatment == "none", ], setNames(value, paste(subjectID, protein, sep = "_")))

# 计算所有药物组的差值
drug_df <- df[df$treatment != "none", ]
drug_df$diff <- drug_df$value - none_vals[paste(drug_df$subjectID, drug_df$protein, sep = "_")]

# 分组求均值并转为宽格式
mean_df <- aggregate(diff ~ protein + treatment, data = drug_df, FUN = mean)
resdf <- reshape(mean_df, idvar = "protein", timevar = "treatment", direction = "wide", sep = "_mean_diff")
colnames(resdf) <- gsub("diff_", "", colnames(resdf))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 03:54:05