全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
1305 1
2017-02-20
悬赏 80 个论坛币 未解决
复制代码
数据中asig为对a的判定,以此类推。
希望用macro实现,
%aaa(inds=aaa,
        vars=a asig b bsig c csig d dig,
        newvars=x sig,
        keepvars=id treat jc visit,
        outds=);

得到的数据 variable和label对应为&vars中的a b c d及标签名

id treat jc visit x sig variable label
1 AB aa 2 1  1  a  aaaa
1 AB aa 6 2  1  a  aaaa
1 AB aa 8 3  1  a  aaaa
2 BA aa 2 4  2  a  aaaa
2 BA aa 6 5  1  a  aaaa
2 BA aa 8 6  2  a  aaaa
1 AB aa 2 2  1  b  bbbb
1 AB aa 6 3  2  b  bbbb
1 AB aa 8 4  1  b  bbbb
2 BA aa 2 5  2  b  bbbb
2 BA aa 6 6  1  b  bbbb
2 BA aa 8 7  3  b  bbbb
1 AB aa 2 11 1  c  cccc
1 AB aa 6 12 1  c  cccc
1 AB aa 8 13 1  c  cccc
2 BA aa 2 14 2  c  cccc
2 BA aa 6 15 2  c  cccc
2 BA aa 8 16 3  c  cccc
1 AB aa 2 12 2  d  dddd
1 AB aa 6 13 2  d  dddd
1 AB aa 8 14 1  d  dddd
2 BA aa 2 15 2  d  dddd
2 BA aa 6 16 2  d  dddd
2 BA aa 8 17 3  d  dddd


二维码

扫码加我 拉你入群

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

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

全部回复
2017-2-20 17:29:59

%macro aaa(inds=, vars=, newvars=, keepvars=, outds=);

data &outds;
set &inds;
array var[*] &vars;
do i=1 to dim(var)-1;
  %scan(&newvars,1)=var[i];
  %scan(&newvars,2)=var[i+1];
  variable=vname(var[i]);
  label=vlabel(var[i]);
  if mod(i,2) ne 0 then output;
end;
keep &keepvars &newvars variable label;
run;

proc sort data=&outds;
by variable;
run;

%mend;

%aaa(inds=bbb,
        vars=a asig b bsig c csig d dsig,
        newvars=x sig,
        keepvars=id treat jc visit,
        outds=wanted);
二维码

扫码加我 拉你入群

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

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

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

说点什么

分享

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