特定の時間枠を使用して関数を呼び出すにはどうすればよいですか?

デニス

「時刻」にインデックスがあり、何らかの値を持つzooオブジェクト(またはdata.frameの場合もあります)があるとします(以下のサンプルデータを参照)。

                    val
...
2006-08-01 12:00    23
2006-08-01 12:01    24
2006-08-01 12:02    25
2006-08-01 12:03    26
2006-08-01 12:04    27
2006-08-01 12:05    28
2006-08-01 12:06    29
...
2006-08-02 12:00    123
2006-08-02 12:01    124
2006-08-02 12:02    125
2006-08-02 12:03    126
2006-08-02 12:04    127
...

custom.func(vals)その間隔が発生するたびに、12:01〜12:03(つまり、zoo :: rollapplyに似たもの)からカスタム関数を呼び出したい(呼び出します)ので、この例では毎日です。どうすればいいですか?


注(堅牢性のために、次のエッジケースを考慮することもできますが、必須ではありません)。

  1. 毎日12:01〜12:03の値があると思い込まないでください
  2. 12:01〜12:03の範囲全体が毎日存在すると想定しないでください。ある日、12:01と12:02しかないかもしれませんが、12:03がないかもしれません。
  3. 23:58〜00:12のcustom.func(vals)ように、日の境界で呼び出されるようにしたい場合はどうすればよいvalですか?
G.グロタンディーク

入力がz、最後の注に記載されているPOSIXctzooオブジェクトであるとします

times要素ごとに1つの要素を持ちz、HH:MMの形式の文字ベクトル作成します次にok、指定された境界値の間にある時間を示す論理作成します。z[ok]次にz、それらの値に縮小されます。最後に、毎日、sum以下を使用して適用します(必要に応じて他の機能を使用できます)aggregate.zoo

times <- format(time(z), "%H:%M")
ok <- times >= "12:01" & times <= "12:03"
aggregate(z[ok], as.Date, sum)
## 2006-08-01 2006-08-02 
##         75        375 

時間は真夜中にまたがる

深夜にまたがる場合のバージョンです。関数に送信される値の順序は元の順序ではありませんが、関数が対称である場合は問題ではないことに注意してください。

times <- format(time(z), "%H:%M")
ok <- times >= "23:58" | times <= "00:12"
aggregate(z[ok], (as.Date(format(time(z))) + (times >= "23:58"))[ok], sum)
## 2006-08-02 
##         41 

変化

前のコードチャンクは、関数が引数のコンポーネントで対称である場合(meanおよびなどの多くの関数の場合sum)に機能しますが、関数が対称でない場合は、わずかに異なるアプローチが必要になります。to.secHH:MM文字列を数値の秒に変換しto.sec("23:58")、各POSIXct日時から減算するものを定義しますその場合、z保持するコンポーネントは、変換時間が「00:14」未満のHH:MM文字列に変換されたコンポーネントです

to.sec <- function(x) with(read.table(text = x, sep = ":"), 3600 * V1 + 60 * V2)
times <- format(time(z) - to.sec("23:58"), "%H:%M")
ok <- times <= "00:14"
aggregate(z[ok], as.Date(time(z)[ok] - to.sec("23:58")), sum)
## 2006-08-01 
##         41 

注意

Lines <- "datetime val
2006-08-01T12:00    23
2006-08-01T12:01    24
2006-08-01T12:02    25
2006-08-01T12:03    26
2006-08-01T12:04    27
2006-08-01T12:05    28
2006-08-01T12:06    29
2006-08-01T23:58    20
2006-08-02T00:01    21
2006-08-02T12:00    123
2006-08-02T12:01    124
2006-08-02T12:02    125
2006-08-02T12:03    126
2006-08-02T12:04    127"

library(zoo)
z <- read.zoo(text = Lines, tz = "", header = TRUE, format = "%Y-%m-%dT%H:%M")

編集

非対称コードを改訂し、すべてのコードチャンクを簡素化しました。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

関数を使用して別の関数を呼び出すにはどうすればよいですか?

分類Dev

input関数を使用して変数の値を呼び出すにはどうすればよいですか?

分類Dev

Google Testを使用して、main()関数の特定の場所で特定のテスト関数を呼び出すにはどうすればよいですか?

分類Dev

関数を呼び出してその結果を使用するにはどうすればよいですか?

分類Dev

history.push()を使用し、同時に関数を呼び出すにはどうすればよいですか?

分類Dev

特定の時間の後に呼び出される関数にEXPECT_CALLを設定するにはどうすればよいですか?

分類Dev

ATSで関数呼び出しを実行するのにかかる時間を測定するにはどうすればよいですか?

分類Dev

Pythonでsqlalchemyを使用してmysql関数を呼び出すにはどうすればよいですか?

分類Dev

ランダムな時間にblink()関数を呼び出すにはどうすればよいですか?

分類Dev

別の関数に時間がかかる場合、別の関数の完了後に関数を呼び出すにはどうすればよいですか?

分類Dev

cppcheckを使用して未使用の関数からのみ呼び出される関数を検出するにはどうすればよいですか?

分類Dev

