我正在尝试使用lubridate解析12小时。如果我跑
library(lubridate)
times <- c("1:30 AM", "6:29 AM", "6:59 AM", "9:54 AM", "2:45 PM")
hm(times)
我得到了
[1] "1H 30M 0S" "6H 29M 0S" "6H 59M 0S" "9H 54M 0S" "2H 45M 0S"
请注意,不使用AM / PM指定。但是,如果时间字符串还包含日期,则解析工作
ymd_hm(paste("01-01-01", times))
[1] "2001-01-01 01:30:00 UTC" "2001-01-01 06:29:00 UTC"
[3] "2001-01-01 06:59:00 UTC" "2001-01-01 09:54:00 UTC"
[5] "2001-01-01 14:45:00 UTC"
在我看来,时间解析功能:hm
,hms
,...无法识别AM / PM,但日期函数可以识别。是否可以在不通过日期的情况下进行12小时解析?
[我知道我可以通过解析字符串来做到这一点,但我想知道它可能在lubidate
]
答案 0 :(得分:3)
这两个对象属于不同的类,每个类都是为特定目的而设计的。
使用第一个函数创建一个period
类对象。这种类如果设计用于表示时间,比如比赛时间,或者&#34; Bolt运行100米的小时数?&#34; 0小时0分9秒58,等等。
请参阅:
a <- hm(times)
class(a)
[1] "Period"
attr(,"package")
[1] "lubridate"
具有函数ymd_hm
的第二个对象创建了一个类对象:
b <- ymd_hm(paste("01-01-01", times))
class(b)
[1] "POSIXct" "POSIXt"
这类对象旨在表示&#34; time&#34;,在公历(或者其他类型的日历)中。它还解析了AM / PM,这对于在12小时内区分一天的小时数至关重要。