У меня есть текстовый файл, который выглядит ниже. Первый столбец - это местоположение, второе - позиция, а третье - значение.Bash Awk: Медиана над окнами с позициями начала и остановки
1 10 200
1 11 150
1 12 300
2 13 400
2 14 100
2 15 250
3 16 200
3 17 200
3 18 350
3 19 150
...
Я бы хотел рассчитать медиану поля значения над определенным окном. Например, скажем, размер окна составляет 4 строки. Ниже приведен ожидаемый результат для выборки данных выше:
1 2 10 13 250
2 3 14 17 200
...
Для каждого окна (4 строки), первое значение (в пределах окна) первого столбца, последнего значения (в пределах окна) первого столбца, первое значение второго столбца, последнее значение второго столбца и медиана третьего столбца.
У меня есть частично работающий. Нижеприведенный сценарий печатает последнюю позицию столбца 1, последнюю позицию столбца 2 и означает.
win=4
cat file.txt | awk -v win="$win" '{sum+=$3} (NR%win)==0 {print $1,$2,sum/win;sum=0}'
2 13 262.5
3 17 187.5
...
Как получить начальные позиции в каждом окне и медианное?
thats cool! именно то, что я искал. Можно ли проверить, чтобы игнорировать/пропускать окна меньше, чем размер окна? – rmf
Это будет игнорировать последний частичный блок, для некоторой дополнительной логики создайте блок «END» и проверьте, меньше ли r (w-1), что будет означать частичный последний блок и отчет соответственно. – karakfa