如何从R中的日期和时间变量中分割时间?

如何从R中的日期和时间变量中分割时间?,r,R,我需要按照以下格式拆分变量date和time to date和time。我尝试使用带有空格的gsub删除T,然后得到如下输出,但不是按照我的要求?有没有办法按要求的格式获得时间 已获得输出: Time 13H 00M 0S 所需输出: Date and time Date Time 2018-09-21T13:00 2018-09-21 13:00:00 2019-12-24T09:07 2019-12-24 09:07:00

我需要按照以下格式拆分变量date和time to date和time。我尝试使用带有空格的gsub删除T,然后得到如下输出,但不是按照我的要求?有没有办法按要求的格式获得时间

已获得输出:

Time 
13H 00M 0S
所需输出:

Date and time          Date         Time
2018-09-21T13:00    2018-09-21      13:00:00
2019-12-24T09:07    2019-12-24      09:07:00
2020-01-24T12:28    2020-01-24      12:28:00

如果您的数据如下所示:

df <- structure(list(Date_and_time = c("2018-09-21T13:00", "2019-12-24T09:07", 
"2020-01-24T12:28")), row.names = c(NA, -3L), class = "data.frame")
df
#     Date_and_time
#1 2018-09-21T13:00
#2 2019-12-24T09:07
#3 2020-01-24T12:28

这也可以使用base R完成:

df$Date_and_time <- as.POSIXct(df$Date_and_time, format = "%Y-%m-%dT%H:%M")

transform(df, Date = as.Date(Date_and_time), 
              Time = format(Date_and_time, "%H:%M:%S"))

df$Date_和_time我使用lubridate包获得了所需的输出

图书馆(lubridate) hms::hms(时间)


它将13小时00分转换为13:00:00

否。它不能解决我的问题否,它对我不起作用…我将日期和时间变量与时间分开,但我没有得到确切的格式。我知道我可以将13H 00M 0S(HMS)替换为:使用gsub获得所需的输出(13:00:00),但是我想要一个能自动填充上面显示的所需输出的东西在
Date and time
列中有什么格式,是
2018-09-21T13:00
还是
13H 00M 0S
?在Dateandtime列中我有2018-09-21T13:00,但我把它分成了日期和时间。我的输出是2018-09-21(日期),时间列为13小时0分。我的问题是如何将时间(13H 0M 0S)转换为13:00:00(此格式)。是否有任何特定的方法可以自动从13H 0M 0S转换为所需的格式(13:00:00)?请使用
dput
添加数据的前几行,以避免注释中出现混淆和澄清。使用
dput(头部(df))
df$Date_and_time <- as.POSIXct(df$Date_and_time, format = "%Y-%m-%dT%H:%M")

transform(df, Date = as.Date(Date_and_time), 
              Time = format(Date_and_time, "%H:%M:%S"))