如何从POSIXct创建时间

时间:2015-03-17 16:50:50

标签: r

我有一些POSIXct格式的日期

head(data$Dates,3)  

[1] "2015-01-02 16:34:01 GMT" "2015-01-28 16:33:03 GMT" "2015-01-16 20:55:35 GMT"

我想创建一个列为每个元素的DATE,时间为21:00:00 GMT,然后从原始日期中减去这个新日期。

所以从那个日期向量我想创建一个看起来像

的POSIXct向量
  "2015-01-02 21:00:00 GMT" "2015-01-28 21:00:00 GMT" "2015-01-16 21:00:00 GMT"

然后我想从第一个中减去这个新的矢量。

如何创建如下的矢量:

 "2015-01-02 21:00:00 GMT" "2015-01-28 21:00:00 GMT" "2015-01-16 21:00:00 GMT"

谢谢。

2 个答案:

答案 0 :(得分:0)

我建议使用lubridate包。它将使您能够相互减去日期。您是否希望将时间设置为每个相同的时间作为日期减法的中间步骤?使用以下内容切片时间戳的第一部分来获取日期:

clean_date <- function(date){
date = substr(date, 1, 10)
return(date)
}

df$Date <- clean_date(df$Date)

然后使用

将其转换为lubridate日期对象
df$Date <- ymd(date)

应该允许您轻松找到两个日期之间的差异,并将创建一个difftime对象,该对象将为您提供所选单位中两个日期之间的差异。

答案 1 :(得分:0)

目前还不完全清楚这是否是你要追求的结果类型,但这应该可以让你开始。

dates <- as.POSIXct(c("2015-01-02 16:34:01 GMT", 
                      "2015-01-28 16:33:03 GMT", 
                      "2015-01-16 20:55:35 GMT"))
library(lubridate)

orig_dates  <- ymd_hms(dates)
trunc_dates <- floor_date(orig_dates, "day")
trunc_dates_21st_hour <- trunc_dates + ehours(21)

orig_dates - trunc_dates_21st_hour
# Time differences in mins
# [1] -265.983333 -266.950000   -4.416667