【发布时间】:2017-01-29 13:55:23
【问题描述】:
编辑
我读到这个问题应该是 (this one) 的副本。我不同意。在该问题中,目的是获得列中各个数字的频率。但是,如果我将该解决方案应用于我的问题,我仍然会遇到将特定范围内的数字频率分组到最终直方图中的初始问题。即,如果该解决方案告诉我0.45 的频率是2 和0.44 是1(对于我的输入数据),我仍然存在将这两个频率分组为@ 总数的问题987654328@ 用于范围 0.4-0.5。
结束编辑
问题-
我有一长列数据,其值介于 0 和 1 之间。 这将是类型-
0.34
0.45
0.44
0.12
0.45
0.98
.
.
.
允许重复的一长列十进制值。
我正在尝试将其更改为直方图类型的输出,例如(对于上面显示的输入)-
0.0-0.1 0
0.1-0.2 1
0.2-0.3 0
0.3-0.4 1
0.4-0.5 3
0.5-0.6 0
0.6-0.7 0
0.7-0.8 0
0.8-0.9 0
0.9-1.0 1
基本上,第一列包含每个范围的下限和上限,第二列包含该范围内的条目数。
我把它(糟糕地)写成——
for i in $(seq 0 0.1 0.9)
do
awk -v var=$i '{if ($1 > var && $1 < var+0.1 ) print $1}' input | wc -l;
done
它基本上对它在每个范围内找到的条目进行wc -l。
输出格式不是问题的一部分。如果我只是得到与不同 bin 相对应的频率,那就足够了。另请注意,bin 大小应该是我提出的解决方案中的变量。
我已经阅读了this 的答案并希望避免循环。我确信awk 中有一种更快的方法可以绕过for 循环。你能帮帮我吗?
【问题讨论】:
-
@triplee 查看我的编辑。
-
@NeilMcGuigan,您链接的问题以“正确分类数据”开头。我的问题与我将如何首先创建垃圾箱有关。
-
@VarunM 你能告诉我我的答案有什么问题吗...如果你需要我可以改进它...