W poprzednim pytaniu poprosiłem o narzędzia do edycji plików CSV .
Gavin powiązał z komentarzem R Help autorstwa Duncana Murdocha sugerującym, że Data Interchange Format to bardziej niezawodny sposób przechowywania danych niż CSV.
W przypadku niektórych aplikacji potrzebny jest dedykowany system zarządzania bazą danych. Jednakże, w przypadku projektów małych analizy danych skala czegoś więcej waga wydaje się bardziej odpowiedni.
Pod uwagę następujące kryteria oceny format pliku:
- reliabile : wprowadzone dane powinny pozostać wiernym temu, co zostało wprowadzone; dane powinny być otwierane konsekwentnie w innym oprogramowaniu;
- prosty : byłoby miło, jeśli format pliku jest łatwe do zrozumienia i być idealnie czytelne pomocą edytora prosty tekst; napisanie prostego programu do odczytu i zapisu formatu powinno być łatwe.
- open : format powinien być otwarty
- interoperacyjny : format pliku powinien być obsługiwany przez wiele systemów
Uważam, że formaty wartości rozdzielanych tabulatorami i przecinkami nie spełniają kryterium wiarygodności. Chociaż przypuszczam, że mógłbym winić za to programy importujące i eksportujące, a nie format pliku. I często znajduję się konieczności dokonywania małych korekt w opcji
read.table
w celu zapobieżenia jakąś dziwną postać z przerywając ładowanie ramki danych.
pytania
- Który format pliku najlepiej spełnia te potrzeby?
- Czy Data Interchange Format jest lepszą alternatywą? czy ma własne problemy?
- Czy jest jakiś inny preferowany format?
- Czy niesprawiedliwie oceniam TSV i CSV? Czy istnieje prosty zestaw wskazówek dotyczących pracy z takimi plikami, które zwiększają niezawodność formatu pliku?
źródło
write.DIF()
więc jest trochę jednokierunkowej ulicy obawiam.Odpowiedzi:
Zastanawiam się, czy tutaj dochodzi do kolizji kryteriów.
Jedną skargą dotyczącą formatów plików, takich jak Excel, SQL itp., Jest to, że musisz wcześniej zdefiniować typy danych, aby dobrze się zachowywały, co jest sprzeczne z kryterium „czegoś mniejszego” (ponieważ rozumiem, że twoje ograniczenie to więcej czasu) powiązane niż związane obliczeniowo).
Natomiast kryteria, zgodnie z którymi nie jest pomijane dane, ani nie pozwalają na pomijanie danych, wymagają pewnego sprawdzenia błędów. O ile nie pozwolisz systemowi na automatyczne rozpoznanie typów danych (co w zasadzie powoduje, że Excel Cię zawodzi), nie ma sposobu, aby zjeść ciasto i zjeść je.
IMO, z tych dwóch, drugie kryterium jest ważniejsze. Po naruszeniu integralności danych analiza jest trudna lub niemożliwa. Utracone obserwacje lub nieprawidłowe wartości (jeśli nie są odpowiednio sprawdzone) mogą wszystko zepsuć.
W odniesieniu do DIF, rzeczywisty tekst surowy nie jest czytelny dla człowieka i byłoby trudne (IMO) dla ludzi do wprowadzania danych.
IMO, powinieneś wstrząsnąć rozdzielanymi plikami. Jak wspomniano powyżej w komentarzach, „zakłócanie danych” jest głównie winą podzbioru używanych narzędzi. Dobrze zachowujące się programy nie powinny zmieniać plików rozdzielanych granicami. Największym źródłem zniekształceń jest źle określony ogranicznik. Na przykład jeśli Twoje dane mogą zawierać przecinki, CSV jest nieodpowiedni. Jeśli może mieć zakładki, TSV jest nieodpowiedni. W przypadku wielu (ale nie wszystkich) programów można określić alternatywny ogranicznik. Na przykład użyłem tyldy (~) w kilku trudnych przypadkach.
źródło
Z całą powagą rozważę pliki RData utworzone przez samego R, gdy pasuje
Wystarczająco blisko dla mnie. Jeśli przez systemy masz na myśli aplikacje a nie system operacyjny, to ostatnim punktem jest awaria.
Aha, a RData jest wydajna, ponieważ pliki są teraz domyślnie kompresowane (co było kiedyś opcją domyślnie wyłączoną).
źródło
dput()
zapewnia alternatywny tekst, który działałby z kontrolą wersji. Jednak jednym z odwołań csv / tsv jest to, że kiedy udostępniam repozytorium z danymi (np. W artykule z czasopisma), ludzie mogą pobrać dane i ponownie je przeanalizować za pomocą dowolnego oprogramowania, które im się podoba.W odpowiedzi na odpowiedź Dirka Eddelbuettela sugeruję użycie formatu pliku HDF5 . Jest mniej prosty niż format RData, lub można powiedzieć, „bardziej bogaty”, ale z pewnością bardziej interoperacyjny (może być używany w C, Java, Matlab itp.). Przekonałem się, że operacje we / wy dotyczące dużych plików HDF5 są bardzo szybkie.
źródło
Nie jestem do końca pewien, dlaczego ustalony format tekstu z odpowiednimi metadanymi nie spełnia twoich kryteriów. Czytanie nie jest tak proste jak separator, ale i tak potrzebujesz metadanych, aby korzystać z informacji. Zadanie pisania składni do odczytu programu zależy po prostu od tego, jak duża i skomplikowana jest struktura zbioru danych. SPSS i Excel mają graficzny interfejs użytkownika ułatwiający wykonywanie tych zadań.
Występują tylko dwa błędy w plikach CSV:
(jeśli napotkałeś inne problemy, podaj przykłady)
Dwa rozwiązuje się z bardziej nieregularnym ogranicznikiem, jak sugeruje drnexus (potok (|) to taki, z którym się wcześniej spotkałem, ale tylda (~) działa równie dobrze, ponieważ żadne z nich prawdopodobnie nie będzie zawarte w polach łańcuchowych.) Jeden jest problem, którego nie można łatwo rozwiązać za pomocą oprogramowania, którego używasz, i oba są problemami ze sposobem, w jaki ludzie pisali pliki na początku, a nie oprogramowaniem używanym do ich odczytu.
Chciałbym również powiedzieć, że zgadzam się z drnexusem zarówno w tym wątku, jak i jego odpowiedzią na twój ostatni wątek dotyczący edytowania tych plików. Wygląda na to, że narzekasz na oprogramowanie, którego używasz (w szczególności Excel) i prosisz o przechowywanie danych w formacie zgodnym z twoim źle zachowanym oprogramowaniem. Być może pytanie powinno brzmieć, jak przekonać Excela do zatrzymania automatycznego formatowania zwykłych plików tekstowych. Twoje wiarygodne kryteria, jak mi się wydaje, to problem z oprogramowaniem do odczytu zwykłych plików tekstowych. Nie używam R do zarządzania danymi, ale nie miałem tak trudnego czasu czytając pliki rozdzielone w SPSS, jak się wydaje.
Jeśli oryginalne pliki nie są poprawnie zapisane, co powoduje, że jakiekolwiek oprogramowanie niezawodnie odczytuje plik? A konkretny format pliku z pewnością nie zapobiegnie niepoprawnemu zapisaniu danych do dowolnego typu pliku, od którego chcesz zacząć.
źródło
Częstym problemem związanym z formatem zwykłego tekstu jest to, że nie można przechowywać metadanych. Jak zdefiniować brakujące dane? Jak zdefiniujesz 1 = zdecydowanie się nie zgadzam, 2 = nie zgadzam się, ... rodzaje rzeczy w formacie zwykłego tekstu? W formacie zwykłego tekstu musisz użyć innego dokumentu, aby zdefiniować te metadane. I nie jest to łatwe w XML.
Czasami ten problem może być bardzo niepokojący.
Moim rozwiązaniem jest użycie formatu danych SPSS, który jest samodzielny i łatwy do edycji w SPSS. Wiem, że nie jest to prawidłowa odpowiedź na twoje pytanie, ale zmagam się z tym samym problemem od bardzo dawna i to jest moje obecne rozwiązanie.
źródło