他の列の値の比較

他の列の値の比較

次の列がありますcsv。 (他の列もありますが関連性があります。)

region, city, actual rating, predicted rating
NSW, SYD, 0.765, 0.5
Victoria, Melbourne, 4.81225, 5.0

私がしたいのは、実際の評価が最も近い地域と都市を印刷することです。つまり、できるだけ近くに0.5出力します。丸めを計算してこれを変形してみました。NSW, SYD0.7651.00.5awk

awk -F, '{$3=$3*2; printf "%0.0f\n",$3}'

しかし、特定のフィールドを編集しながら他のフィールドを維持する方法がわからないので、この段階で停止しました。

答え1

表示されたデータに基づいて推定すると、推定評価は0.5の倍数です。したがって、「実際の評価が0.5に近い」という条件は、「実際の評価が0.5/2以上異なる」と同じです。だからテストしてみてください。標準awkには絶対値関数がないため、両方のテストを組み合わせる必要があります。

最初の2つのフィールドを印刷するには、$1とを印刷します$2OFSカンマで区切るには、カンマで設定するか、を使用できますprint $1 "," $2

awk -F, -v OFS=, '$4 - $3 < -0.25 || $4 - $3 > 0.25 {print $1, $2}'

関連情報