Stata编程:_n 和 _N 有啥区别?

发布时间:2022-09-04 阅读 1730

Stata连享会   主页 || 视频 || 推文 || 知乎 || Bilibili 站

温馨提示: 定期 清理浏览器缓存,可以获得最佳浏览体验。

New! lianxh 命令发布了:
随时搜索推文、Stata 资源。安装:
. ssc install lianxh
详情参见帮助文件 (有惊喜):
. help lianxh
连享会新命令:cnssc, ihelp, rdbalance, gitee, installpkg

课程详情 https://gitee.com/lianxh/Course

课程主页 https://gitee.com/lianxh/Course

⛳ Stata 系列推文:

PDF下载 - 推文合集

作者:梁淑珍 (华侨大学)
邮箱13514084150@163.com


目录


1. 引言

_n_N 还傻傻分不清?这是 Stata 初学者经常面临的一个问题。灵活使用 _n_N 能够解决数据处理过程中一些棘手的问题。为此,本文将详细梳理二者间的区别和使用场景。

2. 系统变量

所谓系统变量是指 Stata 自带并更新的变量,其形式为 _variables_n_N 是常见的两个系统变量,其中 _n 为当前数据集中观测值的编号,_N 为当前数据集中观测值的总数或数据集分组后的各组观测值的总数。常见的系统变量还有:

  • _b[varname]:某变量的回归系数;
  • _se[varname]:某变量的标准误;
  • _cons:截距项系数;
  • _pi:圆周率 π;
  • _rc:执行 capture 命令后的返回值。

3. 显式索引

在实际操作中,可以通过索引的方式引用某个变量的观测值,具体做法是在变量名后加一对方括号,并在方括号中输入位置参数。

. * 生产变量 x,并赋值 1-10
. clear 
. set obs 10
. gen x = _n

. * 生成变量 y1,y1 所有观测值为 x 的第 1 行观测值
. gen y1 = x[1]
. * 生成变量 y2,y2 所有观测值为 x 的第 2 行观测值
. gen y2 = x[2]

. list, noobs
  +--------------+
  |  x   y1   y2 |
  |--------------|
  |  1    1    2 |
  |  2    1    2 |
  |  3    1    2 |
  |  4    1    2 |
  |  5    1    2 |
  |--------------|
  |  6    1    2 |
  |  7    1    2 |
  |  8    1    2 |
  |  9    1    2 |
  | 10    1    2 |
  +--------------+

4. 分组索引

_n_N 除了适用于整个数据集外,还适用于分组后的数据集。

. clear 
. input id oldvar
. bys id: gen small_n=_n
. bys id: gen big =_N
. bys id: gen newvar=oldvar[1]
. list, noobs

  +--------------------------------------+
  | id   oldvar   small_n   big   newvar |
  |--------------------------------------|
  |  1      1.1         1     3      1.1 |
  |  1      2.1         2     3      1.1 |
  |  1      3.1         3     3      1.1 |
  |  2      4.1         1     2      4.1 |
  |  2      5.1         2     2      4.1 |
  +--------------------------------------+

此时数据集被分为两组,观测值 1-3 为一组,4 和 5为一组。_n 返回的是分组后各观测值的组内位置编号,_N 返回的是分组后组内观测值总数,oldvar[1] 引用的是分组后组内的第 1 个观测值。分组索引的应用常见于面板数据,具体在在实证中通常是以公司和年份作为分组变量进行一系列操作。

5. 分组求和/均值

导入 auto 数据集,计算国内和国外的汽车平均价格。

. sysuse auto, clear
. * 法一
. bys foreign: gen avgx1 = sum(price) / _n
. bys foreign: replace avgx1 = avgx1[_N]
. * 法二
. bys foreign: egen avgx2 = mean(price)

6. 相关推文

Note:产生如下推文列表的 Stata 命令为:
lianxh 程序 编程, m
安装最新版 lianxh 命令:
ssc install lianxh, replace

相关课程

免费公开课

最新课程-直播课

专题 嘉宾 直播/回看视频
最新专题 文本分析、机器学习、效率专题、生存分析等
研究设计 连玉君 我的特斯拉-实证研究设计-幻灯片-
面板模型 连玉君 动态面板模型-幻灯片-
面板模型 连玉君 直击面板数据模型 [免费公开课,2小时]
  • Note: 部分课程的资料,PPT 等可以前往 连享会-直播课 主页查看,下载。

课程主页

课程主页

关于我们

  • Stata连享会 由中山大学连玉君老师团队创办,定期分享实证分析经验。
  • 连享会-主页知乎专栏,700+ 推文,实证分析不再抓狂。直播间 有很多视频课程,可以随时观看。
  • 公众号关键词搜索/回复 功能已经上线。大家可以在公众号左下角点击键盘图标,输入简要关键词,以便快速呈现历史推文,获取工具软件和数据下载。常见关键词:课程, 直播, 视频, 客服, 模型设定, 研究设计, stata, plus, 绘图, 编程, 面板, 论文重现, 可视化, RDD, DID, PSM, 合成控制法

连享会小程序:扫一扫,看推文,看视频……

扫码加入连享会微信群,提问交流更方便

✏ 连享会-常见问题解答:
https://gitee.com/lianxh/Course/wikis

New! lianxhsongbl 命令发布了:
随时搜索连享会推文、Stata 资源,安装命令如下:
. ssc install lianxh
使用详情参见帮助文件 (有惊喜):
. help lianxh