您可以依赖基础 R:
# Using R 2.14.2
# The same toy data
foo <- data.frame(start.time = c("2012-02-06 15:47:00",
"2012-02-06 15:02:00",
"2012-02-22 10:08:00"),
duration = c(1,2,3))
由于类 POSIXct 以结构化方式包含日期时间信息,因此您可以依靠substr
提取 POSIXct 向量中时间位置的字符。也就是说,如果您知道 POSIXct 的格式(打印时的显示方式),您可以提取小时和分钟:
# Extract hour and minute as a character vector, of the form "%H:%M"
substr(foo$start.time, 12, 16)
然后将其粘贴到任意日期以将其转换回 POSIXct。在示例中,我使用 2012 年 1 月第一次,但如果您不指定日期而是使用format
R 使用当前日期。
# Store time information as POSIXct, using an arbitrary date
foo$time <- as.POSIXct(paste("2012-01-01", substr(foo$start.time, 12, 16)))
并且两者都plot
知道ggplot2
如何在开箱即用的 POSIXct 中格式化时间。
# Plot it using base graphics
plot(duration~time, data=foo)
# Plot it using ggplot2 (0.9.2.1)
library(ggplot2)
qplot(x=time, y=duration, data=foo)