计算风速变化的awk程序
我已将以下文件格式化为如下所示的格式-计算风速变化的awk程序,awk,gawk,Awk,Gawk,我已将以下文件格式化为如下所示的格式- DATA THROUGH 2001 YRS JAN FEB MAR APR MAY JUN JUL AUG SEP OCT NOV DEC ANN BIRMINGHAM AL 58 8.1 8.7 9.0 8.2 6.8 6.0 5.7 5.4 6.3 6.2 7.2 7.7 7.1 HUNTSVILLE AL 34 9.1 9.4 9.8 9.2 7.9 6.9 6.1 5.8 6.7 7.3 8.1 9.0 7.9 MOBILE AL
DATA THROUGH 2001 YRS JAN FEB MAR APR MAY JUN JUL AUG SEP OCT NOV DEC ANN
BIRMINGHAM AL 58 8.1 8.7 9.0 8.2 6.8 6.0 5.7 5.4 6.3 6.2 7.2 7.7 7.1
HUNTSVILLE AL 34 9.1 9.4 9.8 9.2 7.9 6.9 6.1 5.8 6.7 7.3 8.1 9.0 7.9
MOBILE AL 53 10.1 10.3 10.7 10.1 8.7 7.5 6.9 6.7 7.7 8.0 8.9 9.6 8.8
MONTGOMERY AL 57 7.7 8.2 8.3 7.3 6.1 5.8 5.7 5.2 5.9 5.7 6.5 7.1 6.6
ANCHORAGE AK 48 6.4 6.8 7.1 7.3 8.5 8.4 7.3 6.9 6.7 6.7 6.4 6.3 7.1
ANNETTE AK 37 11.7 11.9 10.6 10.7 9.0 8.5 7.8 8.1 8.9 11.4 11.8 12.0 10.2
BARROW AK 68 11.9 11.3 11.3 11.5 12.0 11.5 11.7 12.4 13.2 13.3 12.4 11.7 12.0
BARTER IS. AK 33 15.1 14.4 13.7 12.0 12.7 11.6 10.9 11.8 13.2 14.8 14.9 13.9 13.2
BETHEL AK 43 14.5 14.8 13.8 12.9 11.5 11.0 10.7 11.0 11.6 12.3 13.2 13.7 12.6
BETTLES AK 26 5.9 6.3 7.1 7.5 7.2 6.8 6.6 6.2 6.4 6.4 5.8 5.7 6.5
我需要计算每个州的方差,除了由AK表示的阿拉斯加。
方差公式为:nƩ(x^2)-(x^2)/n(n-1)
我现在只有一些类似于
BEGIN {FS ="\t"} {if ($2 != "AK")
{
sum1 = sum1 + ($4)^2
sum2 = sum2 + $4
n = n+1
if($2 != "AK")
{
sum1 = sum1 * n;
sum3 = sum1 - (sum2)^2
sum3 = sum3 / (n*(n-1));
}
}} END {}
BEGIN {FS ="\t"} {if ($2 != "AK")
{
sum1 = sum1 * n;
sum3 = sum1 - (sum2)^2
sum3 = sum3 / (n*(n-1));
}}
END {print "average " sum3}
我得到一个零误差除法
我对如何计算这个公式缺乏想法。任何关于分解代码的建议-寻找模式和/或完整的代码将不胜感激 当状态为非AK时,这将对第10列的平方进行求和。然后使用你的公式
BEGIN {
FS = "\t";
n = 0;
}
{
if($2 != "AK") {
x[n] = $10 * $10;
n++;
}
}
END {
sum = 0;
for(i = 0; i < n; i++)
sum += x[i];
print (n*sum - sum) / (n * (n-1));
}
开始{
FS=“\t”;
n=0;
}
{
如果($2!=“AK”){
x[n]=$10*$10;
n++;
}
}
结束{
总和=0;
对于(i=0;i
当状态为非AK时,对第10列的平方进行求和。然后使用你的公式
BEGIN {
FS = "\t";
n = 0;
}
{
if($2 != "AK") {
x[n] = $10 * $10;
n++;
}
}
END {
sum = 0;
for(i = 0; i < n; i++)
sum += x[i];
print (n*sum - sum) / (n * (n-1));
}
开始{
FS=“\t”;
n=0;
}
{
如果($2!=“AK”){
x[n]=$10*$10;
n++;
}
}
结束{
总和=0;
对于(i=0;i
列数是固定的还是可变的?为什么要用awk来计算?我不明白你想计算什么。你能解释清楚一点吗?你想要每个城市一年内的差异吗?你想要一年中某个州每个城市的平均方差吗?你想知道某个州每个月的方差吗?@Jay-我想对6月1日的所有记录风速进行方差样本分析(ANOVA)-除阿拉斯加(AK)外的所有州--标准公式计算平均偏差的平方和除以n-1,其中n是样本数。您的代码被复制,在第二个版本中,n
从不增加,因此它始终为0。列数是固定的还是可变的?为什么要使用awk?我不明白您想做什么算计。你能解释清楚一点吗?你想要每个城市一年内的差异吗?你想要一年中某个州每个城市的平均方差吗?你想知道某个州每个月的方差吗?@Jay-我想对6月1日的所有记录风速进行方差样本分析(ANOVA)-除阿拉斯加(AK)外的所有州-标准公式计算平均偏差的平方和除以n-1,其中n是重复代码的样本数,在第二个版本中,n
从不递增,因此始终为0。