Practice makes perfect
文献集锦
如何理论创新?
管理学理论集锦
Python实际应用
聚类标准误与固定效应
巫师3:狂猎
Stata应用技巧
Python知识与技巧
回归系数的经济意义
双重差分法(DID)
创新文献阅读与摘要
计量经济学
Python绘图相关
遗漏变量偏误检验
统计数据的唯一观测值数量
type
Post
status
Published
date
Jul 28, 2025
slug
summary
tags
category
Stata应用技巧
icon
password
网址
作者
标签
文章链接
发布时间
来源
在基于面板数据的实证研究中,我们时常需要统计某一列数据的唯一值(独特值)数量,例如不同上市公司的总数。通常有以下几种方法:
1. 使用 distinct 命令 (推荐,需要安装)
distinct 命令是用户编写的外部命令,但它非常方便和常用。- 安装
distinct命令 (如果尚未安装):
ssc install distinct- 统计 ID 列的唯一值数量:
distinct id_column_nameStata 会在结果中直接显示
id_column_name 的唯一值数量。2. 使用 codebook 命令
codebook 命令可以为变量提供详细的描述性统计信息,其中就包括独特值的数量。- 统计 ID 列的独特值数量:
codebook id_column_name在输出中,你会看到 "Unique values" 行,后面跟着数量。
3. 使用 egen, tag() 和 count
这是一种更基础但同样有效的方法,不需要安装额外的命令。它利用了
egen 命令的 tag() 函数来标记每个唯一组的第一个观测,然后计算这些标记。- 步骤:
- 标记每个唯一 ID 的第一个观测:
- 计数
tag_id为 1 的观测数量:
egen tag_id = tag(id_column_name)这会创建一个名为
tag_id 的新变量。对于每个 id_column_name 的第一个出现,tag_id 的值为 1;对于同一 ID 的后续出现,其值为 0。count if tag_id == 1count 命令会直接显示满足条件的观测数量,这就是你的独特 ID 数量。- 一步到位 (如果你不需要保留
tag_id变量):
bysort id_column_name: gen byte is_first = (_n == 1)
count if is_first == 1
drop is_first // 如果不再需要这个临时变量这里的
bysort id_column_name: gen byte is_first = (_n == 1) 与 egen tag_id = tag(id_column_name) 的效果类似,都是标记每个组的第一个观测。_n == 1 是在 by 组内判断当前观测是否是该组的第一个观测。选择哪种方法?
- 对于快速查看,
distinct id_column_name或codebook id_column_name是最简单直接的。
- 如果你需要在代码中进一步使用这个数量(例如,保存为宏),那么
egen tag_id = tag(id_column_name)后跟count if tag_id == 1是很好的选择,因为count命令会将结果存储在r(N)中。例如:
egen tag_id = tag(id_column_name)
count if tag_id == 1
local num_unique_ids = r(N)
display "独特ID的数量是: `num_unique_ids'"上一篇
绩效反馈研究:如何计算参考值
下一篇
Stata18的绘图风格变化
Loading...