楼主: ZORRO621
9812 11

[面板数据求助] 让某一年的数据等于另外一年的 [推广有奖]

  • 0关注
  • 1粉丝

已卖:1份资源

大专生

86%

还不是VIP/贵宾

-

威望
0
论坛币
346 个
通用积分
0
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
389 点
帖子
29
精华
0
在线时间
90 小时
注册时间
2005-9-19
最后登录
2019-10-11

楼主
ZORRO621 发表于 2017-5-27 16:17:05 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
【stata 求助】求问各位大神,我想让面板数据(2000-2007年)第2001年的数据等于2002年的,2000年的不变,只更新这一点,怎么做呢?
比如
id     year     var1     var2
A     2000      1          2
A     2001      3          4
A     2002      5          6
A     2003      7          8
B     2000      -1        -2
B     2001      -3        -4
B     2002      -5        -6
B     2003      -7        -8

只让上面的数据2001年的等于2002年的
二维码

扫码加我 拉你入群

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

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

关键词:Stata tata 面板数据 year VaR

回帖推荐

黃河泉 发表于8楼  查看完整内容

试试

黃河泉 发表于3楼  查看完整内容

底下例子让 var1 与 var2 都改变(请自行修改):

沙发
ZORRO621 发表于 2017-5-27 16:21:40
让var1的数据2001年的等于2002年的

藤椅
黃河泉 在职认证  发表于 2017-5-27 16:35:45
ZORRO621 发表于 2017-5-27 16:21
让var1的数据2001年的等于2002年的
底下例子让 var1 与 var2 都改变(请自行修改):
  1. * Example generated by -dataex-. To install: ssc install dataex
  2. clear
  3. input str3 id float(year var1 var2)
  4. "A" 2000  1  2
  5. "A" 2001  3  4
  6. "A" 2002  5  6
  7. "A" 2003  7  8
  8. "B" 2000 -1 -2
  9. "B" 2001 -3 -4
  10. "B" 2002 -5 -6
  11. "B" 2003 -7 -8
  12. end

  13. foreach v of varlist var1 var2 {
  14.   bys id (year): replace `v' = `v'[_n+1] if year == 2001
  15. }  
复制代码

板凳
ZORRO621 发表于 2017-5-27 16:45:02
黃河泉 发表于 2017-5-27 16:35
底下例子让 var1 与 var2 都改变(请自行修改):
啊谢谢!原来是if就行了 我刚刚一直想着是不是var[2]之类的 感谢

报纸
ZORRO621 发表于 2017-5-28 13:37:59
黃河泉 发表于 2017-5-27 16:35
底下例子让 var1 与 var2 都改变(请自行修改):
如果还有一个var3 对于面板数据 只要A的var3里有0的值(不管哪一年,只要有0)存在,那么就让2001年的数据等于2002年的数据呢

地板
黃河泉 在职认证  发表于 2017-5-28 14:01:58
ZORRO621 发表于 2017-5-28 13:37
如果还有一个var3 对于面板数据 只要A的var3里有0的值(不管哪一年,只要有0)存在,那么就让2001年的数据 ...
看不懂,请举个例子!

7
ZORRO621 发表于 2017-5-28 14:08:19
黃河泉 发表于 2017-5-28 14:01
看不懂,请举个例子!
id     year     var1     var2     var3
A     2000      1          2        0
A     2001      3          4        1
A     2002      5          6        1
A     2003      7          8        1
B     2000      -1        -2        1
B     2001      -3        -4        1
B     2002      -5        -6        0
B     2003      -7        -8        1
比如A的var3有0值,就让A的var2 2001年数据=2002年数据
B的var3也有一个0值,让B的var2 2001年数据=2002年数据
只要var3有0值(不管哪个年份出现的)就让面板数据的各个ID(如A、B)的var2的数据2001年的=2002年的
如果没有出现0值,则不变

8
黃河泉 在职认证  发表于 2017-5-28 14:29:32
ZORRO621 发表于 2017-5-28 14:08
id     year     var1     var2     var3
A     2000      1          2        0
A     2001      3 ...
试试
  1. * Example generated by -dataex-. To install: ssc install dataex
  2. clear
  3. input str3 id float(year var1 var2 var3)
  4. "A" 2000  1  2 0
  5. "A" 2001  3  4 1
  6. "A" 2002  5  6 1
  7. "A" 2003  7  8 1
  8. "B" 2000 -1 -2 1
  9. "B" 2001 -3 -4 1
  10. "B" 2002 -5 -6 1
  11. "B" 2003 -7 -8 1
  12. end

  13. bys id (year): egen c0 = total(var3 == 0)
  14. foreach v of varlist var1 var2 {
  15.   bys id (year): replace `v' = `v'[_n+1] if year == 2001 & c0 > 0
  16. }  
复制代码

9
ZORRO621 发表于 2017-5-28 14:38:18
黃河泉 发表于 2017-5-28 14:29
试试
学习了!刚刚想到个小疑惑 如果是var3中只要存在1呢 不是0呢

10
ZORRO621 发表于 2017-5-28 14:40:19
黃河泉 发表于 2017-5-28 14:29
试试
我好像知道了 谢谢了哈!

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

本版微信群
加好友,备注jltj
拉您入交流群
GMT+8, 2025-12-5 17:57