Как выбрать верхние 2% значений из столбца, а затем записать 1, если это правда, и 0, если это ложь?

Завершено использованием команды

wget -O **URL** | awk **file suffix** | cut **delimiter1** | cut **delimiter2** > filenames.txt

затем я просто прошелся по этому файлу, чтобы загрузить файлы по одному:

while read FILE; do **commands**; done <filenames.txt

Не слишком изящно, но это сработало!

0
26.02.2021, 00:41
2 ответа
awk '
  PASS==1{
    if (FNR==2){ min=max=$5; next }
    min=($5 < min ? $5 : min)
    max=($5 > max ? $5 : max)
    next
  }
  FNR==1{ threshold=(max - ((max - min) / 50)) }
  FNR>1 { $5=($5 >= threshold) }
  1
' PASS=1 file PASS=2 file

Чтение входного файла за два прохода.

Первый проход :Определить минимальное и максимальное значение 5-го поля.
Второй проход :Определите пороговое значение для первых 2% значений в первой записи. На любых других записях установите 5-е поле на 0или 1в зависимости от того, превышает ли поле пороговое значение. Затем распечатайте запись.

Выход:

CHR BP  SNP CM  AN1
1 15558213 rs2845371 0 1
1 15558230 rs16981507 0 0
1 15558586 rs5993924 0 0
1 15563103 rs3016111 0 0
1
18.03.2021, 22:28

Возможно, сначала разберись:

cat FileName.txt | sort -r -n -k5 | head
-1
18.03.2021, 22:28

Теги

Похожие вопросы