1
data.tableパッケージからローリングジョインを使用しようとしていますが、私が望む出力を得ることができません。あるR - data.tableを使用したローリングジョインのための予期しない出力
dt_minutes <- data.table(datetime = c(as.POSIXct("2016-05-01 18:59:00"),as.POSIXct("2016-05-01 19:00:00"),as.POSIXct("2016-05-01 19:01:00")))
> dt_minutes
datetime
1: 2016-05-01 18:59:00
2: 2016-05-01 19:00:00
3: 2016-05-01 19:01:00
と私が手出力:
私のデータは次のとおりです。
library(data.table)
dt <- fread(' datetime price
"2016-05-01 18:58:49.078" 2059.25
"2016-05-01 18:58:49.078" 2059.25
"2016-05-01 18:58:49.078" 2059.25
"2016-05-01 18:58:49.078" 2059.25
"2016-05-01 18:58:51.085" 2059.25
"2016-05-01 18:58:51.085" 2059.25
"2016-05-01 18:58:51.085" 2059.25
"2016-05-01 18:58:51.085" 2059.25
"2016-05-01 18:58:51.085" 2059.25
"2016-05-01 18:58:51.085" 2059.25
"2016-05-01 18:58:51.085" 2059.25
"2016-05-01 18:58:53.703" 2059.25
"2016-05-01 18:58:53.757" 2059.25
"2016-05-01 18:58:53.757" 2059.25
"2016-05-01 18:58:53.757" 2059.25
"2016-05-01 18:58:54.155" 2059.50
"2016-05-01 18:59:07.013" 2059.25
"2016-05-01 18:59:07.013" 2059.25
"2016-05-01 18:59:07.015" 2059.25
"2016-05-01 18:59:08.604" 2059.25
"2016-05-01 18:59:31.500" 2059.50
"2016-05-01 18:59:40.723" 2059.25
"2016-05-01 18:59:40.723" 2059.25
"2016-05-01 19:00:00.003" 2059.50
"2016-05-01 19:00:00.003" 2059.50
"2016-05-01 19:00:00.003" 2059.50
"2016-05-01 19:00:00.359" 2059.50
"2016-05-01 19:00:00.381" 2059.50
"2016-05-01 19:00:02.390" 2059.50
"2016-05-01 19:00:04.355" 2059.50
"2016-05-01 19:00:06.230" 2059.50', header = T)
dt$datetime <- as.POSIXct(dt$datetime)
と私は毎分で最新の価格を知りたい
> dt[dt_minutes, roll = TRUE, on = "datetime"]
datetime price
1: 2016-05-01 18:59:00 2059.5
2: 2016-05-01 19:00:00 2059.5
3: 2016-05-01 19:00:00 2059.5
4: 2016-05-01 19:00:00 2059.5
5: 2016-05-01 19:01:00 2059.5
が、私は期待する:
1: 2016-05-01 18:59:00 2059.5
2: 2016-05-01 19:00:00 2059.25
5: 2016-05-01 19:01:00 2059.5
誰かがなぜ私の出力とその時間の間違った価格で "2016-05-01 19:00:00"を繰り返すのか知っていますか?
あなたの 'dt'に重複があるためですか? 'unique(dt)[dt_minutes、roll = TRUE、on =" datetime "]' – SymbolixAU
でそれを試してみてください。しかし、中価格はまだ間違っています。 私は2016-05-01 19:00:00.003 "2059.50"の行がその時間の後であっても2016-05-01 19:00:00 "'分カウントされていると感じます。 – AndrewK
Rはミリ秒の頭痛をたくさん与えているようです。 – AndrewK