楼主: 277958250
2605 3

[编程问题求助] 求解stata一比一配对循环 [推广有奖]

  • 0关注
  • 0粉丝

本科生

10%

还不是VIP/贵宾

-

威望
0
论坛币
61 个
通用积分
7.3738
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
102 点
帖子
22
精华
0
在线时间
111 小时
注册时间
2011-5-1
最后登录
2023-9-12

楼主
277958250 学生认证  发表于 2013-6-30 07:38:20 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
想要为660个测试公司找到最接近的660个一比一控制样本。控制条件为年份year,行业industry,和ROA。要找到最就近的ROA值的公司。应该要用滚动的去配对,并且要把配对样本另外储存或者用一个新变量做标记。
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:Stata tata Industry Dust year industry 行业 样本

沙发
ctx5518 发表于 2013-7-13 14:01:37
method1: check the joinby in Stata
use sample.dta, clear
ren roa roa_sample
merge 1:m year industry using match.dta, unmatched(master)
gen diff = abs(roa_sample - roa)
gsort year industry diff
by year industry: keep if _n == 1

Method2
use sample, clear
gen id = _n
local record = `c(N)'
forvalue i = 1 / `record' {
use sample, clear
keep if id == `i'
local a = year[1]
local b = industry[1]
local c = roa[1]

use match, clear
keep if year = `a'
keep if industry = `b'
gen diff = abs( roa - `c')
sort diff
keep if _n == 1
gen id = `i'
tempfile f`i'
save `f`i''
}

use `f1', clear
forvalue i = 2  / `record' {
append using `f`i''



藤椅
lclray 在职认证  发表于 2013-7-13 15:01:28
占座

板凳
277958250 学生认证  发表于 2013-7-28 22:43:38
ctx5518 发表于 2013-7-13 14:01
method1: check the joinby in Stata
use sample.dta, clear
ren roa roa_sample
谢谢哈,我之前找了一个例子改了一下
你的这个没试过,但看起来应该是可信的
谢谢你的回复哦

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注jltj
拉您入交流群
GMT+8, 2026-1-4 18:40