在R中将YYYY-MM-DD转换为YYYY-YY Qx

时间:2018-07-20 00:32:52

标签: r date ggplot2

我试图按季度绘制数据,然后在ggplot中显示。 dataset中的日期的格式为YYYY-MM-DD,我希望ggplot x轴显示类似YYYY-YY Qx的财政年度。财政年度从7月1日开始。

数据为长格式。这是我必须去的地方:

      Data set named: TOX

TREE_ID    PM_Date                        variable value
1: 2013000584 2013-04-02               elm           0
2: 2013000498 2013-06-11               elm           1
3: 2013000123 2013-09-03               maple         0
4: 2013000642 2014-02-15               maple         0
5: 2013000778 2016-07-08               maple         1

PM_Dateq <- as.yearqtr(TOX$PM_Date, format)

Tox_longer_yr <- TOX [,list(value=sum(value)), by=list(PM_Dateq, variable)]

ggplot(Tox_longer_yr, aes(x = PM_Dateq, y = value, colour = variable)) 
+ geom_line()      

X轴当前显示为:

2015, 2016, 2017...etc 

(尽管它已正确地在ggplot中分组为四分之一。)

我希望x轴看起来像这样:

2015-16 Q3, 2015-16 Q4, 2016-17 Q1, 2016-17 Q2...etc

因此,将2016年2月13日发生的事件归为“ 2015-16第3季度”。

1 个答案:

答案 0 :(得分:0)

这样的事情怎么样。

library(lubridate)
df %>%
    mutate(
        PM_Date = as.Date(PM_Date),
        Qtr = sprintf("%s-%s Q%i",
            year(PM_Date),
            year(PM_Date %m+% years(1)),
            cut(
                month(tmp$PM_Date),
                breaks = c(0, 3, 6, 9, 12),
                labels = c("Q3", "Q4", "Q1", "Q2")))) %>%
    group_by(Qtr, variable) %>%
    summarise(value = sum(value)) %>%
    ggplot(aes(x = Qtr, y = value, colour = variable, group = variable)) +
    geom_line()

enter image description here

说明:通过从Qtr中提取年份,并使用{{1}从7月1日开始将月份分成3个月的仓,我们以YYYY-YYYY QX的形式构造一个新的PM_Date变量。 }}。我们使用cut来轻松提取年份和“日期算术”(对于第二个lubridate,我们将当前年份加一年)。


样本数据

YYYY