我有一个数据帧,其时间格式如下:
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。所以我要有年,月,日,小时,分钟。
答案 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.POSIXct
和strptime
的输出是日期时间值。
答案 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"
注意:此帖子有多个重复项
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))