楼主: zhlwen3721
1248 10

[实际应用] 求助,这样的数据怎么变成新行有人会吗? [推广有奖]

  • 15关注
  • 3粉丝

硕士生

68%

还不是VIP/贵宾

-

威望
0
论坛币
451 个
通用积分
4.3693
学术水平
1 点
热心指数
2 点
信用等级
0 点
经验
1753 点
帖子
101
精华
0
在线时间
260 小时
注册时间
2012-10-25
最后登录
2024-1-8

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
stkcd  year                no
001    2001,2003,2004       1
002    2011,2003            2
003    2012,2014            3
....

如何变成

stkcd  year     no 
001    2001      1
001    2002      1
001    2003      1
002    2011      2
002    2003      2
003    2012      3
003    2014      3
。。。。
那位高手会?怎么写代码呢?
二维码

扫码加我 拉你入群

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

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


沙发
黃河泉 在职认证  发表于 2019-5-28 06:29:08 |只看作者 |坛友微信交流群
你若要问程序,永远附上相关资料;若附上资料,永远用 dataex 印出资料。
1.        先 ssc install dataex (并见说明),将原始 Stata 资料中具有”代表性”的一部分资料列出,以供有意回答者实验之用,并能提供具体操作指令。
2.        请参考说明 https://bbs.pinggu.org/thread-5048204-1-1.html

使用道具

藤椅
zhlwen3721 发表于 2019-5-28 07:03:36 来自手机 |只看作者 |坛友微信交流群
黃河泉 发表于 2019-5-28 06:29
你若要问程序,永远附上相关资料;若附上资料,永远用 dataex 印出资料。
1.        先 ssc install dataex (并见 ...
谢谢黄老师!

使用道具

板凳
zhlwen3721 发表于 2019-5-28 08:35:52 |只看作者 |坛友微信交流群
input str6 Symbol str79 ViolationYear str1 IsViolated float panelty
"000004" "2008,2009,2010"      "Y" .
"000004" "2.00520062007e+23"   "N" .
"000004" "2010,2011,2012,2013" "Y" 1
"000005" "2007,2008,2009"      "Y" .
"000006" "2010"                "N" .
"000007" "2014,2015"           "Y" .
"000007" "2014,2015"           "Y" 1
"000007" "2014"                "N" .
"000007" "2006,2007"           "N" .
"000007" "2012,2013"           "Y" .
end
[/CODE]
------------------ copy up to and including the previous line ------------------
就是这样的数据,改如何处理year呢

使用道具

报纸
黃河泉 在职认证  发表于 2019-5-28 10:17:10 |只看作者 |坛友微信交流群
zhlwen3721 发表于 2019-5-28 08:35
input str6 Symbol str79 ViolationYear str1 IsViolated float panelty
"000004" "2008,2009,2010"       ...
你的真实例子与你原先举的例子差很多,复杂多了!我暂时无法做出来 (其实也没时间去想)。

使用道具

地板
zhlwen3721 发表于 2019-5-28 10:19:55 |只看作者 |坛友微信交流群
黃河泉 发表于 2019-5-28 10:17
你的真实例子与你原先举的例子差很多,复杂多了!我暂时无法做出来 (其实也没时间去想)。
不知道是否可以用reshap语句来做出来

使用道具

7
l1i2n3i4n5g 在职认证  发表于 2019-5-28 10:22:28 |只看作者 |坛友微信交流群
  1. data a;
  2. input stkcd $3.
  3.    year :$100.
  4.    no;
  5. cards;
  6. 001 2001,2003,2004 1
  7. 002 2011,2003 2
  8. 003 2012,2014 3
  9. ;
  10. run;

  11. data b;
  12.    set a;
  13.    do i=1 to count(year,',')+1;
  14.       year1=scan(year,i,',');
  15.       output;
  16.    end;
  17. run;

  18. proc print;run;
复制代码

使用道具

8
黃河泉 在职认证  发表于 2019-5-28 10:33:49 |只看作者 |坛友微信交流群
zhlwen3721 发表于 2019-5-28 10:19
不知道是否可以用reshap语句来做出来
你的问题是同一公司有好几个不同资料!

使用道具

9
黃河泉 在职认证  发表于 2019-5-28 10:40:13 |只看作者 |坛友微信交流群
zhlwen3721 发表于 2019-5-28 10:19
不知道是否可以用reshap语句来做出来
不知底下是否为你所需:
  1. * Example generated by -dataex-. To install: ssc install dataex
  2. clear
  3. input str6 Symbol str79 ViolationYear str1 IsViolated float panelty
  4. "000004" "2008,2009,2010"      "Y" .
  5. "000004" "2011"                "N" .
  6. "000004" "2010,2011,2012,2013" "Y" 1
  7. "000005" "2007,2008,2009"      "Y" .
  8. "000006" "2010"                "N" .
  9. "000007" "2014,2015"           "Y" .
  10. "000007" "2014,2015"           "Y" 1
  11. "000007" "2014"                "N" .
  12. "000007" "2006,2007"           "N" .
  13. "000007" "2012,2013"           "Y" .
  14. end

  15. bys Symbol: gen t = _n
  16. split ViolationYear, p(",")
  17. drop ViolationYear
  18. reshape long ViolationYear, i(Symbol t)
  19. duplicates drop Symbol ViolationYear, force
  20. destring ViolationYear, replace
  21. drop if ViolationYear == .
复制代码

使用道具

10
zhlwen3721 发表于 2019-5-28 10:55:51 |只看作者 |坛友微信交流群
l1i2n3i4n5g 发表于 2019-5-28 10:22
感谢提醒!

使用道具

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

本版微信群
加好友,备注cda
拉您进交流群

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

GMT+8, 2024-4-20 03:45