Stata数据处理:快速合并与编码-encodefrom

发布时间:2021-10-30 阅读 5338

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下载 - 推文合集

作者:左祥太 (武汉纺织大学)
邮箱Shutter_Z@outlook.com


目录


1. encodefrom 命令

1.1 命令的基本功能

encodefrom 命令可以利用一个存储在外部文件夹中的值和标签对变量进行编码。将原始值与对应数据值的映射关系以虚拟变量形式存储在当前数据文件中,有助于用户在不同的数据集之间对齐代码。比如,当我们同时拥有很多公司的基本信息,但需要将其与股票代码进行一一对应,除了通过 merge 合并,我们也可以通过 encodefrom 来进行处理,后文将对比两者的不同。

1.2 命令的基本语法

*命令安装
ssc install encodefrom, replace
*-或
cnssc install encodefrom, replace

encodefrom 命令的基本格式如下:

*命令语法
 encodefrom varname using filename, filetype(string) raw(string) clean(string) label(string) [options]
  • varname:表示当前工作表中的某一变量名称;
  • filename:表示需要使用的文件名称;
  • filetype:用于指定文件的类型,可选参数有 excel、delimited (csv格式)、Stata;
  • raw:指定文件当中与 varname 内容一致的变量 (区别于 merge,变量名可不同);
  • clean:表示指定文件中与 varname 相对应的数字编码;
  • label:该选项应当与 varname 保持一致。

2. Stata实例

2.1 实例背景

假设我们拥有两份数据,一份是 sample_data_encodefrom (样本数据),另一份是 codes_encodefrom (编码表) ,数据基本情况如下:

. cnssc install lxhuse, replace
. cnssc install lxhget, replace
. lxhuse sample_data_encodefrom.dta, clear
. list in 1/5, noobs
  +------------------------------------------------------+
  | fips   state   age      pop     popm     popf   year |
  |------------------------------------------------------|
  |    1      AL    10    61743    31570    30173   1989 |
  |    2      AK    10     9521     4945     4576   1989 |
  |    4      AZ    10    53062    27152    25910   1989 |
  |    5      AR    10    35826    18498    17328   1989 |
  |    6      CA    10   404054   207592   196462   1989 |
  +------------------------------------------------------+

. lxhget codes_encodefrom.xlsx, replace
. import excel using codes_encodefrom.xlsx, firstrow clear
. list in 1/5, noobs
  +----------------------------------+
  | FIPS_c~e         name   abbrev~n |
  |----------------------------------|
  |        1      Alabama         AL |
  |        2       Alaska         AK |
  |        4      Arizona         AZ |
  |        5     Arkansas         AR |
  |        6   California         CA |
  +----------------------------------+

我们需要做的就是将 sample_data_encodefrom 中变量 state 下的简称变成 codes_encodefrom 文件中的全程,并且将 FIPS_code 映射入这个变量。

2.2 encodefrom 实现

我们先来观察 sample_data_encodefrom 中的数据样式:

在已经了解数据的基础内容之后,便可以着手通过 encodefrom 实现转换,操作方式如下:

. lxhuse sample_data_encodefrom.dta, clear
. encodefrom state using "./codes_encodefrom.xlsx", filetype(excel) ///
>     sheet(state) raw(abbreviation) clean(FIPS_code) label(name)   ///
>     label_name(state) allow_missing //allow_missing 表示允许存在缺失值

               state |      Freq.     Percent        Cum.
---------------------+-----------------------------------
             Alabama |         10        1.96        1.96
              Alaska |         10        1.96        3.92
             Arizona |         10        1.96        5.88
            Arkansas |         10        1.96        7.84
              ...省略
       West Virginia |         10        1.96       96.08
           Wisconsin |         10        1.96       98.04
             Wyoming |         10        1.96      100.00
---------------------+-----------------------------------
               Total |        510      100.00

此时再次观察 sample_data_encodefrom 中的数据样式:

不难发现,仅仅通过一条命令便实现了变量的合并与映射关系转换。

2.3 常规方法实现

思路大致如下,我们需要先通过州的简称合并州的全称,然后为州的全称重复编码。

. import excel using codes_encodefrom.xlsx, firstrow clear
. rename abbreviation state
. save codes_encodefrom.dta, replace
. lxhuse sample_data_encodefrom.dta, clear
. merge m:1 state using codes_encodefrom

. *对合并成功的 name 变量进行编码
. *recode FIPS_code (0 = United States) (1 = Alabama) ...... // 此处省略 n 对

可以发现虽然合并之后也可以直接通过 FIPS_code 来进行固定效应的控制,但是在回归后寻找对应关系时还是较为繁琐的,可以说 encodefrom 命令的出现极大地简化了我们的工作。

3. 相关推文

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