我想在一张图上有三个值。到目前为止,如果我将时间戳转换为日期,我可以有3行
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 :(得分: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()