2013-09-26 14 views
5

mam 700 MB .dta złożenia Stata z 28 milionów i 14 obserwacji zmiennych kolumnyStosując memisc importowania STATA .dta pliku do R

Przy próbie importu w R z zastosowaniem foreign's read.dta funkcji() biegnę z pamięci RAM na mojej maszynie 8 GB (strony bardzo szybko strzelają do GB).

staph <- read.dta("Staph_1999_2010.dta") 

szukałem wokół i to brzmi jak bardziej wydajny alternatywą byłoby użyć funkcji Stata.file() z memisc package.

Kiedy zadzwonić:

staph <- Stata.file("Staph_1999_2010.dta") 

otrzymuję segfault:

*** caught segfault *** 
address 0xd5d2b920, cause 'memory not mapped' 

Traceback: 
1: .Call("dta_read_labels", bf, lbllen, padding) 
2: dta.read.labels(bf, len.lbl, 3) 
3: get.dictionary.dta(dta) 
4: Stata.file("Staph_1999_2010.dta") 

mi się znaleźć w dokumentacji Stata.file() trudny do naśladowania.

(1) Czy poprawnie używam Stata.file()?

(2) Czy Stata.file() zwraca ramkę danych podobną do read.dta()?

(3) Jeśli prawidłowo używam Stata.file(), jak mogę naprawić błąd, który otrzymuję?

+0

Kup więcej pamięci. Zwykłą regułą jest to, że potrzebujesz 3 razy więcej pamięci niż największy obiekt, więc 28 * 14 * 10 * 3 = 11760, więc powinieneś mieć 16 GB na wydajne wok z obiektem tej wielkości (biorąc pod uwagę potrzebę systemów Pamięć, która prawdopodobnie zajmie kilka koncertów –

+0

dziękuję, rozważę te opcje, ale chciałbym dowiedzieć się, jak korzystać z pliku Stata.file() – ptjetty

+0

Ja również segfault, kiedy używam pliku dta 100mb – ptjetty

Odpowiedz

0

Z dostępem do Stata, jednym rozwiązaniem do eksportu .dta do .csv w Stata.

use "file.dta" 

export delimited using "file.csv", replace 

Następnie importu w R z zastosowaniem read.csv lub data.table::fread.

Inne pomysły:

  • rozważyć próbkowanie trochę danych wykorzystujących sample w Stata Stata za
  • Stata compress próbuje kompresji bezstratnej poprzez zmianę typów (nie
    pewien, że będzie zaoszczędzić dużo dla .csv i R chociaż).
  • Spakuj dane mocno, konwertując na całkowitą dowolną datę lub identyfikator ciągu, jeśli to możliwe.
  • Użyj instancji cloud na jednym czasie, a importu początkowego oczyszczenia, przed pobraniem lub utrzymywanie tylko ważną częścią
  • uzyskać więcej RAM ...
Powiązane problemy