私は時系列を保存するためにRのdata.tableを使用しています。私は、選択された時間の連続する行が、選択された最後の行から少なくともN秒離れているようなサブセットを返したいとします。私は 選択された行が一定の最小時間だけ異なるように時系列をサブセット化
library(data.table)
x <- data.table(t=c(0,1,3,4,5,6,7,10,16,17,18,20,21), v=1:13)
x
t v
1: 0 1
2: 1 2
3: 3 3
4: 4 4
5: 5 5
6: 6 6
7: 7 7
8: 10 8
9: 16 9
10: 17 10
11: 18 11
12: 20 12
13: 21 13
を持っていると私は、最初の行から始まる離れて少なくとも5秒は、ある行をサンプリングしたい場合は、私は時間/値ペアでdata.tableを取得する必要があります:
y <- x[...something...]
y
t v
1: 0 1
2: 5 5
3: 10 8
4: 16 9
5: 21 13
時間のサンプルは規則的に間隔を置く必要はないので、私はすべてのM行をとることはできません。もちろん、私はdata.tableの行を手動でループすることでこれを行うことができますが、data.tablesのインデックスを使用してこれを表現するより便利な方法があるのだろうかと思います。ここで
'findInterval'のようなものがここでも動作するはずですが、私はそれを理解できません。 – Frank
Yikes、私は答えを「いいえ」としていますが、このための便利な索引付けのパラダイムはありません。私のRの実装がボトルネックになったら、おそらくそれをRcppに委託するだけです。助けてくれてありがとう。 – Anthony
@Anthonyええ、私はあなたが便利な方法ではないと思っていますが、ルールの複雑さを過小評価していると思います。 "最大セット"の部分を気にしない場合、それはずっと簡単になり、繰り返し計算する必要はありません: 'x [x [。(t = seq(t [1L]、t [.N ]、= 5 * 2))、on =。(t)、roll = TRUE、TRUE、mult = "first"]] '10秒間隔ごとに1つの値を選択するet voila - あなたの状態満足している。とにかく、あなたが良いRcppの方法を見つけたら、それを私たちが見ることができるように答えとして投稿することができます。 – Frank