我想从由第四列组织的制表符分隔的数据数组创建一个移动的总和窗口。为简单起见,我用 X 替换了不相关的字段,并添加了第一行中的标题:
ID-Counts X X Start X X Locations XXXX
X-5000 [X] [X] 0 [X] [X] 1 [X...]
X-26 [X] [X] 1 [X] [X] 1 [X...]
X-34 [X] [X] 1 [X] [X] 0 [X...]
X-3 [X] [X] 20 [X] [X] 9 [X...]
X-200 [X] [X] 30 [X] [X] 0 [X...]
X-1 [X] [X] 40 [X] [X] 5 [X...]
第一列包含一个数字 ID 并计算由连字符连接的该 ID。第四列包含我想用来对数据进行分组的所有起始站点。第七列包含我需要标准化计数的位置数。
我想为每一行求和的总价值是通过从 ID 中拆分计数并将它们除以位置数 + 1 来确定的(例如,第一行的值为 2500,第 2 行为 13,第 3 行34)。然后我想将这些计数/(位置 + 1)相加,对于在彼此相距 20 个单位内的第四列中具有值的每一行,从值 0-19 开始,然后是 1-20、2-21 等。例如,窗口 0(范围为 0-19 的四列值)将对第 1-3 行求和,窗口 1 将对第 2-4 行求和,窗口 2 将仅对第 4 行求和,依此类推。
我的理想输出将是两列:第一列有 20unit-window 的开头(0,1,2,...),第二列有每个窗口的总和(在上面的数据 2547、47.3 等)。
我制作了一个 perl 脚本,将数据过滤和组织成这种格式,并希望添加代码以跨 20 个单元窗口求和。作为 perl 新手,我将不胜感激任何帮助和解释。我熟悉跨列的拆分和算术函数,但我完全不知道如何跨数组中的移动窗口执行这些操作。谢谢你。