2017-06-02 42 views
-2

我想在一張圖上有三個值。到目前爲止,我可以有3行,如果我轉換時間戳至今R在一張圖中帶有時間戳的多條線

MyData$Timestamp <- as.Date(MyData$Timestamp) 

,但我還想對我的圖表小時。以下我的示例數據

  Timestamp Systolic.pressure Diastolic.pressure Pulse 
1 2017-06-01 23:35:31    125     80 70 
2 2017-06-02 23:35:43    130     90 89 
3 2017-06-02 23:35:43    135     93 96 
4 2017-06-03 23:35:56    140     90 98 

是否有任何方法來轉換Timestamp做日期和時間?

+0

'?as.POSIXct'可能會有所幫助 – thelatemail

回答

1

您可以使用lubridate將時間戳轉換爲日期/時間。您還需要將數據幀從寬長格式轉換而來,其中一列用於變量名稱,另一列用於其值。 tidyr::gather可以做到這一點。

我不會把所有變量放在一張圖上,因爲血壓測量的脈搏測量值有不同的單位。雙Y軸是一個可能的但不推薦的解決方案。

我還想知道,在你的例子中,是否可以同時存在不同的值?考慮到數據的性質,我認爲這不太可能。

所以這裏有一個可能的解決方案,使用方面。我從這個圖的示例數據中刪除了第3行。

library(dplyr) 
library(tidyr) 
library(ggplot2) 
library(lubridate) 

MyData %>% 
    mutate(ts = ymd_hms(Timestamp)) %>% 
    # next line just drops row 3 
    slice(c(1:2, 4)) %>% 
    gather(var, val, -Timestamp, -ts) %>% 
    # reorder the variables for facets 
    mutate(var = factor(var, levels = c("Systolic.pressure", "Diastolic.pressure", "Pulse"))) %>% 
    ggplot(aes(ts, val)) + 
    geom_line() + 
    facet_grid(var ~ ., scales = "free") + 
    labs(x = "timestamp", y = "value") + 
    theme_light() 

enter image description here