在R中如何将连续时间行的差值转换为分钟单位
解决chron时间差值转分钟单位的问题
chron包的times类型计算差值时,默认单位是天(1天=1单位),所以1分钟对应的数值是1/(24*60) ≈ 0.0006944444。要将差值转换为分钟单位,只需将计算结果乘以1440(24小时×60分钟)即可。
修改后的完整代码
Date <- c("03/06/2019", "03/06/2019", "03/06/2019", "03/06/2019") Time <- c("17:15:00","17:16:00", "17:18:00", "17:21:00") df1 <- data.frame(Date, Time) library(chron) library(dplyr) df1$Time <- chron(times = df1$Time) # 将时间差值转换为分钟单位 df1 <- df1 %>% mutate(diff = (Time - lag(Time)) * 1440) # 查看结果 print(df1)
输出结果
Date Time diff 1 03/06/2019 17:15:00 NA 2 03/06/2019 17:16:00 1 3 03/06/2019 17:18:00 2 4 03/06/2019 17:21:00 3
补充说明
如果你更倾向于用语法更直观的lubridate包处理时间,可参考以下替代方案:
library(lubridate) library(dplyr) df1 <- df1 %>% mutate(datetime = dmy_hms(paste(Date, Time)), diff_min = as.duration(datetime - lag(datetime))/dminutes(1))
该方案通过dmy_hms合并日期时间,再用as.duration和dminutes直接计算分钟差值,结果与之前一致。
内容的提问来源于stack exchange,提问作者Niro Mal
相关产品推荐
相关产品推荐

