SAS中文论坛

 找回密码
 立即注册

扫一扫,访问微社区

查看: 666|回复: 1
打印 上一主题 下一主题

请教:多个变量的比较问题

[复制链接]

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
楼主
 楼主| 发表于 2008-11-16 10:52:11 | 只看该作者

请教:多个变量的比较问题

数据集A中有两组变量 q1-q10;b1-b12;都是数值型的.注意其中有好多变量有缺失值.甚至整个变量都缺失.把b1-b12的值都包含在q1-q10中的筛选出来,放到EXCEL里 ,其他的即:至少存在 一个不在Q1-Q10的放到另一个表中.谢谢
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
沙发
 楼主| 发表于 2008-11-16 13:17:04 | 只看该作者

Re: 请教:多个变量的比较问题

I'm not sure, but something like the 2nd data step may work out.
[code:27vhwl2d]
data a;
        array b[*] b1-b12;
        array q[*] q1-q10;
        do k=1 to 10;
        do i=1 to dim(b);
                b[i] = floor(ranuni(0)*5);
                if b[i] = 0 then b[i]=.;
        end;
        do i=1 to dim(q);
                q[i] = floor(ranuni(0)*5);
                if q[i] = 0 then q[i]=.;
        end;
        output;
        end;
        drop k i;
        format b1-b10 q1-q10 1.;
data inclusive not_inclusive;
        array b[*] b1-b12;
        array q[*] q1-q10;
        set a;
        str = peekclong(addrlong(q[1]), 8*dim(q));
        count_diff = 0;
        do i=1 to dim(b);
                if index(str, put(b[i], rb8.))=0 then count_diff++1;
        end;
        if count_diff>0 then output not_inclusive; else output inclusive;
        drop i str count_diff;
proc print data=inclusive;
proc print data=not_inclusive;
run;

*proc export ... ...;
[/code:27vhwl2d]
it is more efficient if you sort arrays b and q first, then compare their elements from left to right.
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-2-5 05:15 , Processed in 0.068552 second(s), 22 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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