You need to enable JavaScript to run this app. R语言分组计算不同土壤丙酮、乙醛累计排放的代码逻辑问题排查
优惠活动
大模型
产品
解决方案
定价
更多

R语言分组计算不同土壤丙酮、乙醛累计排放的代码逻辑问题排查

核心逻辑错误定位
  • 分组维度设计偏差:原代码将days作为分组键,每个分组内仅包含1条单时间点的独立观测,cumsum()在单值场景下的输出与原始即时排放值完全一致,完全丢失了“从培养起始时间逐点累加排放总量”的累计计算逻辑。
  • 累计计算顺序未校验:cumsum()按数据现有行序执行累加,但原数据集存在同一土壤的观测行时间顺序错位问题(如土壤13、土壤3的day4记录排在day10记录后方),即使调整分组维度,未提前排序的累加值也会完全偏离实际累计结果。
  • 汇总维度缺失:原代码在累计计算后未调整分组层级,无法输出所有土壤的跨样本平均排放水平、误差统计量,无法支撑带误差棒的趋势图绘制需求。
修正后的实现代码
library(tidyverse)
library(plotrix)

# 1. 计算单土壤、单化合物的逐时间点累计排放
cum_data <- df %>%
  # 以独立观测单元为分组:单种土壤 + 单种目标化合物
  group_by(soil, compound) %>%
  # 对每组内的观测行按天数升序排序,保证累加的时间逻辑正确
  arrange(days, .by_group = TRUE) %>%
  # 逐时间点计算累计排放值(day0累计=当日即时排放,day4累计=day0+day4排放,以此类推)
  mutate(cum_emission = cumsum(emission)) %>%
  ungroup()

# 2. 跨所有土壤计算汇总统计量,为绘图提供误差棒数据源
cum_summary <- cum_data %>%
  group_by(compound, days) %>%
  summarise(
    mean_cum = mean(cum_emission, na.rm = TRUE),
    sd_cum = sd(cum_emission, na.rm = TRUE),
    se_cum = std.error(cum_emission, na.rm = TRUE),
    .groups = "drop"
  )
带误差棒趋势图实现逻辑
  • 以观测天数days为横轴,累计平均排放值mean_cum为纵轴搭建坐标系。
  • 按化合物类别区分不同颜色的连续趋势线。
  • 对每个时间点的数据,使用对应计算得到的标准误/标准差作为误差棒长度,匹配带误差棒的时间趋势图展示效果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.29 18:06:06