통계 분석을 위해 데이터를 R에 간단하게 저장하는 가장 좋은 방법


12

나는 텍스트 파일을 사용하여 얼마 동안 아무런 문제없이 R에 대한 데이터를 저장했습니다. 그러나 최근 프로젝트의 경우 원시 텍스트 파일을 처리하기에는 파일 크기가 너무 커지고 있습니다. 가장 간단한 대안은 무엇입니까?


5
텍스트 파일이 어떤 식으로 너무 커지고 있습니까? 당신은 그들의 충절을 두려워합니까? 다른 소프트웨어에서 열 수 없습니까? 로드하기에는 너무 느립니까? 하드 드라이브가 너무 큽니까 (랩탑?)
Gala

3
+1 프로젝트가 성장함에 따라 데이터를 관리하는 것은 데이터 분석에서 보편적 인 문제이며 그다지 구체적이지 않습니다 R. 근본적인 관심사는 파일 크기가 아닌 데이터 무결성에 있습니다. 어떤 형태의 압축을 제안하면이를 해결하는 것보다는이를 모호하게합니다.
whuber

특정 크기 이상에서 txt는 작동하지 않는 것 같습니다. 추가 데이터를 txt 파일에 추가하고 R에로드 할 수는 있지만 추가 데이터는 R에 없습니다. 내 프로젝트가 커짐에 따라 다시 같은 문제로 끝날 것입니다.)
Toy Molto

귀하의 데이터에 대해 더 자세히 알려 주셔야합니다. "모든 종류의 데이터에 가장 적합한 방법"은 없습니다.
zx8754

당신은을 의미합니까 read.table또는 read.csv자동으로 실패? 주위에 여러 파일이 있고 일부 코딩 오류 (잘못된 경로, 잘못된 파일 이름 등)가없는 것이 확실합니까? 아이디어를 고치기 위해, 얼마나 많은 변수와 대략 다루고있는 레코드 수에 대한 아이디어를 제공 할 수도 있습니다.
Gala

답변:


10

표준 R 방식은 save및 을 사용하는 것 load입니다. save데이터 프레임을 가져 와서 주석을 달고 실행 한 경우 데이터 프레임을 지정 compress=TRUE하면 압축과 빠른 load시간에 놀라게됩니다 . 객체 크기가 약 400MB 미만인 경우 특히 효과적입니다. 그렇지 않으면 위의 제안 중 일부 또는 ffR 의 강력한 패키지를 확인하십시오.

Hmisc패키지는 작은 래퍼를 가지고 SaveLoad위의 더 많은 고통을 만들기 위해 :

mydata <- csv.get(...)  # Hmisc package, has several options
Save(mydata)   # writes mydata.rda to current working directory
....
Load(mydata)   # reads mydata.rda and creates mydata data frame

9

SQLite3 데이터베이스를 살펴보십시오. 각 데이터베이스는 파일이므로 데이터베이스 서버를 설정할 필요가 없습니다.

데이터베이스를 작성하려면 다음을 수행하십시오.

$ sqlite3 my_db.db3
> CREATE TABLE my_table ( col1 TEXT );

R과 함께 사용하려면 https://gist.github.com/lynaghk/1062939


+1 실제 데이터베이스를 사용하는 것은 올바른 방향으로 나아가는 큰 단계입니다.
whuber

이것이 적절한 도구입니까? cran.r-project.org/web/packages/RSQLite/index.html
EngrStudent

고마워요, 나는이 길을 시도 할 것입니다. 나는 MySQL도 보았지만 필요 이상으로 보인다.
Toy Molto

4

많은 일반 옵션이 있습니다.

  • 텍스트를 압축 할 수 있습니다.
  • ASCII로 쓰지 않고 텍스트에 바이너리를 쓸 수 있습니다.

큰 압축은 데이터에 따라 다릅니다.

내 추측 (그리고 당신이 지정하지 않았으므로 추측해야합니다)은 스프레드 시트와 같은 데이터를 csv (쉼표로 구분) 이외의 다른 형식으로 저장하려고한다는 것입니다.

내가 좋아하는 형식 (MatLab을 좋아함) 중 하나는 hdf입니다.

HDF에 대한 R 관련 정보는 다음과 같습니다.

고밀도 슈퍼 컴퓨팅 데이터 저장 형식입니다. 매우 빠르고 효율적일 수 있습니다. 또한 압축 된 텍스트보다 (확실히) 밀도가 높습니다.


3

R의 표준 파일 읽기 기능은 이제 zip 파일을 자동으로 쉽게 읽을 수 있습니다. 따라서 데이터에 간단한 gzip 압축을 실행하고 마치 일반 텍스트처럼 항상 읽습니다.

read.table('myfile.gz')

산뜻한! 난 몰랐어. 감사합니다.
EngrStudent
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.