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