桶中的awk直方图

桶中的awk直方图,awk,grouping,Awk,Grouping,假设我有以下文件 1 a 1 b 1 a 1 c 1 a 2 a 2 d 2 a 2 d 我想要一个桶里的柱状图。。。例如,如果铲斗为1,则输出将为 a 3 b 1 c 1 a 2 d 2 对于bucket 2。。。我们有 a 5 b 1 c 1 d 2 我想用awk做这件事,我真的卡住了。。。 这是我的密码: awk ' {A[$1]} count [$2]++ {for(i in A) {print i,A[i]} }' test 有什么帮助吗 谢谢 Ami

假设我有以下文件

1 a
1 b
1 a
1 c
1 a
2 a
2 d
2 a
2 d
我想要一个桶里的柱状图。。。例如,如果铲斗为1,则输出将为

a 3
b 1
c 1
a 2
d 2
对于bucket 2。。。我们有

a 5
b 1
c 1
d 2
我想用awk做这件事,我真的卡住了。。。 这是我的密码:

awk '
    {A[$1]} count [$2]++ 
    {for(i in A) {print i,A[i]}
    }' test
有什么帮助吗

谢谢


Amir.

编辑添加桶变量的大小

awk -v "size_of_bucket=2" '
  {
    bucket = int(($1-1)/size_of_bucket);
    A[bucket","$2]++;
  }
  END {
    for (i in A) {
      print i, A[i];
    }
  }
'

编辑添加桶变量的大小

awk -v "size_of_bucket=2" '
  {
    bucket = int(($1-1)/size_of_bucket);
    A[bucket","$2]++;
  }
  END {
    for (i in A) {
      print i, A[i];
    }
  }
'

非常感谢你。。。这实际上适用于1的时间窗口。不,我需要弄清楚如何滑动不同大小的时间窗。。。(如果第一列是时间,则为数字)正常。我添加了一个bucket变量的大小,您可以对其进行调整。如果我的回答对你有帮助,别忘了接受。它是正确的。。但是如果你想有一个滑动窗口,你应该这样做。。对于窗口大小3,这是正确的。。但是如果你想有一个滑动窗口,你应该这样做。。对于大小为3的窗口,awk'开始{A[“”]=0;}{A[$1”“$2]++;A[$1-1”“$2]++;A[$1-2”“$2]+;}结束{for(i in A){if(i!=”{print i,A[i];}'再次感谢您的帮助我将bucket size变量移到了awk选项并删除了BEGIN块--您不需要预定义数组,只需开始使用它即可。非常感谢您。。。这实际上适用于1的时间窗口。不,我需要弄清楚如何滑动不同大小的时间窗。。。(如果第一列是时间,则为数字)正常。我添加了一个bucket变量的大小,您可以对其进行调整。如果我的回答对你有帮助,别忘了接受。它是正确的。。但是如果你想有一个滑动窗口,你应该这样做。。对于窗口大小3,这是正确的。。但是如果你想有一个滑动窗口,你应该这样做。。对于大小为3的窗口,awk'开始{A[“”]=0;}{A[$1”“$2]++;A[$1-1”“$2]++;A[$1-2”“$2]+;}结束{for(i in A){if(i!=”{print i,A[i];}再次感谢您的帮助我将bucket size变量移到了awk选项并删除了BEGIN块--您不需要预定义数组,只需开始使用它即可。