2017-07-06 5 views
1

X30オブジェクトの前のX期間の最高値を計算する関数を探しています。この関数は、そのような値を持つベクトルを返します。Xの行の最高値を取得

これを計算する方法は複数あると思います。驚いたことに、私はこれを以前のSOの質問でカバーすることができませんでした。私はこのために既に定義された関数を持つパッケージがあることを望んでいます。何もない場合、誰かがそれに取り組む方法を知っているかもしれません。

以下の例は、最後の3つのピリオドのうち最も高い値を持つベクトルがXTSオブジェクトXTS1のように見える方法を示しています。

library('xts') 
XTS1 <- structure(c(12, 7, 7, 22, 24, 30, 26, 23, 27, 30), .indexCLASS = c("POSIXct", "POSIXt"), .indexTZ = "", tclass = c("POSIXct", "POSIXt"), tzone = "", class = c("xts", "zoo"), .CLASS = structure("double", class = "CLASS"), formattable = structure(list(formatter = "formatC", format = structure(list(format = "f", digits = 2), .Names = c("format", "digits")), preproc = "percent_preproc", postproc = "percent_postproc"), .Names = c("formatter", "format", "preproc", "postproc")), index = structure(c(1413981900, 1413982800, 1413983700, 1413984600, 1413985500, 1413986400, 1413987300, 1413988200, 1413989100, 1413990000), tzone = "", tclass = c("POSIXct", "POSIXt")), .Dim = c(10L, 1L)) 

#DESIRED OUTPUT  
        [,1] GetHighest(3) 
2014-10-22 08:45:00 12    NA 
2014-10-22 09:00:00 7    12 
2014-10-22 09:15:00 7    12 
2014-10-22 09:30:00 22    12 
2014-10-22 09:45:00 24    22 
2014-10-22 10:00:00 30    24 
2014-10-22 10:15:00 26    30 
2014-10-22 10:30:00 23    30 
2014-10-22 10:45:00 27    30 
2014-10-22 11:00:00 30    27 

答えて

1

あなたはrollapplyfrom zooを使用することができます。

だから、このようなものになります。そして、それを組み合わせる

GetHighest_3 = rollapply(data = XTS1, width = 3, FUN = max) 

を:

cbind(XTS1, GetHighest_3) 

私は見るだけprobelmが、それはおそらく、最初の2つの値のためのNAを返すことではありません最初の値は3の幅を持つためです。

私は今すぐRにアクセスできないため、コードをテストできませんでした。スペルミスがある可能性があります。

+0

ありがとうございました。それは動作します。 NAsは問題ではありません。私はそれを1遅らせ、私が探していたものを正確に得るでしょう。素晴らしい。 – Krug

関連する問題