楼主: arkfan
4320 7

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

  • 6关注
  • 1粉丝

硕士生

64%

还不是VIP/贵宾

-

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

+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
拉您入交流群

京ICP备16021002-2号 京B2-20170662号 京公网安备 11010802022788号 论坛法律顾问:王进律师 知识产权保护声明   免责及隐私声明

GMT+8, 2024-5-1 04:12