ある列の正の値と負の値を別の列の値に分割し、結果を新しい列に追加する方法[閉じる]

ある列の正の値と負の値を別の列の値に分割し、結果を新しい列に追加する方法[閉じる]

大きなテキストファイルがありますが、7列(BETA)から8列(SE)までの値を分割し、結果(11列)を含むテーブルの末尾に新しい列を作成したいと思います。問題は、7列の値の一部が0を超えて負数であることです。

SNP         CHR BP         A1 AX A1_FREQ BETA        SE         P          OBS_CT
rs10875231  1   100000012  T  G  0.405   -0.0456807  0.02260471 0.04335677 4400
rs6678176   1   100000827  C  T  0.383   0.02553138  0.02287662 0.2645817  4400
rs78590530  1   100000948  A  G  0.016   0.171376    0.08757958 0.05035017 4400
rs149636485 1   100001060  A  G  0.004   -0.03363731 0.1819208  0.8529224  4400
rs116216467 1   100001233  C  T  0.043   -0.06690947 0.05683414 0.238941   4400

ベストアンサー1

数字以外の文字列を含む最初の行が原因でエラーが発生します。次のように除外できます。

NR!=1 { $11 = $7/$8 }
1

これで、列8にゼロがある可能性があると思われる場合は、$ 8がゼロでないことを確認する必要があります。パターンに条件を追加できます。

NR!=1 && $8!=0 { $11 = $7/$8 }
1

または、if以下を追加してください。

{ if (NR!=1 && $8!=0) $11 = $7/$8; print }

負の値がなぜ問題なのかわかりません。

おすすめ記事