【问题标题】:How to convert format of time R?如何转换时间R的格式?
【发布时间】:2019-09-22 05:45:45
【问题描述】:

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

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。所以我想要年、月、日、小时、分钟。

【问题讨论】:

  • 您在strptime 中提供的格式应遵循您的日期格式。您的日期用. 分隔,而不是-。基本上是一个错字
  • @camille 你认为这不是骗子
  • @akrun 输入 - 而不是 . 是一个错字。除此之外,是的,还有很多关于格式化日期的帖子。如果你有一个好的受骗候选人,你可以举报它。

标签: r datetime


【解决方案1】:

阅读?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"

同样适用于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 的输出是日期时间值。

【讨论】:

  • 谢谢!我明白了,我犯了一个小错误!非常感谢!
  • @Ronak。通过强调 format.POSIXt 的结果是字符值而不是日期时间值,您的答案将得到改进,尽管它们在控制台级别看起来相同。
  • @42- 谢谢。我已经相应地更新了答案。
【解决方案2】:

我们可以使用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))

【讨论】:

    猜你喜欢
    • 2020-12-27
    • 1970-01-01
    • 2021-02-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多