2014-11-28 2 views
0

나는 주변을 둘러 보았고 이것에 대한 이해를 얻지 못하는 것 같습니다. Eclipse에서 R을 사용하고 있습니다. 가져 오기를 시도하는 파일은 700mb이고 행은 약 15mil이고 열은 6 개입니다. 로드에 문제가있어서 ff 패키지를 사용하기 시작했습니다.ffdf에서 POSIXct 벡터를 만들려면 어떻게해야합니까?

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로 돌아갔습니다. 나는 다음을 시도했다. 이것은 'as.ffdf'에 대한 적용 방법은 클래스의 객체 "C ('POSIXct', 'POSIXt')"에 적용되지

의 오류를 제공

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) 

I 이 문제를 해결할 수없는 것 같습니다. 나는 그 때 시도했다 ...

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 서열을 생성 할 수 있습니다?

답변

0

우리는 결국 거기에 갈 것입니다.

전체 벡터를 만드는 동안 사용 가능한 RAM이 문제라고 생각합니다. 이 경우 벡터를 3 개로 분리하여 ffdf 형식으로 변환하여 RAM을 확보 한 다음 rbind을 사용하여 함께 묶었습니다.

한 번 작성된 벡터 서식 지정 문제는 RAM에 액세스 한 것이 원인이라고 생각합니다. 이걸 시도 할 때마다 R이 추락했습니다.

아래의 작업으로 내 컴퓨터가 느려지고 있습니다 (4GB). 좀 더 많은 RAM을 주문했으며 앞으로의 작업을 원활하게 할 수 있기를 바랍니다.

다음은 작동 코드입니다.

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 
관련 문제