楼主: arkfan
5103 7

[编程问题求助] stata求助:如何提取字符型变量上期内容? [推广有奖]

  • 6关注
  • 1粉丝

硕士生

73%

还不是VIP/贵宾

-

威望
0
论坛币
907 个
通用积分
98.6200
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
1512 点
帖子
66
精华
0
在线时间
237 小时
注册时间
2013-5-25
最后登录
2025-7-22

楼主
arkfan 发表于 2017-7-10 17:53:39 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
有如下数据
clear
input float(id year)  str4 t1
1   2010  a
1   2011  b
1   2012  c
2   2010  d
2   2012  e
2   2013  f
end  


想将每一年的上一年t1变量的内容提取出来放在本年形成t2变量
本来想:
xtset id year
gen t2 = L.t1
但因为t1是字符型变量,用L.失效,  我就只能用其他相对较麻烦的方法实现,现在我想求助一下:
通过面板数据的滞后命令L.能不能快捷方便地取字符型变量的上期数据?   



二维码

扫码加我 拉你入群

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

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

关键词:stata 面板 滞后 上期

回帖推荐

蓝色 发表于6楼  查看完整内容

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

我没注意到中间有空格(建议以后你举例子的时候,就直接放个空格),请试试

沙发
黃河泉 在职认证  发表于 2017-7-10 19:05:22
试试
  1. * Example generated by -dataex-. To install: ssc install dataex
  2. clear
  3. input float(id year) str4 t1
  4. 1 2010 "a"
  5. 1 2011 "b"
  6. 1 2012 "c"
  7. 2 2010 "d"
  8. 2 2012 "e"
  9. 2 2013 "f"
  10. end

  11. gen t2 = t1
  12. bys id (year): replace t2 = t1[_n-1]
复制代码

藤椅
arkfan 发表于 2017-7-10 20:52:39
黃河泉 发表于 2017-7-10 19:05
试试
你好,这样执行代码的话,id为2,year为2012年会将2010年的“d” 取下来,但因为2011年有缺失,所以2012年应该提取出一个缺失值才符合我的要求。

板凳
黃河泉 在职认证  发表于 2017-7-11 08:07:16
arkfan 发表于 2017-7-10 20:52
你好,这样执行代码的话,id为2,year为2012年会将2010年的“d” 取下来,但因为2011年有缺失,所以2012年 ...
我没注意到中间有空格(建议以后你举例子的时候,就直接放个空格),请试试
  1. * Example generated by -dataex-. To install: ssc install dataex
  2. clear
  3. input float(id year) str4 t1
  4. 1 2010 "a"
  5. 1 2011 "b"
  6. 1 2012 "c"
  7. 2 2010 "d"
  8. 2 2012 "e"
  9. 2 2013 "f"
  10. end

  11. xtset id year

  12. tsfill

  13. gen t2 = t1
  14. bys id (year): replace t2 = t1[_n-1]
复制代码
已有 1 人评分学术水平 热心指数 信用等级 收起 理由
Sunknownay + 2 + 2 + 2 热心帮助其他会员

总评分: 学术水平 + 2  热心指数 + 2  信用等级 + 2   查看全部评分

报纸
蓝色 发表于 2017-7-11 08:26:39
arkfan 发表于 2017-7-10 20:52
你好,这样执行代码的话,id为2,year为2012年会将2010年的“d” 取下来,但因为2011年有缺失,所以2012年 ...
如果t1是数值型的xtset

  1. * Example generated by -dataex-. To install: ssc install dataex
  2. clear
  3. input float(id year) str4 t1 t
  4. 1 2010 "a"    1
  5. 1 2011 "b"    2
  6. 1 2012 "c"    3
  7. 2 2010 "d"    1
  8. 2 2012 "e"    3
  9. 2 2013 "f"    4
  10. end

  11. xtset id year
  12. gen  t3 = L.t
  13. list
复制代码


地板
蓝色 发表于 2017-7-11 08:41:29
  1. clear
  2. input float(id year) str4 t1
  3. 1 2010 "a"   
  4. 1 2011 "b"   
  5. 1 2012 "c"   
  6. 2 2010 "d"   
  7. 2 2012 "e"   
  8. 2 2013 "f"   
  9. end

  10. xtset id year
  11. tsfill

  12. by id: gen  t2 = t1[_n-1]
  13. drop if t1==""
  14. list
复制代码


已有 1 人评分学术水平 热心指数 信用等级 收起 理由
Sunknownay + 2 + 2 + 2 热心帮助其他会员

总评分: 学术水平 + 2  热心指数 + 2  信用等级 + 2   查看全部评分

7
arkfan 发表于 2017-7-11 10:47:50
黃河泉 发表于 2017-7-11 08:07
我没注意到中间有空格(建议以后你举例子的时候,就直接放个空格),请试试
明白其中的思路了,非常感谢提供的帮助!!

8
arkfan 发表于 2017-7-11 10:48:54
蓝色 发表于 2017-7-11 08:41
谢谢提供的帮助,非常感谢

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

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