skills/skills.netease.im/sav-column-reorder

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 提供以下功能:

  1. 智能列重排:根据列名中的下划线拆分题目和选项
  2. 分组排序:同一题目的列放在一起,非字符串列在前,字符串列在后
  3. 选项排序:按选项中的数字进行排序
  4. 保留元信息:写回 SAV 文件时保留原始的变量标签、值标签等元数据

脚本说明

主要脚本:scripts/reorder_sav.py

核心功能模块

  1. split_question_option():拆分题目与选项

    • 非字符串列:最后一个下划线前为题目,后为选项
    • 字符串列:倒数第二个下划线前为题目,后为选项
  2. option_sort_key():选项排序键

    • 提取选项中的数字作为主排序键
    • 无数字的选项排在后面
  3. reorder_columns():执行列重排

    • 收集同题列分组
    • 非字符串列在前(按选项排序)
    • 字符串列在后(按选项排序)
    • 保持题组首次出现的位置不变
  4. 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 无下划线保持原位)

Installs
1
First Seen
11 days ago