我搜索并搜索了几个小时,但找不到答案 . 我需要转换时间格式为“1:36:22 PM” . 我自己不会以这种格式存储数据,但我从其他程序员那里继承了这些文件 .
我尝试了as.POSIXct()和strptime()的各种排列,但是无法实现 . 例如,这未能发现PM的重要性:
t <- "1:36:22 PM"
> as.POSIXct(t, format = "%H:%M:%S")
[1] "2016-09-08 01:36:22 BST"
这失败了:
> strptime(t, "%H:%M:%S")
[1] NA
奇怪的是,由于我无法理解的原因,从输入CAN工作中减少秒数:
> t <- "1:30:00 PM"
> strptime(t, "%I:%M %p")
[1] NA
> t <- "1:30 PM"
> strptime(t, "%I:%M %p")
[1] "2016-09-08 13:30:00 BST"
我只想要这个工作:
t <- "1:30:00 PM"
SOME COMMAND HERE HERE
[1] "13:30:00"
有任何想法吗?
2 回答
使用%l和%p .
你尝试过使用rubridate包吗?它可以使用"parse_date_time"函数中的 %p indicator 来处理AM / PM .
从lubridate documentation:
%I: 十进制小时数(01-12或1-12) .
%M: 十进制数分钟(00-59或0-59) .
%S: 第二个十进制数字(00-61或0-61) .
%P: 语言环境中的AM / PM指示符 . 与I一起使用而不与H一起使用 . 某些语言环境中的空字符串 .