【问题标题】:Create a monthly dummy time series data in yyyy-mm format in R在 R 中以 yyyy-mm 格式创建每月虚拟时间序列数据
【发布时间】:2018-10-13 14:09:42
【问题描述】:

我想在 R 中创建一个从 2000-01 到 2018-01 的虚拟时间序列数据。最终输出应该是 217 个观测值的向量。请求您的专业知识。 日期 2000-01 2000-02 2000-03 ...... 2017-12 2018-01

【问题讨论】:

    标签: r date time-series


    【解决方案1】:

    使用ts 并将值指定为第一个参数。 Start 可以是 c(2000, 1) 或只是 2000,因为 1 月,即第 1 个月,是默认值。频率为 12 给出了每月的系列。没有使用任何包。

    tt0 <- ts(0, start = 2000, end = 2018, freq = 12)
    

    给予:

    > tt0
         Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec
    2000   0   0   0   0   0   0   0   0   0   0   0   0
    2001   0   0   0   0   0   0   0   0   0   0   0   0
    2002   0   0   0   0   0   0   0   0   0   0   0   0
    2003   0   0   0   0   0   0   0   0   0   0   0   0
    2004   0   0   0   0   0   0   0   0   0   0   0   0
    2005   0   0   0   0   0   0   0   0   0   0   0   0
    2006   0   0   0   0   0   0   0   0   0   0   0   0
    2007   0   0   0   0   0   0   0   0   0   0   0   0
    2008   0   0   0   0   0   0   0   0   0   0   0   0
    2009   0   0   0   0   0   0   0   0   0   0   0   0
    2010   0   0   0   0   0   0   0   0   0   0   0   0
    2011   0   0   0   0   0   0   0   0   0   0   0   0
    2012   0   0   0   0   0   0   0   0   0   0   0   0
    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
    2015   0   0   0   0   0   0   0   0   0   0   0   0
    2016   0   0   0   0   0   0   0   0   0   0   0   0
    2017   0   0   0   0   0   0   0   0   0   0   0   0
    2018   0           
    

    或用于连续系列

    ts(1:217, start = 2000, freq = 12)
    

    给予:

         Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec
    2000   1   2   3   4   5   6   7   8   9  10  11  12
    2001  13  14  15  16  17  18  19  20  21  22  23  24
    2002  25  26  27  28  29  30  31  32  33  34  35  36
    2003  37  38  39  40  41  42  43  44  45  46  47  48
    2004  49  50  51  52  53  54  55  56  57  58  59  60
    2005  61  62  63  64  65  66  67  68  69  70  71  72
    2006  73  74  75  76  77  78  79  80  81  82  83  84
    2007  85  86  87  88  89  90  91  92  93  94  95  96
    2008  97  98  99 100 101 102 103 104 105 106 107 108
    2009 109 110 111 112 113 114 115 116 117 118 119 120
    2010 121 122 123 124 125 126 127 128 129 130 131 132
    2011 133 134 135 136 137 138 139 140 141 142 143 144
    2012 145 146 147 148 149 150 151 152 153 154 155 156
    2013 157 158 159 160 161 162 163 164 165 166 167 168
    2014 169 170 171 172 173 174 175 176 177 178 179 180
    2015 181 182 183 184 185 186 187 188 189 190 191 192
    2016 193 194 195 196 197 198 199 200 201 202 203 204
    2017 205 206 207 208 209 210 211 212 213 214 215 216
    2018 217              
    

    如果您的想法是您想要一个连续序列并且知道开始和结束但不想计算它们之间有多少个月,那么首先如上所述计算tt0,然后使用:

    tt0 + seq_along(tt0)
    

    或者对于一系列随机数:

    set.seed(123)
    tt0 + rnorm(length(tt0))
    

    【讨论】:

      【解决方案2】:

      您可以使用seq 扩大时间序列,然后使用as.character 将其转换为yyyy-mm 格式:

      my_ts <- as.character(seq(from = as.Date("2000-01-01"), to = as.Date("2018-01-01"), by = "month"), "%Y-%m")
      
      head(my_ts)
      [1] "2000-01" "2000-02" "2000-03" "2000-04" "2000-05" "2000-06"
      

      【讨论】:

        【解决方案3】:

        您可以使用lubridate 包轻松做到这一点:

        dates <- seq(ymd('2000-01-01'), ymd('2018-01-01'), by='months')
        

        【讨论】:

          猜你喜欢
          • 2019-05-23
          • 1970-01-01
          • 2019-09-20
          • 1970-01-01
          • 2014-08-22
          • 2019-01-19
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多