You need to enable JavaScript to run this app. R语言按分组计算幼犬首末次称重的体重均值差异实现方法
优惠活动
大模型
产品
解决方案
定价
更多

R语言按分组计算幼犬首末次称重的体重均值差异实现方法

代码实现思路

你当前编写的代码和目标逻辑的偏差点:group_by(puppy) %>% summarise(weight = mean(Weight))计算的是每只幼犬所有测量记录的体重均值,和你需要的「每只犬首次、末次测量值的整体跨组平均」计算目标不匹配,只需要在分组逻辑里提取对应首末值,再做跨组统计即可得到目标结果。

完整可运行代码

我们基于你熟悉的dplyr管道语法实现,全程对齐你的手动计算逻辑:

# 加载dplyr包
library(dplyr)

# 第一步:按幼犬分组,提取每只犬时间维度上的首次、末次称重值
puppy_measure_points <- data %>%
  # 组内按测量年份升序排列,避免原始数据排序混乱导致取错首末值
  group_by(puppy) %>%
  arrange(Measurement_Year, .by_group = TRUE) %>%
  summarise(
    first_weigh_weight = first(Weight), # 排序后的第一条记录=首次称重体重
    last_weigh_weight = last(Weight)     # 排序后的最后一条记录=末次称重体重
  )

# 第二步:跨组计算整体的首测平均、末测平均、体重变化值
weight_trend_result <- puppy_measure_points %>%
  summarise(
    overall_avg_first = mean(first_weigh_weight),
    overall_avg_last = mean(last_weigh_weight),
    overall_change = overall_avg_last - overall_avg_first
  )
计算结果校验

代码运行得到的数值和你手动计算的结果完全对齐:

  • 单犬提取的首/末称重值:Bella(1.0kg, 7.0kg)、Charlie(2.0kg, 2.5kg)、Cooper(12.0kg, 12.0kg)
  • 整体首次称重平均体重:(1.0 + 2.0 + 12.0)/3 = 5.0kg
  • 整体末次称重平均体重:(7.0 + 2.5 + 12.0)/3 ≈7.17kg
  • 整体平均体重变化:≈2.17kg,和你手动算出的“较首次提升约2.2kg、整体呈上升趋势”的结论完全一致。

补充说明:这里特意在分组内加了arrange(Measurement_Year)步骤,是为了避免原始数据集的测量记录顺序和年份顺序不一致时,直接取first()/last()会拿到非时间维度的首末值,保证计算结果严格对应“首次称重、末次称重”的时间定义。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.11.09 13:24:03