楼主: Lily871127484
1422 7

[数据管理求助] 如何根据拆分后的变量形成多行观测值 [推广有奖]

  • 0关注
  • 1粉丝

已卖:86份资源

硕士生

68%

还不是VIP/贵宾

-

威望
0
论坛币
2183 个
通用积分
5.8855
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
669 点
帖子
30
精华
0
在线时间
340 小时
注册时间
2015-11-21
最后登录
2024-12-12

楼主
Lily871127484 发表于 2020-3-15 20:46:34 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
year这个变量里面包括多个不连续的年份,且每个观测值包括的年份数不一样时,如何将年份分离出来,并根据年份对同一个id形成多个观测值?即实现从图片AB列到DE列的结果,代码:
  1. * Example generated by -dataex-. To install: ssc install dataex
  2. clear
  3. input byte stkcd str24 ViolationYear
  4. 1 "2013,2014,2015,2016"     
  5. 2 "2011,2013,2014,2015,2016"
  6. end
复制代码





二维码

扫码加我 拉你入群

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

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


图1.png (14.42 KB)

图1.png

回帖推荐

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

也可试试 (跟楼上差不多)

沙发
震震果实 发表于 2020-3-16 10:08:33
  1. ren stkcd id
  2. ren ViolationYear v
  3. split v,p(,)
  4. drop v
  5. reshape long v,i(id) j(year)
  6. drop year
  7. drop if v==""
  8. destring v,replace
  9. ren v year
复制代码

藤椅
Lily871127484 发表于 2020-3-16 11:07:57
震震果实 发表于 2020-3-16 10:08
谢谢您的解答!

板凳
Lily871127484 发表于 2020-3-16 11:40:02
震震果实 发表于 2020-3-16 10:08
十分感谢您的回复!但是现在跑完整数据的时候发现有个新的问题是stkcd不唯一,因此不能用reshape long,想实现图片中从左至右的过程,应该怎么办呢?
  1. * Example generated by -dataex-. To install: ssc install dataex
  2. clear
  3. input byte stkcd str24 ViolationYear
  4. 1 "2013,2014,2015,2016"     
  5. 1 "2011,2013,2014,2015,2016"
  6. 2 "2011,2013,2014,2015,2016"
  7. end
复制代码



图1.png (12.03 KB)

图1.png

报纸
黃河泉 在职认证  发表于 2020-3-16 12:17:23
Lily871127484 发表于 2020-3-16 11:07
谢谢您的解答!
也可试试 (跟楼上差不多)
  1. split ViolationYear, p(",") gen(year)
  2. reshape long year, i(stkcd) string
  3. destring year, replace
  4. drop ViolationYear _j
复制代码

地板
Lily871127484 发表于 2020-3-16 12:37:01
黃河泉 发表于 2020-3-16 12:17
也可试试 (跟楼上差不多)
谢谢黄老师的解答!但是我在跑完整数据时发现一个问题,即stkcd不唯一,这个时候无法reshape long,不知道怎么实现对同一个stkcd保留不重复的年份呢?即实现图片从左至右的过程
* Example generated by -dataex-. To install: ssc install dataex
clear
input byte stkcd str24 ViolationYear
1 "2013,2014,2015,2016"     
1 "2011,2013,2014,2015,2016"
2 "2011,2013,2014,2015,2016"
end

图1.png (12.03 KB)

图1.png

7
震震果实 发表于 2020-3-16 12:39:42
Lily871127484 发表于 2020-3-16 11:40
十分感谢您的回复!但是现在跑完整数据的时候发现有个新的问题是stkcd不唯一,因此不能用reshape long,想 ...
  1. bys stkcd:gen n=_n
  2. gen id= stkcd+n/100
  3. ren ViolationYear v
  4. drop stkcd n
  5. split v,p(,)
  6. drop v
  7. reshape long v,i(id) j(t)
  8. drop t
  9. drop if v==""
  10. gen i=int(id)
  11. drop id
  12. ren i id
  13. ren v year
  14. duplicates drop id year,force
  15. destring year,replace
  16. order id year
  17. sort id year
复制代码

8
Lily871127484 发表于 2020-3-16 13:10:49
震震果实 发表于 2020-3-16 12:39
谢谢解答!!![em17][em17]问题已经解决了

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

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