2014-10-12 5 views
2

상당히 큰 csv 파일을 R에로드하려고합니다. 약 50 개의 열과 2 백만 개의 행이 있습니다.큰 csv 파일을 R data.frame에 완전히 읽지 못합니다.

내 코드는 꽤 기본이며 이전에는 파일을 열 때 사용했지만 그다지 큰 것은 아닙니다.

mydata <- read.csv('file.csv', header = FALSE, sep=",", stringsAsFactors = FALSE) 

결과적으로 데이터를 읽지 만 1080000 행 정도 후에 멈 춥니 다. 이것은 대강 Excel이 멈추는 곳입니다. R이 전체 파일을 읽도록하는 방법은 무엇입니까? 왜 그것이 반쯤에 멈추는가?

업데이트 : (11/30/14) 데이터 제공 업체와상의 한 후 파일에 손상 문제가 있음을 발견했습니다. 새 파일도 제공되었지만 크기가 작고 R에 쉽게로드됩니다.

+0

사용중인 운영 체제는 무엇입니까? –

+1

메모리 제한을 초과하는 것처럼 들립니다. CSV 파일을 SQLite 또는 MySQL 데이터베이스로 가져올 수 있다면 데이터베이스에서 많은 전통적인 메모리 내 작업을 수행 할 수있는'dplyr '을 사용할 수 있습니다. 또는'sqldf '를 사용하여 CSV를 부분적으로 읽을 수 있습니다. 제대로 분할 할 수 있다면 부분적으로 읽을 수 있습니다. 마지막으로, AWS, Digital Ocean 등에서 더 큰 메모리 인스턴스를 생성하고 분석을 수행 할 수 있습니다. – hrbrmstr

+0

library ("data.table") 패키지에서 "fread"를 사용해보십시오. – KFB

답변

2

"read.csv()"는 최대 1080000 개의 행을 읽습니다. 라이브러리 (data.table)의 "fread"는 쉽게 읽어야합니다. 그렇지 않다면 두 가지 옵션이 있습니다. 라이브러리 (h20) 또는 "fread"로 시도하십시오. select 옵션을 사용하여 필수 열을 읽을 수 있습니다 (또는 두 개의 반쪽 읽기, 정리 및 다시 병합).

1

read.table을 사용하고 colClasses 매개 변수를 포함시켜 개별 열의 유형을 지정할 수 있습니다.

현재 코드에서 R은 모든 데이터를 먼저 문자열로 읽은 다음 변환 가능한 경우 각 열을 확인합니다. 지. 숫자 형식으로 바로 읽는 것보다 더 많은 메모리가 필요한 숫자 형식으로 변환합니다. colClasses를 사용하면 필요하지 않은 열을 무시할 수도 있습니다.

관련 문제