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
相关产品推荐
相关产品推荐

