0

エントリと値.csvを含む既知の列数のファイルのセットがあります。NA

各行の最大値を取得してから、すべての最大値の平均を計算したいと思います。

入力ファイル:

"V1","V2","V3"
10,15,20
20,NA,5
NA,NA,NA
10,5,6
4

2 に答える 2

1

最大値:

# Display 0 for NA rows
awk -F, 'NR>1{a=0;for(i=1;i<=NF;i++)if($i>a&&$i!="NA")a=$i;print a}' file
20
20
0
10

# Display nothing for NA rows 
awk -F, 'NR>1&&/[0-9]/{a=0;for(i=1;i<=NF;i++)if($i>a&&$i!="NA")a=$i;print a}' file
20
20
10

平均で:

# Counting NA rows 
awk -F, 'NR>1{a=0;for(i=1;i<=NF;i++)if($i>a&&$i!="NA")a=$i;s+=a;print a}END{print s/(NR-1)}' file
20
20
0
10
12.5

# Ignoring NA rows
awk -F, 'NR>1&&/[0-9]/{a=0;for(i=1;i<=NF;i++)if($i>a&&$i!="NA")a=$i;s+=a;c++;print a}END{print s/c}' file
20
20
10
16.6667
于 2013-03-01T08:45:53.453 に答える
0
awk '{max=0;for(i=1;i<=NF;i++)if($i!~/NA/&&$i>max){max=$i;}count+=max;print max}END{print count/NR}' your_file

以下でテスト済み:

>cat temp
10 15 20
20 NA 5
NA NA NA
10 5 6
> awk '{max=0;for(i=1;i<=NF;i++)if($i!~/NA/&&$i>max){max=$i;}count+=max;print max}END{print count/NR}' temp
20
20
0
10
12.5
> 
于 2013-03-01T09:14:35.400 に答える