Sorting 如何使用awk计算第2列的中值,第1列有重复的行?

Sorting 如何使用awk计算第2列的中值,第1列有重复的行?,sorting,awk,multiple-columns,median,Sorting,Awk,Multiple Columns,Median,我有一个如下的文件: 1 , 2.0 1 , 59.0 1 , 0.3 2 , 4.5 2 , 2.3 3 , 15.4 4 , 82.4 4 , 5.7 4 , 9.0 我想找出第2列重复时的中位数,期望输出如下: 1 , 2.0 2 , 3.4 3 , 15.4 4 , 9.0 我如何使用awk和sort来执行此操作?非常感谢 这里是使用awk的一种方法 中位数内容.awk 像这样运行: $awk-f median.awk真正的爱的劳动,+1! BEGIN { FS = OFS = "

我有一个如下的文件:

1 , 2.0
1 , 59.0
1 , 0.3
2 , 4.5
2 , 2.3
3 , 15.4
4 , 82.4
4 , 5.7
4 , 9.0 
我想找出第2列重复时的中位数,期望输出如下:

1 , 2.0
2 , 3.4
3 , 15.4
4 , 9.0

我如何使用awk和sort来执行此操作?非常感谢

这里是使用
awk
的一种方法

中位数内容.awk 像这样运行:
$awk-f median.awk真正的爱的劳动,+1!
BEGIN { FS = OFS = " , " }
function find_med(count, med) {
    if(count == 1) {
        return med[1];
    } 
    else if(count == 2) {
        return ((med[1] + med[2]) / 2);
    } 
    else {
       return med[sprintf("%0.f",((count / 2) + 1))];
    }
}
NR>1 && $1 != seen {
    median = find_med(cnt, total);
    print seen, median;
    delete total;
    cnt = 0
}
{
    seen = $1;
    total[++cnt] = $2;
}
END {
    median = find_med(cnt, total);
    print seen, median;
}
$ awk -f median.awk <(sort -nk1,1 -k2,2 -t',' file)
1 , 2.0
2 , 3.4
3 , 15.4
4 , 9.0