全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
4433 5
2016-03-14
各位大侠,我有一个dataset,里面有的人有1条记录,有的有多条记录,每个人的id是唯一的。还有一个变量index记录了这个人从1条到多条记录的顺序,现在我想把多条记录的人都导出来,不知道可否用SQL select实现?附件是数据。如果根据某个指标在一个人多条记录中选择有1条满足要求的,又该怎么写code呢?谢谢了!


附件列表

data.xls

大小:36 KB

 马上下载

数据集

二维码

扫码加我 拉你入群

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

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

全部回复
2016-3-14 22:43:18
proc freq data=yourdata nlevels;
Tables Id/ out=tmp_data_freq;
Run;

Data data_freq;
Set tmp_data_freq;
Where counts >1;
Run;

Proc sort data=data_freq;
By id;
Run;

Proc sort data=yourdata;
By id;
Run;

Data final;
Merge data_freq(in=a keep=Id) yourdata(in=b);
By id;
If a;
Run;

如果用sql,第三四五段用以下代码替代
Proc sql;
Create table final as
Select *
From yourdata
Where id in(select id from data_freq);
Quit;


这样就能将多条记录的人导出来
二维码

扫码加我 拉你入群

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

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

2016-3-14 22:58:55
Dany2 发表于 2016-3-14 22:43
proc freq data=yourdata nlevels;
Tables Id/ out=tmp_data_freq;
Run;
第二种方法正是我想学习的,非常感谢!
二维码

扫码加我 拉你入群

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

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

2016-3-15 00:16:55
mengqinqing 发表于 2016-3-14 22:58
第二种方法正是我想学习的,非常感谢!
其实就是子查询
二维码

扫码加我 拉你入群

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

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

2016-3-15 01:25:27
proc sql;
select * from A group by id having count(*)>1;
quit;
二维码

扫码加我 拉你入群

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

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

2016-3-15 01:27:03
proc sql;
select * from
(select * from A group by id having count(*)>1)
where index=1;
quit;
二维码

扫码加我 拉你入群

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

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

相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

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