如何转换时间R的格式?

时间:2019-05-03 16:29:50

标签: r datetime

我有一个数据帧,其时间格式如下:

Time
01.01.2017 01:00
01.01.2017 02:00
01.01.2017 03:00
01.01.2017 04:00 
01.01.2017 05:00 
01.01.2017 06:00

class(df$Time) 
[1] "factor"

它的日,月,年,小时,分钟。我想将其转换为可读时间。我已经尝试过了:

strptime(df$Time, format="%d-%m-%Y  %H:%M")
as.POSIXct(df$Time)

它不起作用。如何将其转换并将格式更改为:2017-01-01 01:00。所以我要有年,月,日,小时,分钟。

2 个答案:

答案 0 :(得分:5)

阅读?strptime,您需要format

strptime("01.01.2017 01:00", format="%d.%m.%Y  %H:%M")
#[1] "2017-01-01 01:00:00"

如果您需要采用特定格式的输出,我们可以使用format

format(strptime("01.01.2017 01:00", format="%d.%m.%Y  %H:%M"), "%Y-%m-%d  %H:%M")
#[1] "2017-01-01  01:00"

Same可以与as.POSIXct

一起使用
as.POSIXct("01.01.2017 01:00", format="%d.%m.%Y  %H:%M")

或者直接使用lubridate::dmy_hm

忽略指定格式
lubridate::dmy_hm("01.01.2017 01:00")

@ 42-提到的一件事要注意的是,尽管它们看起来相同,但format的输出是字符值,而as.POSIXctstrptime的输出是日期时间值。

答案 1 :(得分:1)

我们可以只使用anytime

librrary(anytime)
anytime(df$Time)
#[1] "2017-01-01 01:00:00 EST" "2017-01-01 02:00:00 EST" "2017-01-01 03:00:00 EST" "2017-01-01 04:00:00 EST"
#[5] "2017-01-01 05:00:00 EST" "2017-01-01 06:00:00 EST"

注意:此帖子有多个重复项

thisthisthis的可能的骗子

数据

df <- structure(list(Time = c("01.01.2017 01:00", "01.01.2017 02:00", 
 "01.01.2017 03:00", "01.01.2017 04:00", "01.01.2017 05:00", 
 "01.01.2017 06:00"
 )), class = "data.frame", row.names = c(NA, -6L))