Работа с внутридневным набором данных

Я пытался преобразовать свои данные, чтобы получить фрейм данных xts «данные» с временным индексом и двумя столбцами «Цена» и «Объем». Но пока мне не повезло с кодом.

Пример данных можно найти здесь. ftp://ftp.cmegroup.com /datamine_sample_data/ts/2012-11-05-e-mini-s-p-futures.csv

Я дошел пока только до этого этапа:

require(data.table); require(xts)
data=fread("2012-11-05-e-mini-s-p-futures.csv");      
data=data[,c(2,8,10),with=FALSE]
setnames(data,colnames(data),c('Time','Volume','Price'));

Затем я попытался работать с xts и POSIXct, но безуспешно. Кто-нибудь получил волшебные пальцы, чтобы заставить его работать?


person Wolfgang    schedule 15.09.2015    source источник
comment
Это моя собственная попытка: data=as.xts(data[,2:3,with=FALSE],unique=FALSE, order.by=fastPOSIXct(data[,Time],tz='GMT'))   -  person Wolfgang    schedule 15.09.2015


Ответы (1)


Я не использую data.table, просто использую базу R для чтения csv. Затем я объединяю общее время и дату и анализирую его.

data2 <- read.csv("~/Downloads/2012-11-05-e-mini-s-p-futures.csv", head=TRUE)
data2$index <- paste(data2$T.Date, data2$T.Time)
datax <- xts(data2[, c("Volume", "T.Price")], 
             strptime(data2$index, "%Y%m%d %H:%M:%S"))
head(datax)
                    Volume T.Price
2012-11-05 00:00:01      1  1408.5
2012-11-05 00:00:01      7  1408.5
2012-11-05 00:00:01      1  1408.5
2012-11-05 00:00:01      1  1408.5
2012-11-05 00:00:01      8  1408.5
2012-11-05 00:00:01      6  1408.5
person tonytonov    schedule 26.09.2015
comment
Спасибо за повтор :) И спасибо за помощь. В качестве дополнительного вопроса: как мне заставить его начинаться с 16:02 этого дня вместо полуночи? - person Wolfgang; 06.10.2015
comment
Пожалуйста. Ну, xts всегда упорядочивает точки в соответствии с временным порядком. Вероятно, в ваших данных есть ошибка: за 20121105,23:59:50 следует 20121105,00:00:01, вместо этого, вероятно, должно быть 20121106. - person tonytonov; 06.10.2015