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ę?
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 –
dziękuję, rozważę te opcje, ale chciałbym dowiedzieć się, jak korzystać z pliku Stata.file() – ptjetty
Ja również segfault, kiedy używam pliku dta 100mb – ptjetty