我有一个包含许多缺失值的数据集,例如9990,9999,9999000,999999等等。但所有都超过9990.我想取每24个值的平均值。我正在尝试使用以下命令,但没有得到我的愿望输出。
awk '{if ($1 < 9990) sum += $1; count++} NR%24==0{print count ? (sum) :9999;sum=count=0}'ifile
例如:我需要在以下数据中平均每3行
3
3
4
9999
4
99990
13
3
999999
9999
9991
99954
我尝试了这个,但显示了不同的结果:
awk '{if ($1 < 9990)sum += $1; count++} NR%3==0{print count ? (sum/count) :9999;sum=count=0}'ifile
我的愿望输出是
3.33
4 Average of 9999 4 99990 is done with 4/1. Because 9999 and 99990 are undefined values.
8 Average of 13 3 999999 is done with (13+8)/2. Because 999999 is an undefined value, so excluded from the average.
9999 All are undefined values, so denoted as 9999.
答案 0 :(得分:2)
$1 < 9990 {
sum += $1;
count++;
}
NR % 3 == 0 {
if (count == 0) {
print "9999";
} else {
print sum / count;
}
sum = 0;
count = 0;
}
当值为“未定义”时,您的错误是增加count
。如果你写
{if ($1 < 9990) sum += $1; count++}
然后if
语句在下一个分号结束,而不是在结束括号。