Нахождение даты точки данных во временном ряду R - PullRequest
3 голосов
/ 30 августа 2011

Я делаю временной ряд:

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

и затем нахожумаксимум с max(t).Есть ли какой-нибудь удобный способ узнать, в какую дату наступил этот максимум?

1 Ответ

3 голосов
/ 30 августа 2011

Попробуйте 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 года для точки данных с максимальным значением.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...