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

R中如何更简便地将datetime对象转换为当日累计整数分钟

从datetime对象提取当日累计分钟整数的简化方案

示例数据结构

df <- structure(list(dttm = structure(c(-2209068000, -2209069200, -2209061520, 
-2209064100, -2209065240), tzone = "UTC", class = c("POSIXct", 
"POSIXt"))), row.names = c(NA, -5L), class = c("tbl_df", "tbl", 
"data.frame"))

原始数据预览:

# A tibble: 5 x 1
  dttm               
  <dttm>             
1 1899-12-31 02:00:00
2 1899-12-31 01:40:00
3 1899-12-31 03:48:00
4 1899-12-31 03:05:00
5 1899-12-31 02:46:00

我们可以用以下两种更简洁的方案实现需求,无需引入hms、chron等额外依赖:

方案1:依赖lubridate(可读性最高)

直接提取时间的小时和分钟字段计算即可,仅需一行逻辑:

library(dplyr)
library(lubridate)

df <- df %>% 
  mutate(dttm_min = hour(dttm) * 60 + minute(dttm))

方案2:纯Base R实现(零额外依赖)

不需要加载任何扩展包,用R原生时间处理逻辑即可实现:

# 方法A:通过POSIXlt属性提取时分计算
df$dttm_min <- as.POSIXlt(df$dttm)$hour * 60 + as.POSIXlt(df$dttm)$min

# 方法B:通过当日零点的时间差计算
df$dttm_min <- as.integer(difftime(df$dttm, as.Date(df$dttm), units = "mins"))

输出验证

以上所有方案的输出结果和原实现完全一致:

# A tibble: 5 × 2
  dttm                dttm_min
  <dttm>                 <int>
1 1899-12-31 02:00:00      120
2 1899-12-31 01:40:00      100
3 1899-12-31 03:48:00      228
4 1899-12-31 03:05:00      185
5 1899-12-31 02:46:00      166

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 09:36:03