LINUX.ORG.RU

Как сравнить таблицы?


0

1

Имеется несколько таблиц. Скажем, в текстовых файлах, формата CSV. Колонки одинаковые, значения почти одинаковые (отличия для числовых — в 3-6 знаке, часто вообще теряются при округлении). Требуется попарно сравнить таблицы. Найти пары одинаковых и почти одинаковых строк и вывести для них разности соответствующих ячеек. Кроме того, требуется найти все уникальные строки.

Столбцов 8, строк от 500 до 1000, уникальных — до трети. Поэтому сравнивать вручную не хочу.

Чем можно провести такое сравнение?

Или такие вопросы — в Talks?

★★★★★

> Чем можно провести такое сравнение?

в голову приходит только написание скрипта на $YOUR_FAVORITE_SCRIPTING_LANG для парсинга и сравнения. а и еще - может быть ОО так умеет, я не в курсе.

isden ★★★★★
()
Ответ на: комментарий от Eddy_Em

> А что, diff/comm не годятся?

Спасибо, про comm забыл начисто (никогда им раньше не пользовался).

И как быть с тем, что числа слабо различаются? Можно забить нулями последние 1-2 позиции в каждом числе. Другие варианты есть?

question4 ★★★★★
() автор топика
Ответ на: комментарий от question4

Напишите простенький парсер, который будет округлять данные до требуемой погрешности и приводить их к единообразному виду. А вообще, можно и на сях по-быстрому сварганить то, что вам нужно, если стандартные методы сравнения строк не подойдут.

Eddy_Em ☆☆☆☆☆
()
Ответ на: комментарий от Eddy_Em

> А вообще, можно и на сях по-быстрому сварганить то, что вам нужно, если стандартные методы сравнения строк не подойдут.

По каким словам искать в гугле?

question4 ★★★★★
() автор топика
Ответ на: комментарий от question4

Берете алгоритм того же diff'а или comm'а и переделываете для числового, а не строкового, поиска. Т.к. у вас таблички маленькие, можно целиком считывать файл в память (преобразуя в float или какой у вас там тип).

Гуглить алгоритмы сортировки, поиска и сравнения табличных данных.

Хотя, может быть, все-таки строковых сравнений вам будет достаточно?

Eddy_Em ☆☆☆☆☆
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.