楼主: rhapsodyr
2386 3

[数据管理求助] 求助:面板数据同年的各截面相除穷举法。 [推广有奖]

版主

什么书都只看了半本!

已卖:178份资源

院士

65%

还不是VIP/贵宾

-

TA的文库  其他...

Rh私房书架——教材评价系列

Rh私房书架——经典教程系列

威望
4
论坛币
96581 个
通用积分
8564.2568
学术水平
315 点
热心指数
506 点
信用等级
297 点
经验
84745 点
帖子
2755
精华
0
在线时间
3787 小时
注册时间
2009-6-27
最后登录
2024-11-5

初级热心勋章 初级信用勋章 中级热心勋章 中级信用勋章

楼主
rhapsodyr 发表于 2014-11-30 18:59:34 |AI写论文
300论坛币
一、数据说明
数据参考如下的官网范例数据【grunfeld.dta】:年份1935-1954年,10个个体,共200个观测值。
  1. webuse  grunfeld ,  clear
复制代码
截面ID为company,年份为year,另外就是三个变量:invest、mvalue、kstock

company

year

invest

mvalue

kstock

1

1935

I1,1935

M1,1935

K1,1935

1

t

I1,t

M1,t

K1,t

1

1954

I1,1954

M1,1954

K1,1954

…… 

 …… 

 …… 

 …… 

 …… 

i

1935

Ii,1935

Mi,1935

Ki,1935

i

t

Ii,t

Mi,t

Ki,t

i

1954

Ii,1954

Mi,1954

Ki,1954

…… 

…… 

…… 

…… 

 ……

j

1935

Ij,1935

Mj,1935

Kj,1935

j

t

Ij,t

Mj,t

Kj,t

j

1954

Ij,1954

Mj,1954

Kj,1954

…… 

…… 

…… 

…… 

…… 




二、欲实现的效果
最后想要得到一个【新的数据集】每年每截面的变量值均为相除得到。也就是说:
如果按照有原本20年数据,10个个体,共计200个观测值;
最后得到的将是10*9=90个新个体/截面(newid字符型),同样20年,共计1800个新观测值。


company

newid
(字符型)

year

invest

mvalue

kstock

1

1by2

1935

I1,1935/I2,1935

K1,1935/K2,1935

1

1by2

t

I1,t/I2,t

K1,t/K2,t

1

1by2

1954

I1,1954/I2,1935

K1,1954/K2,1954

……

…… 

…… 

……

……

……

1

1byi

t

I1,t/Ii,t

M1,t/M2,t

……

……

…… 

……

……

……

i

ibyj

1935

Ii,1935/Ij,1935

Ki,1935/Kj,1935

i

ibyj

t

Ii,t/Ij,t

`

Ki,t/Kj,t

i

ibyj

1954

Ii,1954/Ij,1954

Ki,1954/Kj,1954

……

……

……

……

……



Question:请教这个新数据集怎么得到呢?

最佳答案

zhonghuijie 查看完整内容

不好意思,错了一个地方: set obs 1800 gen invest2=. gen mvalue2=. gen kstock2=. gen newid="" local k=1 forvalue i=1/200{ forvalues j=1/200{ if `i'!=`j'&year[`i']==year[`j']{ replace invest2[`k']=invest[`i']/invest[`j'] replace mvalue2[`k']=mvalue[`i']/mvalue[`j'] replace kstock2[`k']=kstock[`i']/kstock[`j'] replace newid="`i'by`j'" dis `k++' } } }
关键词:面板数据 question company Invest compan company invest
http://gen.lib.rus.ec/

沙发
zhonghuijie 发表于 2014-11-30 18:59:35
不好意思,错了一个地方:
set obs 1800
gen invest2=.
gen mvalue2=.
gen kstock2=.
gen newid=""
local k=1
forvalue i=1/200{
forvalues j=1/200{
if `i'!=`j'&year[`i']==year[`j']{
replace invest2[`k']=invest[`i']/invest[`j']
replace mvalue2[`k']=mvalue[`i']/mvalue[`j']
replace kstock2[`k']=kstock[`i']/kstock[`j']
replace newid="`i'by`j'"
dis `k++'
}
}
}
已有 2 人评分经验 论坛币 学术水平 热心指数 收起 理由
rhapsodyr + 50 + 2 + 3 精彩帖子
admin_kefu + 60 根据规定进行奖励

总评分: 经验 + 50  论坛币 + 60  学术水平 + 2  热心指数 + 3   查看全部评分

藤椅
zhonghuijie 发表于 2014-12-2 19:25:32
你好,我做出一个程序如下:
set obs 1800
gen invest2=.
gen mvalue2=.
gen kstock2=.
gen newid=""
local k=1
forvalue i=1/200{
forvalues j=1/200{
if `i'!=`j'&year[`i']==year[`j']{
replace invest2[`k']=invest[`i']/invest[`j']
replace mvalue2[`k']=invest[`i']/invest[`j']
replace kstock2[`k']=invest[`i']/invest[`j']
replace newid="`i'by`j'"
dis `k++'
}
}
}
不知道可不可以运行,如果不能运行,希望你把数据发给我,我来调试。我的邮箱是812466144@qq.com

板凳
rhapsodyr 发表于 2014-12-3 16:14:34
  1. webuse grunfeld, clear

  2. set obs 1800

  3. gen invest2=.
  4. gen mvalue2=.
  5. gen kstock2=.
  6. gen newid=""
  7. gen cd1=.
  8. gen cd2=.
  9. gen company1=.
  10. gen company2=.
  11. gen year1=.

  12. local k=1
  13. local g=1
  14. local f=1

  15. forvalue i=1/200 {
  16.        forvalues j=1/200 {
  17.               if `i'!=`j'  &  year[`i']==year[`j'] {
  18.                      replace invest2=invest[`i']/invest[`j'] in `k'
  19.                      replace mvalue2=mvalue[`i']/mvalue[`j'] in `k'
  20.                      replace kstock2=kstock[`i']/kstock[`j'] in `k'
  21.                      replace cd1=`i' in `k'
  22.                      replace cd2=`j' in `k'
  23.                      replace company1=company[`i'] in `k'
  24.                      replace company2=company[`j'] in `k'
  25.                      replace year1=year[`i'] in `k'
  26.                      dis `k++'
  27.               }
  28.        }
  29. }

  30. tostring company1 company2,replace
  31. replace newid=company1+"by"+company2
  32. drop company-time
  33. gen company=real(company1)
  34. rename year1 year
  35. order company year
  36. drop cd1-company2
复制代码
以上是zhonghuijie提供的代码,经验证准确无误!

http://gen.lib.rus.ec/

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

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