2016-05-05 5 views
-2

値。最初のファイルのName列にあるすべての名前が2番目のファイルの対応する列にない場合、スコアは0になります。 代わりに、この例のようにスコアが与えられます。は、私は同じフォルダ内に、次の形式でいくつかのCSVファイルを持っている

File1.csv

NameA, ValueA, NumberA, KeyA 

Jack, 10,  9,  12 
Alex, 30,  2,  16 
Mark, 15,  3,  18 

File2.csv

NameB, ValueB, NumberB, KeyB 

Jack, 13,  4,  11 
Alex, 22,  5,  18 
Bill, 67,  6,  20 
Mark 18,  8,  26 

スコア= ABS(11から10)/ 9 + ABS(18から30)/ 2 + ABS(26から15)/ 3

abs(KeyB-ValueA)/ NumberAスコアの合計によって与えられる。ここで、absは減算の絶対値である。

どうすればいいですか?あなたの式に基づいて、すべての

答えて

1

まず、abs(KeyB - ValueA)/NumberA、あなたの代わりに

Score = abs(11 - 10)/9 + abs(18 - 30)/2 + abs(26 - 15)/18 

Score = abs(11 - 10)/9 + abs(18 - 30)/2 + abs(26 - 15)/3 = 9.7778 

を持っている必要がありawkコマンドは、あなたが正しい

 awk -F, 'function abs(x){return ((x < 0.0) ? -x : x)} 
    BEGIN {while (getline < "file1.csv") { f[$1] = $2 ; g[$1] = $3; h[$1] = $4 } } 
    { if (g[$1] != 0) score+= abs($4 - f[$1])/g[$1] } END { print score } ' file2.csv 
+0

することができそれは私の間違いだった!今は正しく書かれています。解決していただきありがとうございます! – user2328149

関連する問題