【问题标题】:strptime() in R converts timestamp class from Posixct to characterR 中的 strptime() 将时间戳类从 Posixct 转换为字符
【发布时间】:2018-03-23 00:43:58
【问题描述】:

当我使用strptime()去除日期和时间时,它会将我的时间从POSIXct 类转换为character

> head(data)
           timestamps value
1 2017-10-01 00:00:00 8.424
2 2017-10-01 01:00:00 7.832
3 2017-10-01 02:00:00 6.320
4 2017-10-01 03:00:00 6.696
5 2017-10-01 04:00:00 5.448
6 2017-10-01 05:00:00 4.992

> data$time <- format(data$timestamps,"%H:%M:%S")
> str(data)
'data.frame':   226 obs. of  3 variables:
 $ timestamps: POSIXct, format: "2017-10-01 00:00:00" "2017-10-01 01:00:00" "2017-10-01 02:00:00" ...
 $ value     : num  8.42 7.83 6.32 6.7 5.45 ...

$ time : chr "00:00:00" "01:00:00" "02:00:00" "03:00:00" ...

您可以看到它将时间转换为character。同班POSIXct如何剥离时间?

link here 给出了如何将其转换为整数并单独获取小时、分钟值。 我希望我的时间戳将其转换为 Posixct 而不是整数。另请阅读该链接中给出的行。如果您想对您的数据进行任何进一步的操作,我不建议您这样做。但是,如果您想绘制结果,这样做可能会很方便。

这也不起作用:as.integer(format(Sys.time(), "%H%M%S"))

【问题讨论】:

标签: r timestamp character posixct strptime


【解决方案1】:

唯一可能的解决方案是将字符时间转换为 POSIXlt 对象(将当前日期附加到它)

> strptime('10:12:00',format='%H:%M:%S')
[1] "2017-10-11 10:12:00 IST"
> class(strptime('10:12:00',format='%H:%M:%S'))
[1] "POSIXlt" "POSIXt" 
> 

或者,lubridate 单独提取小时、分钟、秒(作为整数)并使用它们!

【讨论】:

  • 谢谢。但我想有时间独处。我不希望 date 包含在其中。有没有办法将$ time : chr "00:00:00" "01:00:00" "02:00:00" "03:00:00" ... 转换为 Posixct 或 posixlt
  • 理想情况下,POSIX 对象将始终带有日期和时间。参考:stackoverflow.com/a/10700025/5086335
猜你喜欢
  • 1970-01-01
  • 2020-03-31
  • 1970-01-01
  • 1970-01-01
  • 2015-07-22
  • 1970-01-01
  • 1970-01-01
  • 2022-10-17
  • 1970-01-01
相关资源
最近更新 更多