我的原始数据是每周数据,如何在r中将其绘制为每周数据?

时间:2018-06-22 09:00:27

标签: r ggplot2 time-series

我的数据最初以周为单位(以下示例)。我发现很难执行时间序列数据,因为该数据始终位于dd-mm-yy中。

    WEEK    SALES
  1: 29.2010  60.48
  2: 30.2010  95.76
  3: 31.2010  51.66
  4: 32.2010  73.71
  5: 33.2010  22.05

谢谢!

1 个答案:

答案 0 :(得分:0)

我们可以使用lubridate包中的函数将星期数转换为日期,然后在x轴上绘制日期,并在y轴上绘制SALES

library(tidyverse)
library(lubridate)

dat2 <- dat %>%
  separate(WEEK, into = c("WEEK", "YEAR"),  convert = TRUE) %>%
  mutate(Date = ymd("2010-01-01") + weeks(WEEK - 1))

ggplot(dat2, aes(x = Date, y = SALES)) +
  geom_line()

数据

dat <- read.table(text = "   WEEK    SALES
  1 '29.2010'  60.48
                  2 '30.2010'  95.76
                  3 '31.2010'  51.66
                  4 '32.2010'  73.71
                  5 '33.2010'  22.05",
                  header = TRUE, stringsAsFactors = FALSE, 
                  colClasses = c("character", "character", "numeric"))

更新

如果数据来自不同年份,我们可以使用以下代码。

dat2 <- dat %>%
  separate(WEEK, into = c("WEEK", "YEAR"),  convert = TRUE) %>%
  mutate(Date = ymd(paste(YEAR, "01", "01", sep = "-")) + weeks(WEEK - 1))

数据

dat <- read.table(text = "   WEEK    SALES
  1 '29.2010'  60.48
                  2 '30.2010'  95.76
                  3 '31.2010'  51.66
                  4 '32.2010'  73.71
                  5 '33.2010'  22.05
                  6 '1.2011'   37.5
                  7 '2.2011'   45.2
                  8 '3.2011'   62.9",
                  header = TRUE, stringsAsFactors = FALSE, 
                  colClasses = c("character", "character", "numeric"))