【问题标题】:R: How to plot with plot.ts month by month (time series)R:如何用 plot.ts 逐月绘制(时间序列)
【发布时间】:2015-03-28 00:42:19
【问题描述】:

我有以下数据框:日期从 2013 年 1 月 1 日到 2014 年 12 月 31 日。

问题: 如何用 plot.ts 绘制逐月趋势?

这是我的数据框(仅前 6 行):

    date       Pedidos
1 2013-01-01       0
2 2013-01-02       0
3 2013-01-03       0
4 2013-01-04       0
5 2013-01-05       0
6 2013-01-06       0

第 1 步:尝试使用此代码创建一个 ts 对象

Pedidos_meses_1314 <- ts(df$Pedidos, frequency = 12, start = c(2013,1), end = c(2014,12))

但是得到这个:注意:我在 2014 年确实有“pedidos”。不知道为什么它显示“0”。

      Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec
2013   0   0   0   0   0   0   0   0   0   0   0   0
2014   0   0   0   0   0   0   0   0   0   0   0   0

而且,在绘图时,我得到了一条平线。见下图:

plot.ts(Pedidos_meses_1314)

第 2 步: 但是,在 ts() 函数中将频率更改为 365(一年中的每一天),我得到了我想要的。

考虑到日期列包含单日信息,我尝试将频率参数更改为 365。然后我可以用“plot.ts”绘制它。

 Pedidos_dias_1314 <-  ts(df$Pedidos, frequency = 365, start = c(2013,1), end =   c(2014,12))



plot.ts(Pedidos_dias_1314)  #i got graph for days from 2013 and 2014.

【问题讨论】:

    标签: r time-series


    【解决方案1】:

    您也可以使用xts 库:

    library(xts)
    
    # Create a fake time serie with growing and decaying phases
    set.seed(42)
    X.day <- rep(cos(seq(-1,1,length.out = 365)),2) + rnorm(365*2, mean = 0, sd = 0.1)
    
    # Create the sequence of dates
    Dates <- seq(as.Date("2013-01-01"), as.Date("2014-12-31"), "day")
    
    # Create the time serie
    X.day <- xts(X.day, order.by = Dates)
    
    plot(X.day)
    

    # aggregate the daily data to monthly data using the mean
    X.month <- apply.monthly(X.day, mean)
    
    plot(X.month, ylim = range(X.day))  # range(X.day) to keep the same y-axis range as the previous plos
    

    【讨论】:

      【解决方案2】:

      对于第 1 步,您只能归零,因为制作时间序列不会导致 R 将每个月的所有 Perdidos 值相加。 为此,您可以运行:

       newData<-aggregate(data$Pedidos,list(date=format(as.Date(data$date),"%Y-%m")),sum)
      

      然后,您将获得一个包含每个月 Perdidos 总和的数据框。然后,您可以制作每月的时间序列并绘制它以获得您想要的结果。

      Pedidos_meses_1314 <- ts(newData$x, frequency = 12, start = c(2013,1), end = c(2014,12))
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-03-17
        • 1970-01-01
        • 1970-01-01
        • 2021-03-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-10-22
        相关资源
        最近更新 更多