2015-10-06 128 views
0

我有這樣的數據集繪製時間以小時爲單位?

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

回答

3

日期CLA ss POSIXct需要一個起點。我們可以使用任何數據,因爲Time列中的值正在彼此進行比較。此函數調用會將日期轉換爲適當的格式。

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

我用格式"%M:%S"來表示分鐘和秒。如果您的數據中包含小時和分鐘,請使用"%H:%M"。有關日期格式的更多信息,請參閱?strptime

+0

查看lubridate - 它對於管理時間基準非常有用 – Zach

2

隨着@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) 
相關問題