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

按分组计算时间列最小与最大值差值的R语言技术问题

解决分组计算饮水时间差的R代码问题

嘿,我来帮你搞定这个R代码的bug!你的需求是按年龄分组(1=青少年,2=成年人)计算饮水时间的最大最小值差,原代码跑不起来主要有几个小细节没处理好,我一步步给你修正:

原代码的问题点

  • 缺少依赖包加载:hm()函数是lubridate包的工具,你没提前加载这个包,R根本找不到这个函数;另外dplyr的管道操作也需要确保包已加载。
  • summarise语法错误:你没有明确指定要计算的是time列的极值差,而且没给计算结果的列命名,不符合summarise的语法要求。
  • 时间间隔转换问题:hm()生成的是Period类型对象,直接相减后是时间周期,需要转换成小时数才能得到你要的21、6这样的数值结果。

修正后的完整代码

# 加载必需的R包
library(lubridate)
library(dplyr)

# 构造原始数据
age <- c(1,1,2,1,2)
time <- hm("22:00","01:00","12:00","16:00","18:00")
drink <- data.frame(age, time)

# 分组计算时间差(转换为小时数)
diff_result <- drink %>% 
  group_by(age) %>% 
  summarise(
    time_diff_hours = as.duration(max(time) - min(time)) / dhours(1),
    .groups = "drop"  # 可选参数,取消分组状态,让结果回到普通数据框格式
  )

# 查看最终结果
diff_result

运行结果说明

执行这段代码后,你会得到完全符合预期的结果:

  • 青少年组(age=1)的时间差为21小时
  • 成年人组(age=2)的时间差为6小时

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 10:32:41