Skip to content
Back to skills

Data Dictionary

ASecurity

从 Stata .dta 文件自动生成完整代码手册(codebook):变量清单、摘要统计、值标签与缺失情况报告。 Triggers: 帮我生成这个数据集的代码手册、把这个 dta 文件整理成数据字典、这份数据里有哪些变量、帮我看看变量的缺失情况、给这份数据做个 codebook、整理一下变量标签和值标签。

  • 11 stars
  • 0 votes
  • 0 copies
  • 0 views
  • Added October 20, 2026
ai-agentspythongit

Security analysis

A100/100

Pro scans all 2 files and shows the line behind each finding

Scanned October 20, 2026

npx -y skills add EtherealMingo/university-teacher-skills --skill data-dictionary --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Data Dictionary?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Data Dictionary
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/etherealmingo-data-dictionary/badge)](https://www.skillsdirectory.com/skills/etherealmingo-data-dictionary)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: data-dictionary
description: "从 Stata .dta 文件自动生成完整代码手册(codebook):变量清单、摘要统计、值标签与缺失情况报告。 Triggers: 帮我生成这个数据集的代码手册、把这个 dta 文件整理成数据字典、这份数据里有哪些变量、帮我看看变量的缺失情况、给这份数据做个 codebook、整理一下变量标签和值标签。"
---

# 数据字典生成器

*v1.0 —— 从 .dta 文件自动生成完整代码手册*

读取 Stata .dta 文件,产出结构化的 Markdown 数据字典,包含变量名、类型、标签、值标签、摘要统计与缺失情况。输出一份可直接使用的代码手册(codebook)文档。

**参数:** `$ARGUMENTS`
- 某个 .dta 文件的路径,或包含 .dta 文件的目录

**模式**(附加在参数后):
- `summary`(默认)—— 一页总览:变量清单,含类型、标签、缺失情况
- `full` —— 完整代码手册:总览 + 值标签 + 摘要统计 + 关键变量的分布
- `analysis` —— 面向分析:完整版 + 标注哪些变量是结果变量、哪些是控制变量、哪些是指数、哪些是构成项

**标志(Flags):**
- `vars:consumption,assets` —— 只记录匹配这些模式的变量
- `output:path/to/output.md` —— 自定义输出路径(默认:与输入同目录,命名为 `codebook_[文件名].md`)
- `format:md`(默认)| `format:csv` —— 输出格式

示例:`/data-dictionary data/for_analysis/endline_analysis.dta full`
示例:`/data-dictionary . vars:consumption,exp_`
示例:`/data-dictionary data/for_analysis/ summary`

---

## 操作指令

### 第 0 步:定位并加载数据

1. 解析 `$ARGUMENTS` 找到 .dta 文件:
   - 若是文件路径:直接读取该文件
   - 若是目录:在其中 glob 查找 `*.dta` 文件
   - 若是裸名称:在当前工作目录及子目录(`data/`、`data/for_analysis/`、`output/`)中搜索
2. 对包含大量文件的目录(>10 个),生成一个索引页 + 各文件单独的代码手册
3. 从 `$ARGUMENTS` 解析模式与标志。默认 `summary`。

### 第 1 步:提取元数据

编写一个临时 Python 脚本(用 `uv run python` 或 `python3` 运行)。切勿使用 `python -c`。

```python
import pandas as pd
import pyreadstat

df, meta = pyreadstat.read_dta("path/to/file.dta",
                                apply_value_formats=False)

# 可用的元数据:
# meta.column_names          — 变量名(list)
# meta.column_labels          — 变量标签(dict: name -> label)
# meta.variable_value_labels  — 值标签映射(dict: name -> {code: label})
# meta.original_variable_types — Stata 存储类型(dict: name -> type string)
# meta.number_columns         — 数值列个数
# meta.number_rows            — 行数
# meta.file_label              — 数据集标签
# meta.notes                   — 数据集备注
```

对每个变量提取:
- **名称**:列名
- **标签**:取自 `meta.column_labels`(可能为空)
- **类型**:取自 `meta.original_variable_types`(如 `float`、`double`、`byte`、`int`、`long`、`str#`)
- **值标签**:取自 `meta.variable_value_labels`(分类变量的编码映射)
- **非缺失 N**:非空值个数
- **缺失 N**:空值个数
- **缺失 %**:缺失百分比
- **唯一值个数**:nunique

### 第 2 步:摘要统计(full 与 analysis 模式)

对数值变量:
- 均值、标准差、最小值、P25、中位数、P75、最大值
- 标记:通常应为正的变量中出现负值

对字符串变量:
- 唯一值个数
- 频次最高的前 5 个取值及计数
- 最大字符串长度

对二值(0/1)变量:
- 取 1 的比例(附计数)

对分类变量(带值标签的):
- 频数表:编码、标签、计数、百分比

### 第 3 步:变量分类(仅 analysis 模式)

根据命名规律尝试推断变量角色:

| 模式 | 分类 |
|---------|---------------|
| `hhid`、`id`、`*_id` | 标识符 |
| `treat*`、`arm*`、`t_*` | 处理变量 |
| `strat*`、`block*`、`pair*` | 分层变量 |
| `i_*`、`idx_*`、`index_*` | 指数/合成变量 |
| `z_*` | Z 分数 |
| `exp_*`、`cons_*`、`income_*` | 结果变量(经济类) |
| `is_*`、`has_*`、`any_*` | 二值指示变量 |
| `mi_*`、`miss_*` | 缺失标记 |
| `_wins`、`_w`、`_tr` | 缩尾/截尾变量 |
| `bl_*`、`base_*` | 基线变量 |
| `wt_*`、`weight*` | 抽样权重 |

把分类作为建议呈现,而非断言。保留一个"未分类"类别。

### 第 4 步:变量间关系(仅 analysis 模式)

- **指数分解**:对指数变量(i_*、idx_*),识别可能的构成变量并报告相关系数
- **处理组平衡性**:若检测到处理变量,按处理组报告关键变量的均值(前 10 个数值变量)
- **缺失模式**:识别缺失情况相关的变量簇

### 第 5 步:生成输出

**输出位置:**
- 默认:与输入文件同目录,命名为 `codebook_[文件名]_[YYYY-MM-DD].md`
- 可用 `output:` 标志覆盖
- 目录输入时:`codebook_index_[YYYY-MM-DD].md` + 各文件单独的代码手册

把输出文件的完整绝对路径告知用户。

---

## 输出格式 —— Summary 模式

```markdown
# 数据字典:[文件名]

**生成日期:** [YYYY-MM-DD]
**来源:** [完整路径]
**数据集标签:** [meta.file_label,如有]
**观测数:** [N 行]
**变量数:** [N 列]

---

## 变量清单

| # | 变量 | 标签 | 类型 | 非缺失 | 缺失 % | 唯一值 |
|---|----------|-------|------|-------------|-----------|--------|
| 1 | hhid | Household ID | long | 5,000 | 0.0% | 5,000 |
| 2 | treat | Treatment arm | byte | 5,000 | 0.0% | 3 |
| ... | ... | ... | ... | ... | ... | ... |

---

## 无标签变量

[列出所有没有标签的变量 —— 这些可能需要补文档]

---

## 备注

- [N] 个变量完全缺失(0 个非缺失值)
- [N] 个变量缺失率 >50%
- [N] 个分类变量定义了值标签
```

## 输出格式 —— Full 模式

在 summary 基础上增加:

```markdown
---

## 摘要统计 —— 数值变量

| 变量 | N | 均值 | 标准差 | 最小值 | P25 | 中位数 | P75 | 最大值 |
|----------|---|------|-----|-----|-----|--------|-----|-----|
| ... | ... | ... | ... | ... | ... | ... | ... | ... |

---

## 摘要统计 —— 二值变量

| 变量 | 标签 | N | 取 1 比例 | 取 1 计数 |
|----------|-------|---|----------|-----------|
| ... | ... | ... | ... | ... |

---

## 值标签 —— 分类变量

### [变量名]: [标签]

| 编码 | 标签 | 计数 | 百分比 |
|------|-------|-------|---------|
| 0 | Control | 2,500 | 50.0% |
| 1 | Treatment | 2,500 | 50.0% |

[对每个带值标签的分类变量重复]

---

## 字符串变量

| 变量 | 标签 | N | 唯一值 | 最大长度 | 高频取值 |
|----------|-------|---|--------|------------|------------|
| ... | ... | ... | ... | ... | [值1 (N), 值2 (N), ...] |

---

## 高缺失变量(>20%)

| 变量 | 标签 | 缺失 % | 非缺失 N |
|----------|-------|-----------|---------------|
| ... | ... | ... | ... |
```

## 输出格式 —— Analysis 模式

在 full 基础上增加:

```markdown
---

## 变量分类(建议)

### 标识符
| 变量 | 标签 |
|----------|-------|
| hhid | Household ID |

### 处理与分层
| 变量 | 标签 | 取值 |
|----------|-------|--------|
| treat | Treatment arm | 0: Control, 1: Treatment |

### 结果指数
| 变量 | 标签 | 均值 | 标准差 | 可能的构成变量 |
|----------|-------|------|-----|-------------------|
| i_consumption | Consumption index | 0.00 | 1.00 | exp_food, exp_nonfood, ... |

### 结果变量
[表格]

### 控制变量 / 基线
[表格]

### 缺失标记
[表格]

### 未分类
[表格]

---

## 处理组平衡性(前 10 个数值变量)

| 变量 | 对照组均值 | 处理组均值 | 差值 | p 值 |
|----------|-------------|----------------|------|---------|
| ... | ... | ... | ... | ... |
```

---

## 原则

- **全面但可扫读。** 字典既要能当参考文档用(ctrl+F 查某个变量),也要能当速览用(扫一眼汇总表)。
- **元数据优先。** 始终使用 Stata 自带的元数据(标签、值标签、类型),不要凭空推断。仅在元数据缺失时才推断。
- **标记缺口。** 无标签变量、无文档的值标签、高缺失率都值得标记 —— 它们是最可能造成困惑的地方。
- **analysis 模式是建议性的,不是规定性的。** 变量分类基于命名规律,可能有误。以建议形式呈现。
- **可复现。** 输出包含来源路径与生成日期,使人清楚记录的是哪个版本的数据。

---

## 来源与许可

上游 [eabeam/econ-skills](https://github.com/eabeam/econ-skills)(实证经济学研究可复用 AI 技能集,含 econ-audit / data-dictionary / lit-review 三个子技能),许可证见上游仓库,2026-09-10 收录(commit 1b0238d);原文英文,本包译为简体中文。

Files in this skill

  • LICENSE1.2 KB
  • SKILL.md8.9 KB

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.