Najlepszy sposób na proste przechowywanie danych do analizy statystycznej w języku R [zamknięte]


12

Od pewnego czasu używam plików tekstowych do przechowywania moich danych w R. Ale w ostatnim projekcie rozmiary plików stają się zbyt duże, aby obsłużyć nieprzetworzone pliki tekstowe. Jaka jest najlepsza prosta alternatywa?


5
W jaki sposób pliki tekstowe stają się zbyt duże? Czy boisz się o ich uczciwość? Nie możesz ich otworzyć w innym oprogramowaniu? Czy są zbyt wolne, aby je załadować? Za duży na dysk twardy (laptop?)?
— Gala

3
+1 Zarządzanie danymi w miarę rozwoju projektów jest powszechnym zagadnieniem w analizie danych (i nie jest specyficzne dla R). Podstawową kwestią jest integralność danych, a nie rozmiar pliku: zaproponowanie jakiejś formy kompresji po prostu zaciemnia to, a nie rozwiązuje.
— whuber

Powyżej pewnego rozmiaru txt po prostu nie działa. Mogę dodać dodatkowe dane do pliku txt i załadować je do R, ale dodatkowych danych nie ma w R. (Przy okazji dane są dość bogate, więc kompresja może trochę pomóc, nie doprowadziłaby mnie tak daleko, a ja podejrzewam, że wraz z rozwojem mojego projektu znów skończę z tymi samymi problemami.)
— Toy Molto,

Musisz powiedzieć nam więcej o swoich danych, nie ma czegoś takiego jak „najlepszy sposób na uzyskanie dowolnego rodzaju danych”.
— zx8754,

Masz na myśli to, read.tableczy read.csvpo cichu zawodzi? Czy jesteś absolutnie pewien, że nie masz kilku plików i jakiś błąd w kodzie (zła ścieżka, zła nazwa pliku itp.)? Aby naprawić pomysły, możesz również dać nam wyobrażenie o tym, ile zmiennych i ile rekordów masz do czynienia w przybliżeniu.
— Gala

Odpowiedzi:


10

Standardowym podejściem R jest użycie savei load. Jeśli uruchomisz saveramkę danych po jej zaimportowaniu i dodaniu adnotacji, możesz ją określić, compress=TRUEa będziesz zaskoczony kompresją i szybkim loadczasem. Działa to szczególnie dobrze, jeśli rozmiar obiektu jest mniejszy niż około 400 MB. W przeciwnym razie sprawdź niektóre z powyższych sugestii lub potężny ffpakiet w R.

HmiscPakiet ma małe owijarki Savei Loadaby jeszcze bardziej bezbolesne powyżej:

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

Spójrz na bazy danych SQLite3. Każda baza danych jest plikiem, więc nie wymaga konfigurowania serwera bazy danych.

Aby utworzyć bazę danych:

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

Do użytku z R, https://gist.github.com/lynaghk/1062939


+1 Korzystanie z rzeczywistej bazy danych jest ogromnym krokiem we właściwym kierunku.
— whuber

Czy byłoby to odpowiednie narzędzie? cran.r-project.org/web/packages/RSQLite/index.html
— EngrStudent

Dzięki, spróbuję tej trasy. Spojrzałem też na MySQL, ale wydaje się, że jest więcej niż potrzebuję.
— Toy Molto,

4

Istnieje wiele ogólnych opcji.

  • Możesz skompresować tekst.
  • Możesz napisać tekst dwójkowo, a nie pisać w ascii

Świetna kompresja zależy od danych.

Domyślam się (i nie określiłeś, więc zgaduję), że chcesz przechowywać dane podobne do arkusza kalkulacyjnego w czymś innym niż csv (rozdzielany przecinkami).

Jednym z moich ulubionych formatów (uwielbiam MatLab) jest hdf.

Oto informacje związane z R dotyczące HDF:

Jest to format przechowywania danych o superkomputerach o dużej gęstości. Może być bardzo szybki i wydajny. Jest także (co nie dziwi) gęstszy niż spakowany tekst.


3

Standardowe funkcje odczytu plików w R będą teraz automatycznie łatwo odczytywać pliki spakowane gzip. Więc po prostu uruchom prostą kompresję gzip na swoich danych i czytaj jak zawsze, jakby to był zwykły tekst.

read.table('myfile.gz')

Schludny! Nie wiedziałem tego. Dziękuję Ci.
— EngrStudent
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.