R中的时间序列标签

问题描述 投票:2回答:2

我在R中有一个数据框,其中:

Date        MeanVal

2002-01     37.70722
2002-02     43.50683
2002-03     45.31268
2002-04     14.96000
2002-05     29.95932
2002-09     52.95333
2002-10     12.15917
2002-12     53.55144
2003-03     41.15083
2003-04     21.26365
2003-05     33.14714
2003-07     66.55667
 .
 .
2011-12     40.00518

当我使用ggplot绘制时间序列时:

ggplot(mean_data, aes(Date, MeanVal, group =1)) + geom_line()+xlab("") 
+ ylab("Mean Value")

我正进入(状态:

enter image description here

但正如你所看到的,x轴刻度不是很整齐。我有什么方法可以按年规模(2002,2003,2004 ... 2011)吗?

r ggplot2
2个回答
2
投票

让我们用lubridateparse_date_time()将你的Date转换为日期类:

library(tidyverse)
library(lubridate)

mean_data %>% 
  mutate(Date = parse_date_time(as.character(Date), "Y-m")) %>%
  ggplot(aes(Date, MeanVal)) +
  geom_line()

同样,我们可以转换为xts并使用autoplot()

library(timetk)

mean_data %>% 
  mutate(Date = parse_date_time(as.character(Date), "Y-m")) %>%
  tk_xts(silent = T) %>% 
  autoplot() 

这也实现了上面的情节。


0
投票
library(dplyr)

mean_data %>%
  mutate(Date = as.integer(gsub('-.*', '', Date)) %>% 
  #use the mutate function in dplyr to remove the month and cast the 
  #remaining year value as an integer
  ggplot(aes(Date, MeanVal, group = 1)) + geom_line() + xlab("") 
    + ylab("Mean Value")
© www.soinside.com 2019 - 2024. All rights reserved.