Practice makes perfect
文献集锦
如何理论创新?
管理学理论集锦
Python实际应用
聚类标准误与固定效应
巫师3:狂猎
Stata应用技巧
Python知识与技巧
双重差分法(DID)
创新文献阅读与摘要
计量经济学
Python绘图相关
统计数据的唯一观测值数量
type
status
date
slug
summary
tags
category
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'"Prev
绩效反馈研究:如何计算参考值
Next
Stata18的绘图风格变化
Loading...