7.25 CrossApply 运算
遍历多个数据文件,对序表及序列值进行 Cross Apply 运算生成新序表。
遍历文件夹中存储的所有某小学在线教学终端调查表,统计各种终端占比。
ID | STUDENT_NAME | TERMINAL |
---|---|---|
1 | Rebecca Moore | Phone |
2 | Ashley Wilson | Phone,PC,Pad |
3 | Rachel Johnson | Phone,PC,Pad |
4 | Emily Smith | Phone,Pad |
5 | Ashley Smith | Phone,PC |
6 | Matthew Johnson | Phone |
7 | Alexis Smith | Phone,PC |
8 | Megan Wilson | Phone,PC,Pad |
… | … | … |
使用 A.news() 函数对序表与拆分后的终端序列进行 Cross Apply 运算。
脚本:
A | B | ||
---|---|---|---|
1 | =directory@ps(“D:/Primary School”) | ||
2 | for A1 | =T(A2) | |
3 | =@+=B2.len() | ||
4 | =B2.news(B2.TERMINAL.split@c(); ID, STUDENT_NAME, ~:TERMINAL) | ||
5 | =B4.groups(TERMINAL; count(~):Count) | @ | |
6 | =B5.groups(TERMINAL;string(sum(Count)/B3, “#.##%”):PERCENTAGE) |
A1 递归遍历目录,列出所有文件
B2 循环导入各年级各班的问卷 excel 文件
B3 统计总行数,即总人数
B4 使用 news 函数将问卷表与拆分后的终端序列进行 Cross Apply 运算
B5 分组汇总各终端的数量,结果合并到本格。如果合并 B4 的结果可能导致内存不足。
A6 对每个班的统计结果再分组汇总
运行结果:
TERMINAL | PERCENTAGE |
---|---|
PC | 70% |
Pad | 56.67% |
Phone | 93.33% |