查看原文
其他

ereplace命令介绍

连享会 连享会 2023-10-24

👇 连享会 · 推文导航 | www.lianxh.cn

连享会 · 因果推断实用计量方法

作者: 方森辉 (南开大学)
邮箱: nkfangsenhui@163.com


目录

  • 1. 引言

  • 2. `ereplace` 命令介绍

    • 2.1 安装

    • 2.2 命令简介

  • 3. 实例

    • 3.1 `replace`和`ereplace`使用对比

    • 3.2 分组替换变量内容

  • 4. 结语

  • 5. 相关推文



温馨提示: 文中链接在微信中无法生效。请点击底部「阅读原文」。或直接长按/扫描如下二维码,直达原文:

1. 引言

在使用 Stata 进行数据处理时,我们往往不仅需要生成新的变量,还需要替换原有变量。对于一些简单的变量替换过程,一般我们采用 Stata 的官方命令 replace 命令。不过,在特定情况下,采用外部命令 ereplace 将事半功倍。

2. ereplace 命令介绍

2.1 安装

关于该命令的安装,我们既可以使用 Stata 的官方命令 ssc install ,也可以使用连享会最新推出的 cnssc install 命令。如果使用 cnssc 的话,大家需要事先安装好该命令。与 ssc install 不同的是,cnssc 安装 packages 时是访问对应的国内镜像,因此安装速度要快上不少。与此同时,使用 cnssc 命令安装 ereplace 命令后,将提示是否下载案例数据集 e_example.dta,默认下载该数据集到 Stata 安装目录下。

Stata 中安装上述命令可使用如下代码:

* 使用ssc安装ereplace命令
ssc inst ereplace //install可以简写为inst

* 安装cnssc命令
ssc inst cnssc

* 使用cnssc安装ereplace命令
cnssc inst ereplace //连享会新命令:cnssc=cn+ssc

checking ereplace consistency and verifying not already installed...
all files already exist and are up to date.
help ereplace
Note: 1 ancillary files found, view get
//点击view get按钮将默认下载该数据集到 Stata 安装目录下

安装完毕后,可以使用 ssc des ereplace 命令查看命令简介、版本和作者信息:

* 使用ssc des查看ereplace命令
. ssc des ereplace

---------------------------------------------------------------------------
package ereplace from http://fmwww.bc.edu/repec/bocode/e
---------------------------------------------------------------------------

TITLE
'EREPLACE': module to extend egen and egenmore to permit replacing

DESCRIPTION/AUTHOR(S)

ereplace extends the popular egen and egenmore (if installed)
modules to permit replacing. ereplace replaces varname of the
optionally specified storage type [type] equal to
fcn(arguments). Depending on fcn(), arguments refers to an
expression, a varlist, a numlist, or an empty string. The
options are similarly function dependent.

KW: data management
KW: egen
KW: replace

Requires: Stata version 6

Distribution-Date: 20200511

Author: Nicholas J. Cox, Durham University
Support: email N.J.Cox@durham.ac.uk

Author: Chris Larkin, The Behavioural Insights Team
Support: email chris.larkin@bi.team


INSTALLATION FILES (type net install ereplace)
ereplace.ado
ereplace.sthlp

ANCILLARY FILES (type net get ereplace)
e_example.dta
----------------------------------------------------------------------------
(type ssc install ereplace to install)

2.2 命令简介

安装好 ereplace 命令后,我们可以输入 help ereplace ,查看 ereplace 的帮助文档。

. ereplace [type] varname = fcn(arguments) [if exp] [in range] [, options]
  • type:变量类型,即变量在Stata中的存储格式,涉及数值型变量(byte、int、long、float、double)和文字型变量(str1、str2、…、str2045)两大类
  • varnameereplace 命令执行后被替换的变量名称
  • fcn:运算类型,涉及 count、diff、group、mad、max、mdev、mean、median、min、mode、seq、std、tag、total 等,具体也可参见 help egenhelp egenmore
  • arguments:ereplace命令执行涉及的变量命令
  • 该命令还可搭配 ifin 等条件语句,以及对于部分运算类型(fcn)可以添加其他选项(option)

