与NA行的最大值 - UNIX [英] maximum value of a row with NA -- unix

查看:215
本文介绍了与NA行的最大值 - UNIX的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一组的.csv 与已知的一些列包含文件 NA 作为入门以及值。

我想获得的每行的最大值,然后计算所有的最高值的平均值。

输入文件:

 V1,V2,V3
10,15,20
20,NA,5
啦〜啦〜啦
10,5,6


解决方案

最大值:

#显示0 NA行
AWK -F,'NR→1 {α= 0;对于(ⅰ= 1; I&下; = NF;我++)如果($我>一种与放大器;&放大器;!$ I =NA)一个= $ I;打印}'文件
20
20
0
10#显示为无行NA
AWK -F,'NR大于1&放大器;&安培/ [0-9] / {α= 0;对于(ⅰ= 1; I&下; = NF;我++)如果($我>一种与放大器;&放大器;!$ I = NA)a = $ I;打印}'文件
20
20
10

平均:

#计数NA行
AWK -F,'NR→1 {α= 0;对于(ⅰ= 1; I&下; = NF;我++)如果($我>一种与放大器;&放大器;!$ I =NA)一个= $ I; S + =一个;打印} END {打印S /(NR-1)}'文件
20
20
0
10
12.5#忽略NA行
AWK -F,'NR大于1&放大器;&安培/ [0-9] / {α= 0;对于(ⅰ= 1; I&下; = NF;我++)如果($我>一种与放大器;&放大器;!$ I = NA)a = $ I; S + = A; C ++;打印一个} END {打印S / C}'文件
20
20
10
16.6667

I have a set of .csv files with known number of columns that contains NA as entry as well as values.

I would like to get the maximum value of each row and then calculate the average of all the max values.

Input file:

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

解决方案

Maximum values:

# 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

With average:

# 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

这篇关于与NA行的最大值 - UNIX的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