如何在 R 中使用 strptime() 保持午夜(00:00h)?

adr*_*121 2 format datetime r date posixct

我有一个数据框 df,它具有以下格式的日期因子变量:

2015-12-15 10:00:00
2015-12-19 12:00:00
2015-12-20 20:00:00
Run Code Online (Sandbox Code Playgroud)

它是每小时数据。在查看午夜 00:00:00 时会出现问题,因为它没有出现小时。它只是说:

21/12/2015
Run Code Online (Sandbox Code Playgroud)

因此,如您所见,它只显示日期,但没有显示小时。所以我使用 strptime 转换为日期格式:

df$date <- strptime(df$date,"%d/%m/%Y %H:%M")
Run Code Online (Sandbox Code Playgroud)

除了午夜 00:00:00 的任何一天之外,所有时间和日期都可以正常工作,返回:

NA
Run Code Online (Sandbox Code Playgroud)

我非常感谢您的帮助,因为我一直在查看 StackOverflow 和其他论坛中以前的帖子,但我还没有设法找出这个特定问题的解决方案。

Bil*_*ard 7

来自 R 的strptime文档(强调已添加):

格式

一个字符串。如果任何元素具有不是午夜的时间分量,则格式方法的默认值为 "%Y-%m-%d %H:%M:%S",否则为 "%Y-%m-%d"。如果设置了 options("digits.secs"),则最多将打印指定位数的秒数。

所以信息仍然存在,您只需要将format它与时间组件一起打印出来。

> midnight <- strptime("2015-12-19 00:00:00","%Y-%m-%d %H:%M")
> midnight
[1] "2015-12-19 EST"
> format(midnight,"%Y/%m/%d %H:%M")
[1] "2015/12/19 00:00"
Run Code Online (Sandbox Code Playgroud)