3. 实例

以下将介绍几个实例来加深对ereplace命令的了解。

3.1 replaceereplace使用对比

首先,我们对比replaceereplace对相同问题的差异化处理,展现其强大之处,如保留文字型变量strvar中的特定字符串(1、3、7、S、H)。

3.1.1 设置工作目录

global path "C:\Users\FSH\Desktop\Input"             
cd "$path"                                           //设置工作目录

3.1.2 方法1:搭配使用replaceforvalueusubstr

* 以下代码局部暂元`max_len'被多处使用,自出现局部暂元`max_len'时需要一次选中运行
. net get ereplace // 下载数据到当前工作路径
. use e_example, clear //导入数据
. des strvar //观察变量strvar的存储格式
. gen len=ulength(strvar) //计算文字变量长度
. sum len
. loc max_len=r(max) //设置拆分字段数量

forv i=1/`max_len'{
//将strvar变量拆分成单个字符形成的变量
gen strvar`i'= usubstr(strvar,`i',1)
}

forv i=1/`max_len'{
//除了特定字符串之外其他字符全部替换为空值
replace strvar`i'="" if strvar`i'!="1" & strvar`i'!="3" & strvar`i'!="7" & strvar`i'!="S" & strvar`i'!="H"
}
replace strvar=""
forv i=1/`max_len'{
//将特定字符串合并为变量strvar,以实现保留特定字符串的目标
replace strvar=strvar+strvar`i'
}
drop strvar1-strvar`max_len' //删除多余的变量
list if _n<=10, clean //展示结果

strvar seqid percent blockid outcome treat len
1. H13 41 13 1 0 0 11
2. 33737 94 86 4 0 0 12
3. H733 26 37 1 0 0 11
4. S71 71 36 3 0 0 11
5. H3717 11 0 1 0 0 12
6. S773 84 99 3 0 0 11
7. 31 48 19 2 0 0 13
8. H177 38 34 1 0 0 9
9. H1 13 65 1 0 0 9
10. 3 52 37 2 0 0 13

3.1.3 方法2:直接使用ereplace

use e_example, clear                                //导入数据
ereplace strvar = sieve(strvar), char(137SH)        //保留特定字符串
list if _n<=10, clean                               //展示结果

       strvar   seqid   percent   blockid   outcome   treat  
  1.      H13      41        13         1         0       0  
  2.    33737      94        86         4         0       0  
  3.     H733      26        37         1         0       0  
  4.      S71      71        36         3         0       0  
  5.    H3717      11         0         1         0       0  
  6.     S773      84        99         3         0       0  
  7.       31      48        19         2         0       0  
  8.     H177      38        34         1         0       0  
  9.       H1      13        65         1         0       0  
 10.        3      52        37         2         0       0  

3.2 分组替换变量内容

接下来,我们将搭配使用replaceegen与直接使用ereplace命令的效果进行对比。使用到的其他外部命令:egen

3.2.1 设置工作目录

global path "C:\Users\FSH\Desktop\Input"             
cd "$path"                                           //设置工作目录

3.2.2 方法1:搭配使用replaceegen

use e_example, clear //导入数据集
sort seqid //按照样本ID顺序排列样本
des //观察样本集的指标情况
egen mean_percent = mean(percent) //求percent变量的全样本均值
list seqid mean_percent percent if _n <= 20, clean //显示前20个样本

seqid mean_p~t percent
1. 1 54.81 81
2. 2 54.81 88
3. 3 54.81 3
4. 4 54.81 18
5. 5 54.81 58
6. 6 54.81 41
7. 7 54.81 62
8. 8 54.81 17
9. 9 54.81 36
10. 10 54.81 13
11. 11 54.81 0
12. 12 54.81 26
13. 13 54.81 65
14. 14 54.81 93
15. 15 54.81 82
16. 16 54.81 92
17. 17 54.81 75
18. 18 54.81 52
19. 19 54.81 40
20. 20 54.81 87

drop mean_percent //删除mean_percent变量

//重新生成mean_percent变量,求percent变量按blockid分组的组内均值
egen mean_percent = mean(percent), by(blockid)
sort blockid seqid //确保每次展示数据的样本序一致
by blockid: gen count = _n //按组对样本编号
list seqid mean_percent percent if count <= 5, clean

