SAS 一道题目

博客内容探讨了SAS编程,展示了具体的SAS代码,并提到了村花大神的SQL代码,提供了相关领域的实践示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

SAS code

data a;
infile datalines dsd;
input id $ var1  var2   var3$  ;
datalines;
001,1,,
001,,2,
001,,,a 
002,4,,
002,,5,
002,,,6
;
run;


%macro test(num);
    data work.b#
        set work.a(keep= id var&num);
        if vtype(var&num) = "N" then do;
            if var&num ne . then output;
        end;
        else do;
            if var&num ne '' then output;
        end;

    run;
%mend;

%test(1)
%test(2)
%test(3)


data work.c;
    merge work.b1 work.b2 work.b3;
        by id;
run;

proc print ;
run;
idvar1var2var3
0011
0012
001a
0024
0025
002b

||

idvar1var2var3
00112a
00245b

村花大神SQL代码:

data a;
infile datalines dsd;
input id $ var1  var2   var3$  ;
datalines;
001,1,,
001,,2,
001,,,a 
002,4,,
002,,5,
002,,,6
;
run;


proc sql noprint;
  select count(*) into: numn from dictionary.columns
  where libname='WORK' AND MEMNAME='A' AND TYPE='num';
  select name into: clist sepearted by ',' from dictionary.columns
  where libname='WORK' AND MEMNAME='A' AND TYPE='char' and name ne 'id';
quit;

data b;
  format k $20.;
  set a;
  array va _numeric_;
  array vara $ new1-new%left(&numn.);
  do i=1 to &numn.;
     vara[i]=put(va[i],8.0);
  end;
  k=coalescec(of vara{*},&clist.);
run;

proc transpose data=b out=c(drop=_name_);
  by id;
  var k;
run;

proc print;
run;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值