在R时间序列中查找数据点的日期

时间:2011-08-30 13:46:55

标签: r time-series

我制作了一个时间序列:

  

t = ts(rnorm(12 * 50),start = 1900,freq = 12)

然后找到max(t)的最大值。有没有方便的方法来确定这个最大值出现的日期?

1 个答案:

答案 0 :(得分:3)

尝试which.max()适用于多种对象类型,包括ts,例如:

R> set.seed(42); tser <- ts(rnorm(12*2), start=2010, freq=12)
R> which.max(tser)
[1] 12                              ## so index 12 is suggsted
R> tser[12]                         ## what is its value?       
[1] 2.28665                         ## 2.28665 -- indeed the max.
R> tser                             
            Jan        Feb        Mar        Apr        May
2010  1.3709584 -0.5646982  0.3631284  0.6328626  0.4042683
2011 -1.3888607 -0.2787888 -0.1333213  0.6359504 -0.2842529
            Jun        Jul        Aug        Sep        Oct
2010 -0.1061245  1.5115220 -0.0946590  2.0184237 -0.0627141
2011 -2.6564554 -2.4404669  1.3201133 -0.3066386 -1.7813084
            Nov        Dec
2010  1.3048697  2.2866454
2011 -0.1719174  1.2146747
R> 

如果您从ts转换为zoo,您甚至会显示元数据:

R> zser <- as.zoo(tser)
R> which.max(zser)
[1] 12
R> zser[12]
2010(12) 
 2.28665 
R> 

显示具有最大值的数据点的2010年12月标签。