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?
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 optionsSave(mydata)# writes mydata.rda to current working directory....Load(mydata)# reads mydata.rda and creates mydata data frame
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:
dostępne przez pakiety hdf5, h5r, rhdf5 Bioconductor, RNetCDF, ncdf i ncdf4
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.
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.
R
). Podstawową kwestią jest integralność danych, a nie rozmiar pliku: zaproponowanie jakiejś formy kompresji po prostu zaciemnia to, a nie rozwiązuje.read.table
czyread.csv
po 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.Odpowiedzi:
Standardowym podejściem R jest użycie
save
iload
. Jeśli uruchomiszsave
ramkę danych po jej zaimportowaniu i dodaniu adnotacji, możesz ją określić,compress=TRUE
a będziesz zaskoczony kompresją i szybkimload
czasem. 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ężnyff
pakiet w R.Hmisc
Pakiet ma małe owijarkiSave
iLoad
aby jeszcze bardziej bezbolesne powyżej:źródło
Spójrz na bazy danych SQLite3. Każda baza danych jest plikiem, więc nie wymaga konfigurowania serwera bazy danych.
Aby utworzyć bazę danych:
Do użytku z R, https://gist.github.com/lynaghk/1062939
źródło
Istnieje wiele ogólnych opcji.
Ś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.
źródło
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.
źródło