全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
2727 4
2012-09-19
悬赏 8 个论坛币 已解决

大家好。

我想问一个问题:怎样通过if条件语句,根据数据集Blist(在这里具体是numt),将数据集A的对应观测筛选出来,并生成新的数据集pickout?

dataA;

            input num    t   x;

            cards;

                        1        78        4

                        1        79        5

                        2        79        .

                        3        80        2

                        3        81        3

                        4        79        0

                        5        55        3

                        5        4         1

            ;

run;

dataB;

            input num  t;

            cards;

                        1  78

                        3  80

                        5  4

            ;

run;

期望的数据集pickout应该是:

                        1        78        4

                        3        80        2

                        5        4         1

我知道用procsql的select, exists可以很快地做出来,但不清楚是否可以在data语句中的用if来完成同样的工作?

谢谢!




最佳答案

pobel 查看完整内容

Data步: data A; input num t x; cards; 1 78 4 1 79 5 2 79 . 3 80 2 3 81 3 4 79 0 5 55 3 5 4 1 ; run; data B; input num t; cards; 1 78 3 80 5 4 ; run; *****************************; data c; set b; do i=1 to ...
二维码

扫码加我 拉你入群

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

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

全部回复
2012-9-19 15:05:10
Data步:

data A;
            input num    t   x;
            cards;
1        78        4
1        79        5
2        79        .
3        80        2
3        81        3
4        79        0
5        55        3
5        4         1
;
run;


data B;
  input num  t;
  cards;
  1  78
  3  80
  5  4
;
run;

*****************************;
data c;
    set b;
        do i=1 to nobs;
           set a(rename=(num=num1 t=t1)) nobs=nobs point=i;
           put num= num1=;
       if num=num1 and t=t1 then output;
        end;
        keep num t x;
run;

*********************************;
proc sort data=a ; by num t;run ;
data d;
   merge a b(in=inb);
   by num t;
   if inb;
run;

**********************************;
data e;
    if 0 then set b;
        if _n_=1 then do;
            declare hash b(dataset:"b");
                           b.definekey('num','t');
                           b.definedata('num','t');
                           b.definedone();
        end;
        set a;
        if b.find()=0;
run;

二维码

扫码加我 拉你入群

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

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

2012-9-19 15:55:31
复制代码

二维码

扫码加我 拉你入群

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

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

2012-9-20 01:30:14
pobel 发表于 2012-9-19 15:52
Data步:

data A;
NB~~
二维码

扫码加我 拉你入群

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

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

2013-1-4 19:20:16
lbnjin 发表于 2012-9-20 01:30
NB~~
呵呵,webgu的更加精简呀
二维码

扫码加我 拉你入群

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

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

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

说点什么

分享

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