Stata数据处理:各种求和方式一览

发布时间:2020-10-24 阅读 518

Stata 连享会   主页 || 视频 || 推文

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

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

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

作者: 刘欣妍 (香港中文大学)
邮箱: liuxinyan@link.cuhk.edu.hk


目录


本文主要通过一些案例演示,来解决大家在 Stata 应用中遇到的各种求和问题。

1. generate 命令的 sum() 函数

具体代码如下:

clear
input x1 x2
      1  2
      2  4
      3  6
      4  8
end
gen sum_x1  = sum(x1)
gen sum_x2  = sum(x2)
list, clean noobs  

具体结果如下:

    x1   x2   sum_x1   sum_x2  
     1    2        1        2  
     2    4        3        6  
     3    6        6       12  
     4    8       10       20  

从结果中可以看出,gen 提供的 sum() 函数是累计求和。

2. egen 命令的 sum() 和 rsum() 函数

具体代码如下:

clear
input x1 x2
      1  2
      2  4
      3  6
      4  8
end
egen sum_x1=sum(x1)
egen sum_x2=sum(x2)
egen rsum_x = rsum(x1 x2)
egen rtotal_x = rowtotal(x1 x2)
list , clean noobs

具体结果如下:

x1   x2   sum_x1   sum_x2   rsum_x   rtotal_x  
 1    2       10       20        3          3  
 2    4       10       20        6          6  
 3    6       10       20        9          9  
 4    8       10       20       12         12  

从结果中可以看出,egen 提供的 sum() 函数计算该变量的总和,rsum() 计算行数值的相加和,rowtotal() 函数与 rsum() 功能一致。需要注意的是,rowtotal() 不能简写为 rtotal()

此外,egen 还提供了丰富的针对行操作的函数,如 rowfirst()rowlast()rowmax()rowmean()rowmedian()rowmin()rowmiss()rownonmiss()rowpctile()rowsd() 等,详细介绍可以通过 help egen 查看。

3. tscollap 命令

collapse() 适用于将月度、季度、或半年度的数据加总至年度数据,但是其没有将新生成的数据默认设为面板数据,当你进行分析时,需要再次进行 tssettscollap() 命令也可以实现上述功能 (注意,在使用tscollap 命令之前,需要将数据定义为面板数据),但其新生成的数据无需再 tsset

collapse 实现代码:

*数据下载地址
*https://gitee.com/arlionn/data/blob/master/data01/lutkepohl2.dta
use lutkepohl2.dta, clear 
gen year = year(dofq(qtr)) // 从qtr这个数据中提取出年份
list qtr inv inc consump in 1/4, clean noobs
collapse(sum) inv inc consump, by(year) //按照年份加总inv,inc,和comsump三个变量
list year inv inc consump in 1/4, clean noobs

具体结果如下:

. list qtr inv inc consump in 1/4, clean noobs

       qtr   inv   inc   consump  
    1960q1   180   451       415  
    1960q2   179   465       421  
    1960q3   185   485       434  
    1960q4   192   493       448  


. list year inv inc consump in 1/4, clean noobs

    year   inv    inc   consump  
    1960   736   1894      1718  
    1961   834   2090      1883  
    1962   931   2263      2048  
    1963   978   2427      2168  

tscollap 实现代码:

use lutkepohl2.dta, clear 
tscollap (sum) inv inc consump, to(y) //to()可以放入q、h、y,分别代表季度、半年度、年度
list y_y inv inc consump in 1/4, clean noobs

当然,我们也可以通过 egen 命令实现上述过程,具体代码如下:

use lutkepohl2.dta, clear 
gen year = year(dofq(qtr)) 
sort year
by year: egen inv_sum = sum(inv)
by year: egen inc_sum = sum(inc)
by year: egen consump_sum = sum(consump)
by year: keep if _n == _N
list year inv_sum inc_sum consump_sum in 1/4, clean noobs

4. rolling 命令

rolling 可以对特定窗口实现滚动操作,我们这里仅将其运用滚动求和,更多功能详见 help rolling

具体代码如下:

use lutkepohl2, clear
rolling inc_sum =(r(mean)*r(N)), window(4): summarize inc, detail  //窗口为4,通过均值和样本数相乘求和
list in 1/4, clean noobs

具体结果如下:

     start      end   inc_sum  
    1960q1   1960q4      1894  
    1960q2   1961q1      1952  
    1960q3   1961q2      2007  
    1960q4   1961q3      2043  

5. 扩展阅读

相关课程

连享会-直播课 上线了!
http://lianxh.duanshu.com

免费公开课:


课程一览

支持回看,所有课程可以随时购买观看。

专题 嘉宾 直播/回看视频
最新专题 DSGE, 因果推断, 空间计量等
Stata数据清洗 游万海 直播, 2 小时,已上线
研究设计 连玉君 我的特斯拉-实证研究设计-幻灯片-
面板模型 连玉君 动态面板模型-幻灯片-
面板模型 连玉君 直击面板数据模型 [免费公开课,2小时]

Note: 部分课程的资料,PPT 等可以前往 连享会-直播课 主页查看,下载。


关于我们

  • Stata连享会 由中山大学连玉君老师团队创办,定期分享实证分析经验。直播间 有很多视频课程,可以随时观看。
  • 连享会-主页知乎专栏,300+ 推文,实证分析不再抓狂。
  • 公众号推文分类: 计量专题 | 分类推文 | 资源工具。推文分成 内生性 | 空间计量 | 时序面板 | 结果输出 | 交乘调节 五类,主流方法介绍一目了然:DID, RDD, IV, GMM, FE, Probit 等。
  • 公众号关键词搜索/回复 功能已经上线。大家可以在公众号左下角点击键盘图标,输入简要关键词,以便快速呈现历史推文,获取工具软件和数据下载。常见关键词:课程, 直播, 视频, 客服, 模型设定, 研究设计, stata, plus, 绘图, 编程, 面板, 论文重现, 可视化, RDD, DID, PSM, 合成控制法

连享会主页  lianxh.cn
连享会主页 lianxh.cn

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

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

✏ 连享会学习群-常见问题解答汇总:
https://gitee.com/arlionn/WD