sav-column-reorder
SKILL.md
SAV 文件列重排 Skill
用于重新排序 SPSS 数据文件(.sav)中的列,按题目分组并智能排序。
Agent 执行指令
当用户触发此 skill 时,Agent 必须执行以下操作:
步骤 1:确认输入文件
- 确认用户已上传 sav 文件
- 获取文件的完整路径
步骤 2:执行重排脚本
运行以下命令:
python3 ~/.openclaw/workspace/skills/sav-column-reorder/scripts/reorder_sav.py <输入文件路径> <输出文件路径>
步骤 3:返回结果
- 将生成的输出文件发送给用户
- 报告处理摘要(原始列数、重排后顺序等)
功能概述
本 skill 提供以下功能:
- 智能列重排:根据列名中的下划线拆分题目和选项
- 分组排序:同一题目的列放在一起,非字符串列在前,字符串列在后
- 选项排序:按选项中的数字进行排序
- 保留元信息:写回 SAV 文件时保留原始的变量标签、值标签等元数据
脚本说明
主要脚本:scripts/reorder_sav.py
核心功能模块
-
split_question_option():拆分题目与选项
- 非字符串列:最后一个下划线前为题目,后为选项
- 字符串列:倒数第二个下划线前为题目,后为选项
-
option_sort_key():选项排序键
- 提取选项中的数字作为主排序键
- 无数字的选项排在后面
-
reorder_columns():执行列重排
- 收集同题列分组
- 非字符串列在前(按选项排序)
- 字符串列在后(按选项排序)
- 保持题组首次出现的位置不变
-
build_write_kwargs():兼容处理
- 适配不同 pyreadstat 版本的元信息字段
- 只传入 write_sav 支持的参数
依赖要求
- Python 3.7+
- pyreadstat
- pandas
安装依赖:
pip install pyreadstat pandas
输入文件要求
为确保最佳效果,输入的 sav 文件应符合以下命名规范:
- 列名使用下划线分隔题目和选项
- 例如:
Q1_1,Q1_2,Q1_99(非字符串列) - 例如:
Q2_1_1,Q2_1_2(字符串列,倒数第二个下划线分隔)
故障排除
问题:pyreadstat 安装失败
解决:确保系统已安装 C++ 编译器,或使用预编译包:
pip install --only-binary :all: pyreadstat
问题:某些列没有被重排
解决:检查列名是否包含下划线,无下划线的列不参与排序
问题:元信息丢失
解决:确保使用支持的 pyreadstat 版本(1.0+)
命令行使用方式
用户也可以直接通过命令行使用:
python scripts/reorder_sav.py input.sav output.sav
示例
输入文件列顺序:
Q1_2, Q1_1, Q1_10, Q2_1_2, Q2_1_1, ID
输出文件列顺序:
Q1_1, Q1_2, Q1_10, Q2_1_1, Q2_1_2, ID
(Q1 的题目按选项数字排序,Q2 的字符串列按选项排序,ID 无下划线保持原位)