統計分析に使用できるマトリックスにデータを保存します。分析のためには、すべての数値を絶対値に含める必要があります。それ以外の場合、アルゴリズムは失敗します。データサンプルは次のとおりです。
NUMBER SQUARE SQUARE ROOT
-1 1 -1.000
2 -4 -1.414
-3 -9 1.732
-4 -16 2.000
5 25 -2.236
6 -36 -2.449
-7 49 2.646
-8 64 2.828
9 -81 3.000
10 -100 -3.162
-11 121 3.317
-12 -144 -3.464
13 169 3.606
-14 -196 -3.742
この表の数値を絶対値に変換するにはどうすればよいですか?
答え1
sed
次のように使用できます。
sed 's/-//g' file | column -t
awk
次のように使用できます。
awk '{for (i=1; i<=NF; i++) if ($i < 0) $i = -$i; print }' file | column -t
NUMBER SQUARE SQUARE ROOT
1 1 1.000
2 4 1.414
3 9 1.732
4 16 2.000
5 25 2.236
6 36 2.449
7 49 2.646
8 64 2.828
9 81 3.000
10 100 3.162
11 121 3.317
12 144 3.464
13 169 3.606
14 196 3.742
答え2
必要なものがすべての値を正数にすることである場合は、すべてのダッシュを削除します。
$ <infile sed 's/-//g'
NUMBER SQUARE SQUARE ROOT
1 1 1.000
2 4 1.414
3 9 1.732
4 16 2.000
5 25 2.236
6 36 2.449
7 49 2.646
8 64 2.828
9 81 3.000
10 100 3.162
11 121 3.317
12 144 3.464
13 169 3.606
14 196 3.742
良い列に値が必要な場合は、以下を追加してくださいcolumn -t
(ただし、3番目の項目が単語になるようにヘッダー行も変更してくださいSQUARE_ROOT
)。
<infile sed 's/-//g' | column -t
NUMBER SQUARE SQUARE_ROOT
1 1 1.000
2 4 1.414
3 9 1.732
4 16 2.000
5 25 2.236
6 36 2.449
7 49 2.646
8 64 2.828
9 81 3.000
10 100 3.162
11 121 3.317
12 144 3.464
13 169 3.606
14 196 3.742
これはすべてawkを呼び出すことで実行できます。
$ awk 'NR==1;NR!=1{gsub(/-/,"");printf("%5g %8g %11.3f\n",$1,$2,$3)}' infile
NUMBER SQUARE SQUARE_ROOT
1 1 1.000
2 4 1.414
3 9 1.732
4 16 2.000
5 25 2.236
6 36 2.449
7 49 2.646
8 64 2.828
9 81 3.000
10 100 3.162
11 121 3.317
12 144 3.464
13 169 3.606
14 196 3.742