Как я могу создать вектор POSIXct в ffdf?

Я осмотрелся и не могу понять, что происходит с этим. Я использую R в Eclipse. Файл, который я пытаюсь импортировать, имеет размер 700 МБ, около 15 миллионов строк и 6 столбцов. Поскольку у меня были проблемы с загрузкой, я начал использовать пакет ff.

library(ff)
FDF = read.csv.ffdf(file='C:\\Users\\William\\Desktop\\R Data\\GBPUSD.1986.2014.txt', header = FALSE, colClasses=c('factor','factor','numeric','numeric','numeric','numeric'), sep=',')
names(FDF)= c('Date','Time','Open','High','Low','Close')
#names the columns in the ffdf file
dim(FDF)
# produces dimensions of the file

Затем я хочу создать последовательность POSIXct, которая позже будет объединена с импортированным файлом. я пытался;

tm1 = seq(as.POSIXct("1986/12/1 00:00"), as.POSIXct("2014/09/04 23:59"),"mins")) 
tm1 = data.frame (DateTime=strftime(tm1,format='%Y.%m.%d %H:%M'))

Однако R продолжал сбоить. Затем я проверил это RStudio и увидел, что в них есть ограничения на вектор. Тем не менее, это дало правильный

dim(tm1)
names(tm1)

Поэтому я вернулся в Eclipse, думая, что это как-то связано с распределением памяти. Я попытался сделать следующее;

library(ff)
tm1 = as.ffdf(seq(as.POSIXct("1986/12/1 00:00"), as.POSIXct("2014/09/04 23:59"),"mins")) 
tm1 = as.ffdf(DateTime=strftime(tm1,format='%Y.%m.%d %H:%M'))
names(tm1) = c('DateTime')
dim(tm1)
names(tm1)

Это дает ошибку

Нет применимого метода для as.ffdf, примененного к объекту класса "c('POSIXct', 'POSIXt')"

Кажется, я не могу обойти это. Я тогда попробовал...

library(ff)
tm1 = as.ff(seq(as.POSIXct("1986/12/1 00:00"), as.POSIXct("2014/09/04 23:59"),"mins")) 
tm1 = as.ff(DateTime=strftime(tm1,format='%Y.%m.%d %H:%M'))

Которые производят выходные даты, но не в правильном формате. Помимо этого, когда...

dim(tm1)
names(tm1)

при выполнении они оба возвращали null.

Вопрос

  1. Как я могу создать последовательность POSIXct в формате, который мне нужен выше?

person Community    schedule 28.11.2014    source источник


Ответы (1)


Мы добрались туда в конце концов.

Я считаю, что проблема была в доступной оперативной памяти во время создания полного вектора. В этом случае я разбил вектор на 3, преобразовал их в формат ffdf, чтобы освободить оперативную память, а затем использовал rbind, чтобы связать их вместе.

Проблема с форматированием когда-то созданного вектора, я полагаю, была связана с доступом к оперативной памяти. Каждый раз, когда я пытался использовать этот R, он вылетал.

Даже с работой ниже моя машина замедляется (4 ГБ). Я заказал еще немного оперативной памяти и надеюсь, что это упростит будущие операции.

Ниже приведен рабочий код;

library(ff)
library(ffbase)

tm1 = seq(from = as.POSIXct('1986-12-01 00:00'), to = as.POSIXct('2000-12-01 23:59'), by = 'min')
tm1 = data.frame(DateTime=strftime(tm1, format='%Y.%m.%d %H:%M'))
# create data frame within memory contrainst
tm1 = as.ffdf(tm1)
# converts to ffdf format 
memory.size()

tm2 = seq(from = as.POSIXct('2000-12-02 00:00'), to = as.POSIXct('2010-12-01 23:59'), by = 'min')
tm2 = data.frame(DateTime=strftime(tm2, format='%Y.%m.%d %H:%M'))
# create data frame within memory contrainst
tm2 = as.ffdf(tm2)
memory.size()

tm3 = seq(from = as.POSIXct('2010-12-2 00:00'), to = as.POSIXct('2014-09-04 23:59'), by = 'min')
tm3 = data.frame(DateTime=strftime(tm3, format='%Y.%m.%d %H:%M'))
memory.size()
tm3 = as.ffdf(tm3)
# converts to ffdf format 
memory.size()

tm4 = rbind(tm1, tm2, tm3)
# binds ffdf objects into one
dim(tm4)
# checks the row numbers 
person Community    schedule 30.11.2014