首页 > 解决方案 > 如何用R提取一天中的分钟?

问题描述

我有一列以df1“%Y-%m-%d %H:%M:%S”格式总结了几个月的日期时间。我想为每个日期时间提取一天中的分钟。也就是说,对于时间“00:43:43”,一天中的分钟将是“43”,对于日期时间“02:24:58”,一天中的分钟将对应于“144”。一天中的分钟必须在 1 到 1440 之间。

我添加代码来复制示例:

df<-data.frame(Datetime=c("2019-07-03 00:43:43",  "2019-07-03 02:24:58"))
df$Datetime<- as.POSIXct(df$Datetime, formtat="%Y-%m-%d %H:%M:%S",tz="UTC")

df
             Datetime
1 2019-07-03 00:43:43
2 2019-07-03 02:24:58

有谁知道该怎么做?

提前致谢

标签: rlubridate

解决方案


一个选项是

library(lubridate)
round(period_to_seconds(hms(v1))/60)

round如果我们不想

sub("\\..*", "", period_to_seconds(hms(v1))/60)
#[1] "43"  "144"

更新

在 OP 的初始帖子中,显示的格式是%H:%M:%S,所以我们使用了hms. 用显示的例子,这将是ymd_hms

v2 <- sub(".*\\s", "", df$Datetime)
sub("\\..*", "", period_to_seconds(hms(v2))/60)
#[1] "43"  "144"

数据

v1 <- c("00:43:43",  "02:24:58")

推荐阅读