【发布时间】:2011-10-01 15:20:42
【问题描述】:
我现在面临一个问题,即用另一列中的值定义的滑动窗口对数值列求和。
(1) 我的数据是制表符分隔的,有两个数字列:
1000 12
2000 10
3000 9
5000 3
9000 5
10000 90
30000 20
31000 32
39000 33
40000 28
(2) 我想将第 2 列与第 1 列定义的窗口相加,窗口大小为(第 1 列 + 3000)。这意味着我需要添加第 3 列(第 3 列 = 总和(第 1 列的行中的第 2 列的所有值到第 1 cloumn+3000))。
看起来像这样:
1000 12 12+10+9
2000 10 10+9+3
3000 9 9
5000 3 3
9000 5 5+90
10000 90 90
30000 20 20+32
31000 32 32
39000 33 33
40000 28
(3) 我是编程新手。我试过 awk,但我失败了。
不知道如何控制第一列的窗口
awk '(i = 1; i
有人可以就这个问题给我任何建议/指导吗?提前致谢。
最好的,
【问题讨论】:
-
我在您的示例数据中只看到一行。也许您可以重新格式化它,使您的样本数据适合您的问题。使用代码括号强制格式化。
-
DavidO,对不起。我不知道什么是代码括号。我试过但失败了。我的数据中有两列(字段)。
-
非常感谢您在编辑帖子时提供的帮助,DavidO。
-
不客气。我仍然不明白你是如何定义你的窗户的。也许您可以添加一个澄清的更新。第一列加 3000 是什么意思?您的第二张表(发布在“看起来像这样:”之后)是您想要的输出吗?它似乎与定义没有任何关系。
-
@DavidO,让
F[1]表示第一列第一行,S[1]表示第二列第一行。他想计算S[A..B]的总和,其中F[B+1]是第一个值大于F[A] + 3000。所以第一行是12+10+9,因为1000 + 3000 = 4000和5000是第一个大于4000的值。