绘制时间以小时为单位?

问题描述:

我有这样的数据集绘制时间以小时为单位?

Time Forums_Read 
1 00:01 1 
2 00:04 1 
3 00:05 3 
4 00:06 3 
5 00:07 3 
6 00:08 6 
7 00:10 2 
8 00:11 2 
9 00:12 1 

我想geom_line数据。但是,它需要是POSIXct类型的。 列时间的结构是:

Factor w/ 1254 levels "00:01","00:04",.. 

对此有任何解决方案?

谢谢!

+1

该类日期需要一个起点。您可以从中选择任意日期,如默认和图表。 'as.POSIXct(df $ Time,format =“%M:%S”)'。我认为那是几分钟和几秒钟。如果不是,请使用'“%H:%M”。 –

+0

哼!有趣!它解决了!非常感谢!请给出答案,以便我选择你的最佳答案!再次感谢。 –

+0

您是否将数据作为因子读取?也许你可以通过指定stringsAsFactors跳过分解步骤= FALSE – Zach

日期CLA ss POSIXct需要一个起点。我们可以使用任何数据,因为Time列中的值正在彼此进行比较。此函数调用会将日期转换为适当的格式。

df$Time <- as.POSIXct(df$Time, format="%M:%S") 

我用格式"%M:%S"来表示分钟和秒。如果您的数据中包含小时和分钟,请使用"%H:%M"。有关日期格式的更多信息,请参阅?strptime

+0

查看lubridate - 它对于管理时间基准非常有用 – Zach

随着@Pierre Lafortune的评论的线条,

Df$Time2 <- as.POSIXct(
    paste0(Sys.Date(), " 00:", as.character(Df$Time))) 
## 
library(ggplot2) 
## 
ggplot(
    data = Df, 
    aes(x = Time2, y = Forums_Read)) + 
    geom_line() 

enter image description here


数据:

Df <- read.table(text = " Time Forums_Read 
    1 00:01 1 
    2 00:04 1 
    3 00:05 3 
    4 00:06 3 
    5 00:07 3 
    6 00:08 6 
    7 00:10 2 
    8 00:11 2 
    9 00:12 1", 
    header = TRUE, 
    stringsAsFactors = TRUE)