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

R语言提取数据框指定值计算均值标准差生成新数据框并绘图

R语言批量处理96孔板数据实现分组统计与绘图

场景与需求

  • 输入为两列结构的96孔板检测数据框:第一列为孔位坐标,取值格式为行字母+列数字(范围从A1到H12),第二列为对应孔的整数检测值
  • 需根据实验设计中「处理组-对应孔位」的归属关系,分组计算每组检测值的均值、标准差
  • 输出三列结构化结果:第一列为处理名称,第二列为组内均值,第三列为组内标准差,结果可直接用于绘制带误差棒的柱状图
  • 适配多孔板批量处理场景,替代Excel手动操作的繁琐流程

示例输入数据

data <- data.frame(Cell = c("A1", "A2", "A3", "A4", "A5", "A6", "A7", "A8", "A9", "A10", "A11", "A12"),
                   Value = c(4, 6, 2, 7, 4, 6, 1, 6, 2, 3, 4, 6))

实现代码

1. 配置分组映射规则

按照实际实验设计,提前定义每个处理组包含的孔位,同一实验设计下该配置可复用:

# 格式:处理名 = 对应孔位向量,可根据实际实验设计修改扩展
treatment_map <- list(
  "A" = c("A6", "A12"),
  "B" = c("A2", "A8"),
  "C" = c("A3", "A9"),
  "D" = c("A4", "A10"),
  "E" = c("A1", "A5"),
  "F" = c("A7", "A11")
)

2. 通用统计计算函数

加载dplyr包实现数据处理,函数可直接复用在多块板的批量计算场景:

library(dplyr)

calc_plate_stats <- function(raw_df, treat_map, cell_col = "Cell", value_col = "Value"){
  # 转换映射表为数据框格式
  map_table <- stack(treat_map) |> 
    rename(Treatment = ind, !!cell_col := values)
  
  # 匹配原始数据、分组计算统计量
  stats_result <- raw_df |> 
    inner_join(map_table, by = cell_col) |> 
    group_by(Treatment) |> 
    summarise(
      Mean = mean(.data[[value_col]], na.rm = TRUE),
      SD = sd(.data[[value_col]], na.rm = TRUE),
      .groups = "drop"
    )
  return(stats_result)
}

# 运行得到统计结果
result <- calc_plate_stats(data, treatment_map)

运行后输出的result结构和期望格式一致:

Treatment Mean       SD
1         A  6.0 0.000000
2         B  6.0 0.000000
3         C  2.0 0.000000
4         D  5.0 2.828427
5         E  4.0 0.000000
6         F  2.5 2.121320

注:需求中给出的期望结果数值为格式示例,实际计算值以输入数据和分组映射规则为准;如果实际分组和示例映射不同,修改treatment_map中的孔位对应关系即可得到匹配实验设计的统计结果。

3. 绘制带误差棒的柱状图

加载ggplot2包直接基于统计结果绘图:

library(ggplot2)

ggplot(result, aes(x = Treatment, y = Mean, fill = Treatment)) +
  geom_col(width = 0.7) +
  # 绘制均值±标准差的误差棒
  geom_errorbar(aes(ymin = Mean - SD, ymax = Mean + SD), 
                width = 0.2, linewidth = 0.8) +
  labs(x = "处理组", y = "检测值均值", title = "96孔板检测结果统计") +
  theme_bw() +
  theme(legend.position = "none")

批量处理提示

  • 处理多块孔板时,只需将所有板的原始数据批量读入R,循环调用calc_plate_stats函数即可一次性得到所有板的统计结果
  • 如果原始数据的孔位列、检测值列名和示例不一致,只需修改函数中cell_col、value_col的入参即可适配

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 07:24:14