値の範囲に応じたデータ変換の選択

値の範囲に応じたデータ変換の選択

3つのデータ列を含むテキストファイルがあります。ただし、異なるファイルでランダムな時間に観測された単位がppnからppbに変わるため、変換係数と1000の乗算が必要です。

actual data                        needed data look
20101001,01:00,0.3                 20101001,01:00,0.3,300.000
20110103,10:00,212.67              20110103,10:00,212.670,212.670

元のコンテンツをすべて印刷し、変換のために4番目の列を追加するawkコマンドがあります。

唯一の問題は、3番目の列のすべての内容を1000として印刷してから4番目の列に印刷することです。コマンドは次のとおりです。

awk -F ',' '{printf "%s %s %.3f %.3f\n", $1,$2,$3,$3*1000}' temp7.tmp > County001-CO-0012.out

どうすれば、3列の2と-1の間の値に1000を掛けてから、4列の3列の元の値を印刷できますか?

答え1

awkコードでこれを行うことができます。

{
    # if $3 is between -1 and 2, multiply by 1000
    converted = $3 * (-1 <= $3 && $3 <= 2 ? 1000 : 1)
    printf "%s %s %.3f %.3f\n", $1, $2, $3, converted
}

関連情報