botoを使用してラムダ関数を呼び出すにはどうすればよいですか?

分類Dev

Pythonを使用してC ++関数を呼び出すにはどうすればよいですか?

分類Dev

解析サーバーを使用して関数を呼び出すにはどうすればよいですか

分類Dev

引数の数に基づいて特定の関数を呼び出す関数に変数引数を渡すにはどうすればよいですか?

分類Dev

ES6矢印関数を使用して即時呼び出し関数式(IIFE)を実現するにはどうすればよいですか?

分類Dev

関数呼び出しのselectで行全体を使用するにはどうすればよいですか?

分類Dev

特定の関数が呼び出されたときに関数を呼び出す関数を作成するにはどうすればよいですか?

分類Dev

JavaScriptで最初に関数を呼び出してから2番目の関数を呼び出すにはどうすればよいですか?

分類Dev

(任意の)引数を使用して(任意の)関数を呼び出す関数を実装するにはどうすればよいですか?

分類Dev

再帰を使用して、Pythonで別の関数を繰り返し呼び出す関数を作成するにはどうすればよいですか?

分類Dev

MatlabODE45。それを呼び出している間にその中の関数を変更するにはどうすればよいですか?

分類Dev

関数呼び出しなしでLinuxのプロセッサ時間を取得するにはどうすればよいですか?

分類Dev

この関数を特定の回数呼び出すにはどうすればよいですか?

分類Dev

非同期関数を同時に呼び出してすべてのコールバックを待機するにはどうすればよいですか?

分類Dev

特定の関数からのすべてのAJAX呼び出しがいつ終了したかを知るにはどうすればよいですか?

分類Dev

JFrameの終了時に関数を呼び出すにはどうすればよいですか?

分類Dev

PHPを使用して別の関数内でこのPDO関数を呼び出すにはどうすればよいですか?

分類Dev

動的に呼び出されるコントローラーを使用して関数を動的に呼び出すにはどうすればよいですか?

Related 関連記事

  1. 1

    関数を使用して別の関数を呼び出すにはどうすればよいですか?

  2. 2

    input関数を使用して変数の値を呼び出すにはどうすればよいですか?

  3. 3

    Google Testを使用して、main()関数の特定の場所で特定のテスト関数を呼び出すにはどうすればよいですか?

  4. 4

    関数を呼び出してその結果を使用するにはどうすればよいですか?

  5. 5

    history.push()を使用し、同時に関数を呼び出すにはどうすればよいですか?

  6. 6

    特定の時間の後に呼び出される関数にEXPECT_CALLを設定するにはどうすればよいですか?

  7. 7

    ATSで関数呼び出しを実行するのにかかる時間を測定するにはどうすればよいですか?

  8. 8

    Pythonでsqlalchemyを使用してmysql関数を呼び出すにはどうすればよいですか?

  9. 9

    ランダムな時間にblink()関数を呼び出すにはどうすればよいですか?

  10. 10

    別の関数に時間がかかる場合、別の関数の完了後に関数を呼び出すにはどうすればよいですか?

  11. 11

    cppcheckを使用して未使用の関数からのみ呼び出される関数を検出するにはどうすればよいですか?

  12. 12

    botoを使用してラムダ関数を呼び出すにはどうすればよいですか?

  13. 13

    Pythonを使用してC ++関数を呼び出すにはどうすればよいですか?

  14. 14

    解析サーバーを使用して関数を呼び出すにはどうすればよいですか

  15. 15

    引数の数に基づいて特定の関数を呼び出す関数に変数引数を渡すにはどうすればよいですか?

  16. 16

    ES6矢印関数を使用して即時呼び出し関数式(IIFE)を実現するにはどうすればよいですか?

  17. 17

    関数呼び出しのselectで行全体を使用するにはどうすればよいですか?

  18. 18

    特定の関数が呼び出されたときに関数を呼び出す関数を作成するにはどうすればよいですか?

  19. 19

    JavaScriptで最初に関数を呼び出してから2番目の関数を呼び出すにはどうすればよいですか?

  20. 20

    (任意の)引数を使用して(任意の)関数を呼び出す関数を実装するにはどうすればよいですか?

  21. 21

    再帰を使用して、Pythonで別の関数を繰り返し呼び出す関数を作成するにはどうすればよいですか?

  22. 22

    MatlabODE45。それを呼び出している間にその中の関数を変更するにはどうすればよいですか?

  23. 23

    関数呼び出しなしでLinuxのプロセッサ時間を取得するにはどうすればよいですか?

  24. 24

    この関数を特定の回数呼び出すにはどうすればよいですか?

  25. 25

    非同期関数を同時に呼び出してすべてのコールバックを待機するにはどうすればよいですか?

  26. 26

    特定の関数からのすべてのAJAX呼び出しがいつ終了したかを知るにはどうすればよいですか?

  27. 27

    JFrameの終了時に関数を呼び出すにはどうすればよいですか?

  28. 28

    PHPを使用して別の関数内でこのPDO関数を呼び出すにはどうすればよいですか?

  29. 29

    動的に呼び出されるコントローラーを使用して関数を動的に呼び出すにはどうすればよいですか?

ホットタグ

アーカイブ