2015-09-15 3 views
1

Я пытаюсь преобразовать свои данные, чтобы получить «данные» фрейма данных 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, но без удачи. Кто-нибудь получил волшебные фальшивки, чтобы заставить его работать?

+0

Это моя собственная попытка: данные = as.xts (данные [, 2: 3, с = FALSE], уникальный = FALSE, order.by = fastPOSIXct (данные [, Time], TZ =» GMT ')) – Wolfgang

ответ

0

Я не использую 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 
+0

Спасибо за ваш повтор :) И спасибо за помощь. В качестве побочного вопроса: как мне заставить его начать с 16:02 в тот день, а не в полночь? – Wolfgang

+0

Добро пожаловать. Ну, 'xts' всегда устраивает точки в соответствии с порядком времени. Вероятно, в ваших данных есть ошибка: в нем есть «20121105,23: 59: 50», а затем '20121105,00: 00: 01', вероятно, должно быть« 20121106 ». – tonytonov

Смежные вопросы