В предыдущем вопросе я спрашивал об инструментах для редактирования файлов CSV .
Гэвин ссылается на комментарий к R Help Дункана Мердока, в котором говорится, что формат обмена данными является более надежным способом хранения данных, чем CSV.
Для некоторых приложений необходима выделенная система управления базами данных. Однако для небольших проектов анализа данных что-то более легкое кажется более подходящим.
Рассмотрим следующие критерии оценки формата файла:
- надежный : введенные данные должны оставаться верными тому, что было введено; данные должны последовательно открываться в разных программах;
- просто : было бы неплохо, если бы формат файла был прост для понимания и в идеале читался с помощью простого текстового редактора; должно быть легко написать простую программу для чтения и записи в формате.
- открыть : формат должен быть открыт
- совместимость : формат файла должен поддерживаться многими системами
Я считаю, что форматы значений, разделенные запятыми и запятыми, не соответствуют критерию надежности. Хотя я полагаю, что я могу винить в импорте и экспорте программы, а не в формате файла. Мне часто приходится вносить небольшие изменения в параметры
read.table
, чтобы какой-то странный символ не нарушал загрузку фрейма данных.
Вопросов
- Какой формат файла лучше всего отвечает этим потребностям?
- Является ли формат обмена данными лучшей альтернативой? или у него есть свои проблемы?
- Есть какой-то другой формат, который предпочтительнее?
- Я несправедливо оцениваю TSV и CSV? Существует ли простой набор советов по работе с такими файлами, которые делают формат файла более надежным?
источник
write.DIF()
так что это немного улица с односторонним движением, я боюсь.Ответы:
Интересно, происходит ли здесь столкновение по критерию?
Одна из претензий к таким форматам файлов, как Excel, SQL и т. Д., Заключается в том, что вам необходимо заранее определить типы данных, чтобы они хорошо себя вели, что противоречит критерию «что-то более легкое» (как я понимаю, ваше ограничение - больше времени). связанных, чем в вычислительном отношении).
Напротив, критерии, согласно которым они не портят данные или не допускают кражи данных, требуют некоторой проверки ошибок. Если вы не позволите системе автоматически определять типы данных (что, в сущности, является причиной провала Excel), у вас не будет способа получить свой торт и съесть его тоже.
ИМО, из двух второй критерий важнее. Нарушение целостности данных затрудняет или делает невозможным анализ. Потерянные наблюдения или неверные значения (если не проверены должным образом) могут все испортить.
Что касается DIF, фактический необработанный текст не читается человеком, и людям было бы трудно (IMO) делать ввод данных в.
ИМО, вы должны дать справедливую встряску файлам с разделителями. Как упоминалось выше в комментариях, «искажение данных» в основном является ошибкой подмножества инструментов, которые вы используете. Программы с хорошим поведением не должны искажать файлы с разделителями. Самый большой источник искажения - плохо определенный разделитель. Например, если ваши данные могут иметь запятые, CSV не подходит. Если он может иметь вкладки TSV неуместно. Для многих (но не всех) программ вы можете указать альтернативный разделитель. Например, я использовал тильду (~) в нескольких сложных случаях.
источник
На полном серьезе я бы рассмотрел файлы RData, созданные самим R, так как он подходит
Достаточно близко для меня. Если под системами вы подразумеваете приложения а не операционную систему, то последний пункт - сбой.
Да, и RData эффективен, поскольку файлы теперь по умолчанию сжимаются (что раньше было параметром, который по умолчанию отключен).
источник
dput()
предоставляет альтернативу в виде простого текста, которая будет работать с контролем версий. Тем не менее, одна из привлекательных сторон csv / tsv заключается в том, что, когда я делюсь хранилищем с данными (скажем, для журнальной статьи), люди могут легко взять данные и повторно проанализировать их с помощью любого программного обеспечения, которое им нравится.В ответ на ответ Дирка Эддельбюттеля я предлагаю использовать формат файла HDF5 . Он менее прост, чем формат RData, или, можно сказать, «более богатый», но, безусловно, более функционально совместим (может использоваться в C, Java, Matlab и т. Д.). Я обнаружил, что ввод / вывод с использованием больших файлов HDF5 очень быстрый.
источник
Я не совсем уверен, почему формат фиксированного текста с соответствующими метаданными не соответствует вашим критериям. Это не так просто для чтения, как разделитель, но вам все равно нужны метаданные для использования информации. Задача написания синтаксиса для чтения программы просто зависит от того, насколько большой и сложной является структура набора данных. SPSS и Excel имеют графический интерфейс, чтобы помочь с этими задачами.
Есть только две ошибки с файлами CSV, с которыми я столкнулся:
(если вы столкнулись с другими проблемами, не стесняйтесь приводить примеры)
Два решается с более неправильным разделителем, как предложил drnexus (труба (|) - это та, с которой я сталкивался ранее, но тильда (~) работает так же хорошо, что ни одна из них, вероятно, не будет включена в строковые поля.) Проблема не легко решается с помощью любого программного обеспечения, которое вы используете, и обе проблемы связаны с тем, как люди пишут файлы, а не с программным обеспечением, используемым для чтения файлов.
Я также хотел бы сказать, что я согласен с drnexus как в этой ветке, так и в его ответе на вашу недавнюю ветку о редактировании этих файлов. Вы, кажется, жалуетесь на программное обеспечение, которое используете (в частности, Excel), и просите хранить данные в формате, соответствующем вашему программному обеспечению с плохим поведением. Возможно, вопрос должен быть в том, как заставить Excel остановить автоматическое форматирование текстовых файлов. Ваш надежный критерий, как мне кажется, это проблема программного обеспечения с чтением текстовых файлов. Я не использую R для управления данными, но у меня не было так много времени для чтения файлов с разделителями в SPSS, как вы, похоже, предлагаете.
Если исходные файлы записаны неправильно, что заставляет вас надеяться, что какое-либо программное обеспечение надежно прочитает файл? И определенный формат файла, безусловно, не помешает вам неправильно записать данные в любой тип файла, который вы выбрали для начала.
источник
Общая проблема с открытым текстовым форматом заключается в том, что он не может хранить метаданные. Как вы определяете отсутствующие данные? Как вы определяете 1 = категорически не согласен, 2 = не согласен, ... виды вещей в текстовом формате? В простом текстовом формате вы должны использовать другой документ для определения этих метаданных. И это не легко сделать в XML.
Иногда эта проблема может быть очень тревожной.
Мое решение состоит в том, чтобы использовать формат данных SPSS, который является автономным и легко редактируется в SPSS. Я знаю, что это неправильный ответ на ваш вопрос, но я очень долго боролся за одну и ту же проблему, и это мое текущее решение.
источник