楼主: dxystata
1350 1

如何用macro实现 [推广有奖]

版主

已卖:302份资源

大师

37%

还不是VIP/贵宾

-

TA的文库  其他...

Software

中英文Ebook

R学习

威望
2
论坛币
183395 个
通用积分
15333.1475
学术水平
208 点
热心指数
271 点
信用等级
174 点
经验
298627 点
帖子
5586
精华
1
在线时间
13632 小时
注册时间
2006-6-21
最后登录
2025-12-22

初级学术勋章 初级热心勋章 中级热心勋章 初级信用勋章

楼主
dxystata 发表于 2017-2-20 13:44:55 |AI写论文
80论坛币
  1. data bbb;
  2. input id treat$ jc$ visit a b c d asig bsig csig dig;
  3. label a="aaaa"
  4.       b="bbbb"
  5.       c="cccc"
  6.       d="dddd";
  7. cards;
  8. 1 AB aa 2 1 2 11 12 1 1 1 2
  9. 1 AB aa 6 2 3 12 13 1 2 1 2
  10. 1 AB aa 8 3 4 13 14 1 1 1 1
  11. 2 BA aa 2 4 5 14 15 2 2 2 2
  12. 2 BA aa 6 5 6 15 16 1 1 2 2
  13. 2 BA aa 8 6 7 16 17 2 3 3 3
  14. ;
  15. run;
复制代码
数据中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


关键词:Macro acr CRO Mac 如何用 visit treat 如何

沙发
wwang111 发表于 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);

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

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2026-1-7 17:39