楼主: liuliuqiu
1180 6

[问答] SAS程序求教 [推广有奖]

  • 6关注
  • 2粉丝

副教授

62%

还不是VIP/贵宾

-

威望
0
论坛币
2340 个
通用积分
8.9561
学术水平
3 点
热心指数
5 点
信用等级
5 点
经验
14393 点
帖子
429
精华
0
在线时间
1113 小时
注册时间
2009-3-24
最后登录
2024-2-29

15论坛币
id         year       export
1          2001        0
1          2002        1
1          2003        1
1          2004        0
1          2005        0
1          2006        1
1          2007        1
1          2008        1
1          2009        0
1          2010        1
1          2011        1
以上数据,id为企业个体,export为是否出口(1为出口,0为不出口),想统计企业每次出口的年限。如企业1,2002年开始出口,并连续出口两年,所以第一次出口的年限为2;第二次出口从2006年开始,持续三年,所以第二次出口的年限为3,;第三次出口从2010年开始,连续出口2年。基于此,想得到的数据为
id      suv   startyear
1        2         2002
1        3         2006
1        2         2010
求SAS如何实现,谢谢!!

最佳答案

wwang111 查看完整内容

proc sort data=test; by id year; run; data step1; set test; by id year; retain startyear; if first.id or export=0 then do; suv=.; startyear=.; end; if export=1 then suv+1; if suv=1 then startyear=year; run; proc sql; create table wanted as select id, startyear, suv from step1 where export=1 group by 1,2 having suv=max(suv); quit;
关键词:sas程序 export starty xport Start 程序
沙发
wwang111 发表于 2016-8-4 08:27:07 |只看作者 |坛友微信交流群
proc sort data=test;
by id year;
run;

data step1;
set test;
by id year;
retain startyear;
if first.id or export=0 then do;
   suv=.;
   startyear=.;
end;
if export=1 then suv+1;
if suv=1 then startyear=year;
run;

proc sql;
create table wanted as
select id, startyear, suv
from step1
where export=1
group by 1,2
having suv=max(suv);
quit;

使用道具

藤椅
liuliuqiu 发表于 2016-8-4 08:43:18 |只看作者 |坛友微信交流群
id         year       export
1          2001        0
1          2002        1
1          2003        1
1          2004        0
1          2005        0
1          2006        1
1          2007        1
1          2008        1
1          2009        0
1          2010        1
1          2011        1
1          2012        0
2          ....
想得到的数据为:
id      suv   startyear
1        2         2002
1        3         2006
1        2         2010

使用道具

板凳
liuliuqiu 发表于 2016-8-4 09:21:56 |只看作者 |坛友微信交流群
wwang111 发表于 2016-8-4 08:59
proc sort data=test;
by id year;
run;
非常感谢!!

使用道具

报纸
l1i2n3i4n5g 在职认证  发表于 2016-8-4 11:26:34 |只看作者 |坛友微信交流群
wwang111 发表于 2016-8-4 08:27
proc sort data=test;
by id year;
run;
想请教一下,“group by 1,2”,里面的1,2是指select里面的第一个变量和第二个变量吗

使用道具

地板
wwang111 发表于 2016-8-4 11:45:01 |只看作者 |坛友微信交流群
l1i2n3i4n5g 发表于 2016-8-4 11:26
想请教一下,“group by 1,2”,里面的1,2是指select里面的第一个变量和第二个变量吗
是的,按照顺序来的

使用道具

7
gwrsm 发表于 2016-8-13 17:39:47 |只看作者 |坛友微信交流群
看看  谢谢楼主了。。。。。。。。。。

使用道具

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

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

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

GMT+8, 2024-5-4 06:43