R,将日期设置为通用的星期几和小时
R, Set dates as generic day and hour of week
美好的一天,我有一个数据集,其中包含过去一个月一周中每一天的每小时的值,我想将本周的值与前一周的值进行比较,并将它们放在阴谋。
我使用以下代码创建日期格式;
WeekDate <- seq(from=as.POSIXct("2018-09-19 0:00", tz="UTC"),
to=as.POSIXct("2018-09-25 23:00", tz="UTC"), by="hour")
和
PreviousWeekDate <- seq(from=as.POSIXct("2018-09-12 0:00", tz="UTC"),
to=as.POSIXct("2018-09-18 23:00", tz="UTC"), by="hour")
然后我将它与我的值合并(我们可以使用 y1 = (0:167) 和 y2 = (1:168) 作为虚拟值)。
我用 plotly 来获取图表
plot_ly() %>%
add_lines(x = WeekDate, y = y1, name = "2018-09-19 to 2018-09-25") %>%
add_lines(x = PreviousWeekDate, y = y2, name = "2018-09-12 to 2018-09-19")
我想做的是得到如下图这样的情节;Week plot
而不是我得到的那个;Non Overlapped Graph
我想在 X 轴上表示;星期一 HH:MM,因此我可以直接将一个值与另一个值进行比较,从而指示我们正在查看的时间。我希望它们重叠。类似于将日期转换为通用周,没有实际的 month/day.
我还没有找到任何东西,任何帮助将不胜感激。
谢谢
这可以通过隐藏工具提示中的 "time_norm" 数据来稍微清理一下,但我认为它基本上可以满足您的需求。
library(tidyverse); library(lubridate); library(plotly)
df <- data_frame(
time = seq(from=as.POSIXct("2018-09-12 0:00", tz="UTC"),
to=as.POSIXct("2018-09-25 23:00", tz="UTC"), by="hour")) %>%
rowid_to_column(var = "y") %>%
mutate(week = if_else(time > max(time) - ddays(7), "This week", "Last week"),
time_norm = if_else(time > max(time) - ddays(7), time, time + ddays(7)))
ggplotly(
{
ggplot(df, aes(time_norm, y, color = week, label = norm)) +
geom_line()
}
美好的一天,我有一个数据集,其中包含过去一个月一周中每一天的每小时的值,我想将本周的值与前一周的值进行比较,并将它们放在阴谋。 我使用以下代码创建日期格式;
WeekDate <- seq(from=as.POSIXct("2018-09-19 0:00", tz="UTC"),
to=as.POSIXct("2018-09-25 23:00", tz="UTC"), by="hour")
和
PreviousWeekDate <- seq(from=as.POSIXct("2018-09-12 0:00", tz="UTC"),
to=as.POSIXct("2018-09-18 23:00", tz="UTC"), by="hour")
然后我将它与我的值合并(我们可以使用 y1 = (0:167) 和 y2 = (1:168) 作为虚拟值)。
我用 plotly 来获取图表
plot_ly() %>%
add_lines(x = WeekDate, y = y1, name = "2018-09-19 to 2018-09-25") %>%
add_lines(x = PreviousWeekDate, y = y2, name = "2018-09-12 to 2018-09-19")
我想做的是得到如下图这样的情节;Week plot
而不是我得到的那个;Non Overlapped Graph
我想在 X 轴上表示;星期一 HH:MM,因此我可以直接将一个值与另一个值进行比较,从而指示我们正在查看的时间。我希望它们重叠。类似于将日期转换为通用周,没有实际的 month/day.
我还没有找到任何东西,任何帮助将不胜感激。 谢谢
这可以通过隐藏工具提示中的 "time_norm" 数据来稍微清理一下,但我认为它基本上可以满足您的需求。
library(tidyverse); library(lubridate); library(plotly)
df <- data_frame(
time = seq(from=as.POSIXct("2018-09-12 0:00", tz="UTC"),
to=as.POSIXct("2018-09-25 23:00", tz="UTC"), by="hour")) %>%
rowid_to_column(var = "y") %>%
mutate(week = if_else(time > max(time) - ddays(7), "This week", "Last week"),
time_norm = if_else(time > max(time) - ddays(7), time, time + ddays(7)))
ggplotly(
{
ggplot(df, aes(time_norm, y, color = week, label = norm)) +
geom_line()
}