【发布时间】:2016-02-28 12:14:26
【问题描述】:
我有一个以制表符分隔的大型数据表,其中包含数千行和数十列,并且缺少标记为“na”的数据。例如,
na 0.93 na 0 na 0.51
1 1 na 1 na 1
1 1 na 0.97 na 1
0.92 1 na 1 0.01 0.34
我想计算每列的平均值,但要确保在计算中忽略缺失的数据。例如,第 1 列的平均值应为 0.97。我相信我可以使用awk,但我不确定如何构建命令来为所有列执行此操作并解决丢失的数据。
我所知道的只是计算单个列的平均值,但它将丢失的数据视为 0,而不是将其排除在计算之外。
awk '{sum+=$1} END {print sum/NR}' filename
【问题讨论】:
-
有趣!请edit 显示您到目前为止所做的尝试。我想这已经被类似地问过很多次了。
-
... 并在给定输入的情况下添加预期输出。
-
我为一列添加了我知道的代码,但是例如,当在第 1 列上使用时,如果正确忽略丢失的数据,结果应该是 0.97,结果是 0.73
-
而不是除以 NR,而是构建第二个数组(每个字段一个项目,仅在值可用时递增)。
-
我该怎么做?我是
awk的初学者。
标签: linux bash awk mean missing-data