R - 如何绘制未分类的周、月和季度?

R - how to plot weeks, months and quarters of years unsorted in plotly?

我正在尝试绘制具有周数的数据(如 01-2017、02-2017 等[还有月份,如 2017 年 1 月、2017 年 2 月等,以及季度,如 Q1-2017、Q2- 2017]) 在 x 轴上,在 y 轴上是一个整数变量。

问题是,plotly 正在对 x 轴进行排序,如下图所示。

在上图中,您可以看到属于 2018 年的几周在 2017 年之前。

在上图中,您可以看到按月份排序(2018 年 1 月、2 月之后的 11 月至 2017 年)。

我可以在 的帮助下对日期进行排序。 这是我从日期 (link to my data) 生成周数、月份和季度所做的工作:

data <- read.csv("dummy wait times data.csv", header = TRUE)
data$Date <- as.Date(data$Date, "%d-%m-%y")
data$weeks <- format(data$Date, "%U-%Y")
data$months <- format(data$Date, "%B-%Y")
data$quarters <- paste(quarters(data$Date), format(data$Date, "%Y"), sep = "-")

此外,经过大量过滤(选择月、周或季度后计算平均值)后,该图将出现在闪亮的应用程序中。所以,我的情节代码是:

plot_ly(data = filtered_data(),
        # since the column names returned by aggregation function change, let's plot using indexes.
        x = ~column_with_some_sort_of_date,
        y = ~integer_column,
        type = "bar",
        # using the reactive department input and splitting the data.
        split = ~categorical_column)

[[["column_with_some_sort_of_date" 可能是每周一次、每月一次或每季度一次,具体取决于闪亮应用中的 selectInput。 “categorical_column”在我的数据中是“Department”(在闪亮的应用程序中有一个复选框输入(checkboxGroupInput)。]]

所以,请帮我取消日期排序并绘制它们。我也准备学习任何其他交互式绘图库(ggplotly 没有用)。

考虑为因子生成时间单位,因为 format 创建字符向量,这就是 x 轴按字母顺序排序的原因。因素可以在情节中转化为分类字段。但是,在分配因子之前 Date 的一阶数据帧:

# READ DATA
data <- transform(read.csv("dummy wait times data.csv", header = TRUE),
                  Date = as.Date(Date, "%d-%m-%y"))

# ORDER DATA FRAME BY DATE
data <- data.frame(with(data, data[order(Date),]), 
                   row.names = NULL)

# ASSIGN ORDERED FACTORS
data <- within(data, {
    weeks <- format(Date, "%U-%Y")
    weeks <- factor(weeks, levels = unique(weeks))

    months <- format(Date, "%B-%Y")
    months <- factor(months, levels = unique(months))

    quarters <- paste(quarters(Date), format(Date, "%Y"), sep = "-")
    quarters <- factor(quarters, levels = unique(quarters))
})