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

R语言按因子特定水平分组计算基线校正均值的实现方法

问题描述

我认为这个需求本不该如此棘手,因此选择求助,感谢各位的帮助!

我现有如下结构的数据集:
示例数据截图

示例仅展示1名受试者的数据,完整数据集覆盖约20名受试者、4种实验条件。

计算需求

需要计算不同时间水平下相对于基线的平均变化值,计算规则如下:

  • 分组基准:对每名受试者的每种实验条件单独做计算
  • 基线值计算:取分组内pre、base1、base2三个时间点的nosetip值均值,作为该分组的基线值
  • 校正值计算:用分组下每个时间点的nosetip值减去对应基线值,得到基线校正后的变化值
  • 分阶段汇总校正值均值:
    • stim1至stim6时间点的校正值均值,为时间bin1的结果
    • stim7至stim12时间点的校正值均值,为时间bin2的结果
    • 恢复(recovery)阶段所有时间点的校正值均值,为恢复阶段结果
  • 最终输出:生成新的数据框,包含所有受试者、所有实验条件下对应的上述3个均值结果。

已尝试代码及问题

我目前尝试运行如下代码,但始终收到报错:

df_bin$base_mean <- mean(df_bin$time=="pre", df_bin$time=="base1", df_bin$time=="base2", na.rm=TRUE)

df_bin1 <- subset(df_adults, time=="stim1", time=="stim2", time=="stim3", time=="stim4", time=="stim5",time=="stim6")

补充:示例数据结构

根据建议使用dput函数导出的示例数据结构如下,可直接复制到R环境中复现示例数据:

structure(list(ID = structure(c(1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
1L, 1L), .Label = c("AUK102", "AUK103"), class = "factor"), cond_f = structure(c(2L, 
2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L), .Label = c("artificial", 
"babble", "cry", "laugh"), class = "factor"), phase = structure(c(3L, 
3L, 1L, 1L, 1L, 5L, 5L, 5L, 5L, 5L), .Label = c("baseline", "break", 
"pre", "recovery", "stimulus"), class = "factor"), time = structure(c(10L, 
9L, 8L, 1L, 2L, 17L, 21L, 22L, 23L, 24L), .Label = c("base1", 
"base2", "bre1", "bre2", "bre3", "bre4", "bre5", "pre", "pre_30", 
"pre_60", "rec1", "rec2", "rec3", "rec4", "rec5", "rec6", "stim1", 
"stim10", "stim11", "stim12", "stim2", "stim3", "stim4", "stim5", 
"stim6", "stim7", "stim8", "stim9"), class = "factor"), nosetip = c(34, 
34.1, 34.6, 34.3, 34.4, 34.4, 34.4, 34.3, 34.4, 34.1)), row.names = c(NA, 
-10L), class = c("tbl_df", "tbl", "data.frame"))

我个人认为dput的输出不太好理解,但希望能为解答问题提供帮助。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 17:43:13