seqid mean_pe~t percent
1. 1 53.906977 81
2. 2 53.906977 88
3. 3 53.906977 3
4. 4 53.906977 18
5. 5 53.906977 58
44. 44 51.111111 93
45. 45 51.111111 71
46. 46 51.111111 18
47. 47 51.111111 45
48. 48 51.111111 19
62. 62 55.09375 65
63. 63 55.09375 91
64. 64 55.09375 68
65. 65 55.09375 86
66. 66 55.09375 6
94. 94 68.571429 86
95. 95 68.571429 93
96. 96 68.571429 32
97. 97 68.571429 16
98. 98 68.571429 96

3.2.3 方法2:直接使用ereplace

use e_example, clear //导入数据集
sort seqid //按照样本ID顺序排列样本
des //观察样本集的指标情况
egen mean_percent = mean(percent) //求percent变量的全样本均值
list seqid mean_percent percent if _n <= 20, clean

seqid mean_p~t percent
1. 1 54.81 81
2. 2 54.81 88
3. 3 54.81 3
4. 4 54.81 18
5. 5 54.81 58
6. 6 54.81 41
7. 7 54.81 62
8. 8 54.81 17
9. 9 54.81 36
10. 10 54.81 13
11. 11 54.81 0
12. 12 54.81 26
13. 13 54.81 65
14. 14 54.81 93
15. 15 54.81 82
16. 16 54.81 92
17. 17 54.81 75
18. 18 54.81 52
19. 19 54.81 40
20. 20 54.81 87

//计算按blockid变量分组的组内均值
ereplace mean_percent = mean(percent), by(blockid)
sort blockid seqid //确保每次展示数据的样本序一致
by blockid: gen count = _n //按组对样本编号
list seqid mean_percent percent if count <= 5, clean

seqid mean_pe~t percent
1. 1 53.906977 81
2. 2 53.906977 88
3. 3 53.906977 3
4. 4 53.906977 18
5. 5 53.906977 58
44. 44 51.111111 93
45. 45 51.111111 71
46. 46 51.111111 18
47. 47 51.111111 45
48. 48 51.111111 19
62. 62 55.09375 65
63. 63 55.09375 91
64. 64 55.09375 68
65. 65 55.09375 86
66. 66 55.09375 6
94. 94 68.571429 86
95. 95 68.571429 93
96. 96 68.571429 32
97. 97 68.571429 16
98. 98 68.571429 96

4. 结语

以上就是ereplace命令的基本介绍,借助两个实例,有助于我们快速便捷的实现多情形下的变量处理工作。

5. 相关推文

Note:产生如下推文列表的 Stata 命令为:
lianxh 缺失值
安装最新版 lianxh 命令:
ssc install lianxh, replace

  • 专题:Stata命令
    • Stata:让缺失值一览无余
  • 专题:数据处理
    • Stata:缺失值与多重补漏-misstable
    • Stata数据处理:缺失值与多重补漏分析(一)
    • Stata数据处理:缺失值与多重补漏分析(二)
    • Stata数据处理:缺失值与多重补漏分析(三)
    • 缺失值能否用零代替?-L117
    • Stata缺失值专题:多重补漏分析
    • Stata:缺失值的填充和补漏

课程推荐:因果推断实用计量方法
主讲老师:丘嘉平教授
🍓 课程主页https://gitee.com/lianxh/YGqjp

New! Stata 搜索神器:lianxhsongbl  GIF 动图介绍
搜: 推文、数据分享、期刊论文、重现代码 ……
👉 安装:
. ssc install lianxh
. ssc install songbl
👉  使用:
. lianxh DID 倍分法
. songbl all

🍏 关于我们

  • 连享会 ( www.lianxh.cn,推文列表) 由中山大学连玉君老师团队创办,定期分享实证分析经验。
  • 直通车: 👉【百度一下: 连享会】即可直达连享会主页。亦可进一步添加 「知乎」,「b 站」,「面板数据」,「公开课」 等关键词细化搜索。


您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存