SAS中文论坛

 找回密码
 立即注册

扫一扫,访问微社区

查看: 885|回复: 6
打印 上一主题 下一主题

急等答案,关于数据集的修改!

[复制链接]

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
楼主
 楼主| 发表于 2009-10-23 14:06:04 | 只看该作者

急等答案,关于数据集的修改!

数据集L中有N个变量,其中有两个变量No 和Sign,两个变量的数据类似以下
No                Sign
s1                1
s1                1
s2                1
s2                2
s3                1  
s3                1
s4                2
s4                2
现要求数据集中No相同且Sign都为1的删除,No相同但sign中有一个不为1的两个都保留
请问如何编程?谢谢
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
沙发
 楼主| 发表于 2009-10-23 14:29:37 | 只看该作者

Re: 急等答案,关于数据集的修改!

这跟我刚才问的问题差不多,你可以参考一下我的帖子中大牛的回帖。我帮你修改了一下那个,你试试?
[code:1m3ecbdd]
proc sort data=L out=temp;
   by no;
run;

data temp(drop=flag:);
   do _n_=1 by 1 until(last.no);
      set temp;
      by no;
      if sigh=1 then flag1=1;
      else flag2=1;
   end;
   if flag1 and flag2 then flag=1;
   do _n_=1 to _n_;
      set temp;
      by no;
      if flag=1 then output;
   end;
run;
[/code:1m3ecbdd]
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
板凳
 楼主| 发表于 2009-10-23 14:51:49 | 只看该作者

Re: 急等答案,关于数据集的修改!

那原来数据集中的其他变量还会保留吗?我需要把其他变量保留下来
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
地板
 楼主| 发表于 2009-10-23 15:00:57 | 只看该作者

Re: 急等答案,关于数据集的修改!

会保留啊,你运行个程序看看就知道了,那里只是drop了新加的那个参数。
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
5#
 楼主| 发表于 2009-10-23 15:11:00 | 只看该作者

Re: 急等答案,关于数据集的修改!

我试试,谢谢!
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
6#
 楼主| 发表于 2009-10-26 21:00:29 | 只看该作者

Re: 急等答案,关于数据集的修改!

[code:39few8io]data a;
input no $ singn;
datalines;
s1 1
s1 1
s2 1
s2 2
s3 1
s3 1
s4 2
s4 2
;
run;
proc sql;
drop tabale out;
create table bc as
    select c.no,c.singn,contno,contsn
        from (select no,count(no) as contno  from a group by no) b,
             (select no,singn,count(no and singn) as contsn from a group by no,singn) c
       where b.no=c.no
       having contno>contsn;
insert into bc
    select c.no,c.singn,contno,contsn
            from (select no,count(no) as contno  from a group by no) b,
                 (select no,singn,count(no and singn) as contsn from a group by no,singn) c
            where b.no=c.no and singn^=1
            having contno=contsn;
%macro sql(no,singn);
          proc sql;
            create table out1 as
               select no,singn
               from a
               where no=%bquote('&no') and singn=&singn;
         proc append base=out data=out1;
         run;
%mend;
data _null_;
    set bc;
    call execute('%sql('||no||','||singn||')');
run;
[/code:39few8io]
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
7#
 楼主| 发表于 2009-10-27 12:19:50 | 只看该作者

Re: 急等答案,关于数据集的修改!

[code:39yydmyj]data ahuige;
    input no $  sign;
    cards;
s1 1
s1 1
s2 1
s2 2
s3 1
s3 1
s4 2
s4 2
;
run;
proc sql;
    create table final as
    select *
    from ahuige
    group by no
    having max(sign) ne 1 or min(sign) ne 1
    ;[/code:39yydmyj]
回复 支持 反对

使用道具 举报

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

本版积分规则

QQ|小黑屋|手机版|Archiver|SAS中文论坛  

GMT+8, 2026-2-6 01:06 , Processed in 0.136912 second(s), 20 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表