全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
2841 9
2013-01-10
我有一组数据info, 包括变量stkcd,year,id1,例如:stkcd    year   id1
          000001 1998  10a
          000001 1999  10b
          000001  2000  10a
          000002  1998  11a
          000002  1999   11a
          000002  2000   11a
          000003  1999   12c
          000003  2000   12c
          ......
现在我需要判断,对于同一stkcd,id1是否取相同的值,生成新变量,equal,相同,equal=1,不同,equal=0.
即:需要生成数据集info1;
             stkcd  year   id1    equal
           000001 1998  10a       0
           000001 1999  10b       0
          000001  2000  10a       0
          000002  1998  11a       1
          000002  1999   11a      1
          000002  2000   11a      1
          000003  1999   12c      1
          000003  2000   12c      1

在sas中应该如何编程?谢谢解惑!
二维码

扫码加我 拉你入群

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

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

全部回复
2013-1-11 22:28:49
data have;
input stkcd $ year   id1 $;
cards;
          000001 1998  10a
          000001 1999  10b
          000001  2000  10a
          000002  1998  11a
          000002  1999   11a
          000002  2000   11a
          000003  1999   12c
          000003  2000   12c
;

proc sql;                                                                                                                              
create table have1 as select distinct stkcd, id1                                                                                       
from have group by stkcd;                                                                                                               
create table have2 as select stkcd, count(*) as n                                                                                       
from have1 group by stkcd;                                                                                                              
quit;                                                                                                                                   

data want;                                                                                                                              
merge have have2;                                                                                                                       
by stkcd;                                                                                                                              
if n ne 1 then equal=0;                                                                                                                 
else equal=1;                                                                                                                           
drop n;                                                                                                                                 
run;  

二维码

扫码加我 拉你入群

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

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

2013-1-11 22:37:57
qinly10 发表于 2013-1-11 22:28
data have;
input stkcd $ year   id1 $;
cards;
您好!按照你的程序做了一下,非常感谢。
二维码

扫码加我 拉你入群

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

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

2013-1-12 14:01:04
qinly10 发表于 2013-1-11 22:28
data have;
input stkcd $ year   id1 $;
cards;
proc sql;
create table have1 as select distinct stkcd, id1                                                                                       
from have group by stkcd;      
WARNING: GROUP BY 子句已变换为 ORDER BY 子句,因为 SELECT 子句和相关表的表达式的可选 HAVING 子句都没有引用汇总函数。
这是日志的提示。
二维码

扫码加我 拉你入群

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

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

2013-1-13 00:03:14
lemonxinran 发表于 2013-1-12 14:01
proc sql;
create table have1 as select distinct stkcd, id1                                        ...
呵呵,粗心大意,
create table have1 as select distinct stkcd, id1 from have;
就够用了。
二维码

扫码加我 拉你入群

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

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

2013-1-13 00:05:40
顺便说一下,如果原数据stkcd未排序,在执行sql之前先将其排序
二维码

扫码加我 拉你入群

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

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

点击查看更多内容…
相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群