7.4 把汇总值拆分到明细行
有各年月的水表用水量数据,部分数据如下所示:
另有每年的漏水量统计表如下图所示:
把每年的漏水量按照各年月用水量占当年总用水量的比例,按漏水量分配到各年月的 Water leakage 列(在 D1 中计算):
A | |
---|---|
1 | =E(‘A1:C44’).derive(‘Water leakage’) |
2 | =E(‘Sheet2!A1:B5’) |
3 | =A1.group(Year) |
4 | =A3.run(a=A2.select@1(Year==A3.Year).‘Water leakage’,s=~.sum(Water),~.run(‘Water leakage’=Water*a/s)) |
5 | return A1.new(‘Water leakage’) |
A3 将 A1 数据按照 Year 分组
A4 循环 A3 中的各组,变量 a 是从 A2 中选出对应年份的漏水损失,变量 s 是本年度总的 Water 用水量,然后循环本年度所有行,给 Water leakage 列赋值为:Water*a/s。
A5 返回 A1
第四行 A3.run 这里的 run, 和 select@1 的 @1,我都给删了,结果是一样的
A3.() 循环操作里面的内容,A2 里头,记录本就唯一,所以用不上 @1