我有一栏中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
有人知道怎么做吗?
提前致谢
一个选项是
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")
谢谢@akrun。我应用了您的代码,但是没有用。我猜这是由于格式所致,因为我的数据为Posixct,具体为“%Y-%m-%d%H:%M%S”。当我奔跑时,
df$Minute<-round(period_to_seconds(hms(df$Datetime))/60)
它给你回来NA
。@Dekike这是格式。在帖子中,您提到了HMS格式。在这里,您需要
ymd_hms
代替hms
@Dekike请检查我更新的帖子