у меня есть набор файлов, следующей информация:Вычислить среднее значение по сгруппированным строкам
ID Score Other
ABR 0.98 NBNMSB
BCG 0.76 NBNMSB
CVD 0.6 NBNMSB
BCG 0.9 VSCVA
CVD 0.56 VSCVA
ABR 0.9 VSCVA
CVD 0.7 BAVSC
BCG 0.4 BAVSC
ABR 0.5 BAVSC
ABR 0.8 NBNMSB
BCG 0.6 NBNMSB
CVD 0.3 NBNMSB
BCG 0.7 VSCVA
CVD 0.0 VSCVA
ABR 0.1 VSCVA
CVD 0.5 BAVSC
BCG 0.8 BAVSC
ABR 1.0 BAVSC
Я хочу, чтобы вычислить максимальные баллы через первую колонку, т.е. идентификатора для каждого из третьего столбца таким образом, чтобы результат был бы быть сгруппированы по первому столбцу и макс нот будет рассчитываться по третьей колонке следующим образом:
Файл ABR.txt
ABR 0.98 NBNMSB
ABR 0.9 VSCVA
ABR 1.0 BAVSC
Файл BCG.txt
BCG 0.76 NBNMSB
BCG 0.9 VSCVA
BCG 0.8 BAVSC
и то же самое для CVD exceot, что файлы действительно большие и несколько таких файлов, в настоящее время я использую следующий код:
во время чтения ID; СДЕЛАЙТЕ
while read line; do
block=$(echo $line | awk '{print $1}')
max_of_score=$(grep $block Negative/fileofinterest*.ext | grep $ID | awk 'BEGIN {max = 0} {if ($2>max) max=$2} END {print max}')
echo $block $max_of_score >> $ID"_max.txt"
done < fileOfcolumn3values.txt
#contains all the possible values of column 3 (in this case NBNMSB, VSCVA, BAVSC)
done < fileOfIdscolumn1.txt
#contains all possible values of column 1 (in this case ABR, BCG, CVD)
Я хотел бы найти возможный код, который будет работать быстрее, чем выше алгоритму, TIA
Ваш вопрос остается неясным. Вы говорите, что у вас есть набор файлов, содержащих некоторый набор информации, к которой вы приводите пример. Затем вы перечислите 2 файла. Являются ли эти входные данные или ожидаемые выходные файлы? Какова корреляция с первым набором данных, которые вы опубликовали? Если они вводятся, какой результат? Похоже, вам нужно что-то работать с несколькими файлами, поэтому, пожалуйста, опубликуйте, скажем, 3 небольших входных файла образца и ожидаемый результат, учитывая эти 3 входных файла. Если ожидаемый результат - несколько файлов, тогда укажите и покажите это. –