全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
3448 18
2009-02-20

合并几个数据集后,发现同样的id因为有些变量的值不同而有多条记录,

例如:

data a;

 input id x1 x2 @@;

cards;

1 11 12

2 21 22

4 41 42

4 411 422

5 51 52

;

data b; input id x3 @@;

cards;

1 13 3 33 4 43 5 53 5 533 5 5333

;

run;

data c;

merge a b;

by id;

proc print;

run;

得到结果如下:

obs   id     x1      x2      x3

1       1     11     12      13

2       2     21     22        .

3       3      .         .      33

4       4     41     42     43

5       4    411    422    43

6       5     51      52     53

7       5     51      52     533

8       5     51      52     5333

怎样用SAS程序把上面红色部分的找出来,并且按照id号记录,因为数据库中变量有800个,也就是说要相同id号的记录,用proc compare进行每个变量比较的话,要比较800次,想问有没有高手可以写一个程序帮忙把同一记录号变量值不同的变量找出来呢?

[此贴子已经被作者于2009-2-20 18:15:42编辑过]

二维码

扫码加我 拉你入群

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

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

全部回复
2009-2-20 15:53:00

very simple


proc sql;

   select id, x1, x2, x3
     from c
     group by id
     having (max(x1) ne min(x1))
            or (max(x2) ne min(x2))
            or (max(x3) ne min(x3));
quit;

                            id        x1        x2        x3
                      --------------------------------------
                             4       411       422        43
                             4        41        42        43
                             5        51        52       533
                             5        51        52        53
                             5        51        52      5333

二维码

扫码加我 拉你入群

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

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

2009-2-20 15:56:00

晕 出去拿了个快递来晚了

data result(drop=i);
   set c;
   by id notsorted;
   if first.id then i=0;
   i+1;
   if last.id and i=1 then delete;
   if x1=. or x2=. or x3=. then delete;
run;

[此贴子已经被作者于2009-2-20 16:17:21编辑过]

二维码

扫码加我 拉你入群

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

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

2009-2-20 16:07:00

sushe1527,你的解法好像有点问题哟

你把a里面的数据完全重复一条,如

2 21 22

2 21 22

呵呵

[此贴子已经被作者于2009-2-20 16:07:49编辑过]

二维码

扫码加我 拉你入群

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

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

2009-2-20 16:14:00
以下是引用zhitler在2009-2-20 16:07:00的发言:

sushe1527,你的解法好像有点问题哟

你把a里面的数据完全重复一条,如

2 21 22

2 21 22

呵呵


没有问题啊,楼主的意思是 就是说要相同id号的记录

那么只要剔除单独的ID号码就可以了 其他的 哼哼 不管了

如果缺失的数据不能要的话 加上  if x1=. or x2=. or x3=. then delete;

[此贴子已经被作者于2009-2-20 16:20:50编辑过]

二维码

扫码加我 拉你入群

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

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

2009-2-20 16:18:00
以下是引用sushe1527在2009-2-20 16:14:00的发言:
以下是引用zhitler在2009-2-20 16:07:00的发言:

sushe1527,你的解法好像有点问题哟

你把a里面的数据完全重复一条,如

2 21 22

2 21 22

呵呵


没有问题啊,楼主的意思是 就是说要相同id号的记录

那么只要剔除单独的ID号码就可以了 其他的 哼哼 不管了

可能是我想多了吧[em01]
二维码

扫码加我 拉你入群

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

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

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

说点什么

分享

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