全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
3188 8
2009-09-09
悬赏 6 个论坛币 已解决
第一个问题:如何从一个已知的数据集中将具有相同ID的记录(>=2条以上)筛选出来建立一个新的数据集?
举例说明:
IDx
45000115
45000114
45000212
45000313
45001218
45001219
45010418
45010412
45010415

等等....数据集里记录达3万多条且ID编号没有多大规律可循!想要得到这样的结果:
IDx
45000115
45000114
45001218
45001219
45010418
45010412
45010415
......
......
......
......
......

即具有唯一ID的记录不进入新数据集,具有相同ID 的两条或两条以上的记录进入新数据集;


第二个问题:在建成上述新数据集的基础上可不可以将每个ID变成唯一的一条记录,变量x重新被命名,有几个相同的ID记录就有几个x变量。即想得到这样的形式:
ID          x1     x2     x3
450001                   1514 .
4500121819 .
4501041812 15
......... ...


谢谢大家!!!

最佳答案

二维码

扫码加我 拉你入群

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

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

全部回复
2009-9-9 18:01:11
1# zhushji
复制代码
二维码

扫码加我 拉你入群

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

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

2009-9-9 18:34:48
data a;
input
ID x @;
z=_n_;
cards;
450001 15
450001 14
450002 12
450003 13
450012 18
450012 19
450104 18
450104 12
450104 15
;run;
proc sql ;
create table new1 as select * ,count(id) as count
from a group by id having count>=2 order by z;
alter table new1 drop z ,count;quit;
proc transpose data=new1 out=new2(drop=_name_) prefix=x;
by id;var x;run;
二维码

扫码加我 拉你入群

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

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

2009-9-9 21:51:52
复制代码
二维码

扫码加我 拉你入群

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

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

2009-9-10 01:58:10
4# lion_li
if first.id=1 & last.id=1 & first.id=last.id then delete;
这应该是对我的程序的修改了。请问什么理由呢?只是请教,没有冒犯的意思。

复制代码


没有了prefix 选项,如何得到x1 x2 x3...呢?
二维码

扫码加我 拉你入群

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

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

2009-9-10 03:36:51
proc sql;
   create table b as
   select Id, x
        from  
      (select Id, x, count(id) as N_id
           from a
       group by id
       having N_id >=2);
quit;
二维码

扫码加我 拉你入群

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

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

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

说点什么

分享

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