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

如何对同一样本的重复观测值计算均值(R语言DataFrame处理)

同一样本重复观测的均值计算方案

示例数据

先确认你的输入数据结构:

df <- data.frame(sample=c('s1a', 's1b', 's2a', 's2b', 's3a', 's3b'), Mg=1:6, P=7:12, K=3:8)

方法一:基础R原生实现

无需额外安装包,用原生函数即可完成:

# 提取样本核心ID(去掉末尾的a/b)
df$sample_core <- substr(df$sample, 1, nchar(df$sample) - 1)

# 按核心ID分组,计算各指标均值
df_new <- aggregate(. ~ sample_core, data = df[, -1], FUN = mean)

# 重命名列名匹配需求
colnames(df_new)[1] <- "sample"

方法二:tidyverse工具链实现

用dplyr做数据处理、stringr处理字符串,代码更简洁直观:

# 未安装包的话先执行安装
# install.packages(c("dplyr", "stringr"))

library(dplyr)
library(stringr)

df_new <- df %>%
  # 移除样本名末尾的a或b,生成核心样本ID
  mutate(sample = str_remove(sample, "[ab]$")) %>%
  # 按核心样本ID分组
  group_by(sample) %>%
  # 对Mg、P、K列批量计算均值,最后取消分组
  summarise(across(c(Mg, P, K), mean), .groups = "drop")

最终输出结果

两种方法都会得到符合要求的结果:

> df_new
  sample  Mg    P   K
1     s1 1.5  7.5 3.5
2     s2 3.5  9.5 5.5
3     s3 5.5 11.5 7.5

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 06:20:22