Файлы как база данных
Добавлено: 2014-03-05 17:57:28
Добрый день!
Столкнулся с такой проблемой, есть n файлов вида
Ключ 1;Ключ 2;Ключ 3;значение
нужно найти средние арифметические значений, для одинаковых ключей, отсеять значения меньше половины среднего и снова найти среднее, при этом в некоторых файлах для ключей может не быть
например, есть три файла
file1.txt
01 Feb 2014;02 Feb 2014;Alpha;168
02 Feb 2014;03 Feb 2014;Alpha;200
01 Feb 2014;02 Feb 2014;Gama;1204
02 Feb 2014;03 Feb 2014;Gama;1139
file2.txt
01 Feb 2014;02 Feb 2014;Alpha;193
02 Feb 2014;03 Feb 2014;Alpha;178
01 Feb 2014;02 Feb 2014;Beta;29
02 Feb 2014;03 Feb 2014;Beta;34
01 Feb 2014;02 Feb 2014;Gama;1354
02 Feb 2014;03 Feb 2014;Gama;1113
file3.txt
01 Feb 2014;02 Feb 2014;Alpha;172
01 Feb 2014;02 Feb 2014;Beta;35
02 Feb 2014;03 Feb 2014;Beta;40
01 Feb 2014;02 Feb 2014;Gama;44
02 Feb 2014;03 Feb 2014;Gama;1300
Итого, считаем среднее
avg.txt
01 Feb 2014;02 Feb 2014;Alpha;177
02 Feb 2014;03 Feb 2014;Alpha;189
01 Feb 2014;02 Feb 2014;Beta;32
02 Feb 2014;03 Feb 2014;Beta;37
01 Feb 2014;02 Feb 2014;Gama;867
02 Feb 2014;03 Feb 2014;Gama;1184
Выкидываем все значения, которые меньше полученного среднего/2,
такое только одно 01 Feb 2014;02 Feb 2014;Gama;44 (44 < 867/2)
Новые файлы:
file1_new.txt
01 Feb 2014;02 Feb 2014;Alpha;168
02 Feb 2014;03 Feb 2014;Alpha;200
01 Feb 2014;02 Feb 2014;Gama;1204
02 Feb 2014;03 Feb 2014;Gama;1139
file2_new.txt
01 Feb 2014;02 Feb 2014;Alpha;193
02 Feb 2014;03 Feb 2014;Alpha;178
01 Feb 2014;02 Feb 2014;Beta;29
02 Feb 2014;03 Feb 2014;Beta;34
01 Feb 2014;02 Feb 2014;Gama;1354
02 Feb 2014;03 Feb 2014;Gama;1113
file3_new.txt
01 Feb 2014;02 Feb 2014;Alpha;172
01 Feb 2014;02 Feb 2014;Beta;35
02 Feb 2014;03 Feb 2014;Beta;40
02 Feb 2014;03 Feb 2014;Gama;1300
Считаем заново средние значения:
avg_new.txt
01 Feb 2014;02 Feb 2014;Alpha;177
02 Feb 2014;03 Feb 2014;Alpha;189
01 Feb 2014;02 Feb 2014;Beta;32
02 Feb 2014;03 Feb 2014;Beta;37
01 Feb 2014;02 Feb 2014;Gama;1279
02 Feb 2014;03 Feb 2014;Gama;1184
Все
Собственно сам вопрос, есть ли способ без массивов? Возможно все как всегда решается парой строчек
Спасибо
Столкнулся с такой проблемой, есть n файлов вида
Ключ 1;Ключ 2;Ключ 3;значение
нужно найти средние арифметические значений, для одинаковых ключей, отсеять значения меньше половины среднего и снова найти среднее, при этом в некоторых файлах для ключей может не быть
например, есть три файла
file1.txt
01 Feb 2014;02 Feb 2014;Alpha;168
02 Feb 2014;03 Feb 2014;Alpha;200
01 Feb 2014;02 Feb 2014;Gama;1204
02 Feb 2014;03 Feb 2014;Gama;1139
file2.txt
01 Feb 2014;02 Feb 2014;Alpha;193
02 Feb 2014;03 Feb 2014;Alpha;178
01 Feb 2014;02 Feb 2014;Beta;29
02 Feb 2014;03 Feb 2014;Beta;34
01 Feb 2014;02 Feb 2014;Gama;1354
02 Feb 2014;03 Feb 2014;Gama;1113
file3.txt
01 Feb 2014;02 Feb 2014;Alpha;172
01 Feb 2014;02 Feb 2014;Beta;35
02 Feb 2014;03 Feb 2014;Beta;40
01 Feb 2014;02 Feb 2014;Gama;44
02 Feb 2014;03 Feb 2014;Gama;1300
Итого, считаем среднее
avg.txt
01 Feb 2014;02 Feb 2014;Alpha;177
02 Feb 2014;03 Feb 2014;Alpha;189
01 Feb 2014;02 Feb 2014;Beta;32
02 Feb 2014;03 Feb 2014;Beta;37
01 Feb 2014;02 Feb 2014;Gama;867
02 Feb 2014;03 Feb 2014;Gama;1184
Выкидываем все значения, которые меньше полученного среднего/2,
такое только одно 01 Feb 2014;02 Feb 2014;Gama;44 (44 < 867/2)
Новые файлы:
file1_new.txt
01 Feb 2014;02 Feb 2014;Alpha;168
02 Feb 2014;03 Feb 2014;Alpha;200
01 Feb 2014;02 Feb 2014;Gama;1204
02 Feb 2014;03 Feb 2014;Gama;1139
file2_new.txt
01 Feb 2014;02 Feb 2014;Alpha;193
02 Feb 2014;03 Feb 2014;Alpha;178
01 Feb 2014;02 Feb 2014;Beta;29
02 Feb 2014;03 Feb 2014;Beta;34
01 Feb 2014;02 Feb 2014;Gama;1354
02 Feb 2014;03 Feb 2014;Gama;1113
file3_new.txt
01 Feb 2014;02 Feb 2014;Alpha;172
01 Feb 2014;02 Feb 2014;Beta;35
02 Feb 2014;03 Feb 2014;Beta;40
02 Feb 2014;03 Feb 2014;Gama;1300
Считаем заново средние значения:
avg_new.txt
01 Feb 2014;02 Feb 2014;Alpha;177
02 Feb 2014;03 Feb 2014;Alpha;189
01 Feb 2014;02 Feb 2014;Beta;32
02 Feb 2014;03 Feb 2014;Beta;37
01 Feb 2014;02 Feb 2014;Gama;1279
02 Feb 2014;03 Feb 2014;Gama;1184
Все
Собственно сам вопрос, есть ли способ без массивов? Возможно все как всегда решается парой строчек
Спасибо