1

「/」で区切られた 2 つの時間文字列を使用して、xts 時間範囲を照会できます。

library(xts)
set.seed(1234)
a = xts(1:10, as.POSIXlt(1366039619, tz="", origin="1970-01-01") + rnorm(10, 0, 3))
                           [,1]
2013-04-15 11:26:51.962906    4
2013-04-15 11:26:55.378802    1
2013-04-15 11:26:56.329886   10
2013-04-15 11:26:57.275780    7
2013-04-15 11:26:57.306643    9
2013-04-15 11:26:57.360104    8
2013-04-15 11:26:59.832287    2
2013-04-15 11:27:00.287374    5
2013-04-15 11:27:00.518167    6
2013-04-15 11:27:02.253323    3

> a['2013-04-15 11:26:57/2013-04-15 11:26:58']
                           [,1]
2013-04-15 11:26:57.275780    7
2013-04-15 11:26:57.306643    9
2013-04-15 11:26:57.360104    8

POSIXlt オブジェクト index(a[4]) と index(a[7]) を使用して、別の xts オブジェクトで同じ範囲クエリを実行するにはどうすればよいですか? インデックスを文字列に変換する必要がありますか、またはPOSIXltに埋め込まれたエポックからの秒数など、整数値を使用するより高速な方法がありますか?

4

2 に答える 2

0

範囲による ISO スタイルの文字サブセット化 (つまり、: または / を含む長さ 1 のベクトル) は非常に高速です。したがって、次のようなものを使用する必要があります。

a[paste(index(a)[4],index(a)[7],sep='::')]
                    [,1]
2013-04-15 17:26:57    7
2013-04-15 17:26:57    9
2013-04-15 17:26:57    8
2013-04-15 17:26:59    2
于 2013-04-26T15:58:02.897 に答える
0

a[1:10] は最初の 10 行を抽出し、必要な列を指定する必要さえありません。

于 2013-04-26T16:52:37.573 に答える