作者shga (我爱慢慢跑)
看板Statistics
标题[程式] SAS中 MACRO 变数问题
时间Tue Aug 18 16:24:04 2015
[软体程式类别]:
SAS
[程式问题]:
资料处理
[软体熟悉度]:
中(3个月到1年)
[问题叙述]:
资料drug中的药品栏位(drugname)包含很多药品,以A,B,C.D...Z为例。
我想要把每一个药品资料都输出独立的档案
例如
data A; set drug; if drugname = "A"; run;
data B; set drug; if drugname = "B"; run;
...
转换成MACRO,则如下
%MACRO out(type); /*每个药进行分析*/
data &type;
set drug;
if drugname = "&type" ;
run;
%MEND;
%out(A);
%out(B);
但由於加入了双引号,所以"&type" 无法转换成 "A"。
因此就无法输出,请问各位该如何解决这个问题呢?
我使用另外一种方式,先在原始资料库,将每一个药品A,B,C给予对应的数值1,2,3
当使用等於数值,则无需加双引号,可以成功。
但想请教如何在MACRO中 使用 等於MACRO文字变数的方式。
有人建议使用symput ,但不太清楚正确使用。
%MACRO out(type,no); /*每个药进行分析*/
data &type;
set drug;
if drugname = &no ;
run;
%MEND;
%out(A,1);
%out(B,2);
-----------------------------------------------------------------------------
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 203.71.94.5
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Statistics/M.1439886246.A.B9C.html
※ 编辑: shga (203.71.94.5), 08/18/2015 16:28:20
1F:推 imaltar: 药名很复杂 有大小写各种组合 不是每总组合都可拿来当 08/18 19:44
2F:→ imaltar: DATA的名称 08/18 19:44
3F:→ shga: 已经有先使用atc_code,把药名标准化。 08/18 19:53
4F:→ shga: 在建立某药品资料的时候,以限定约25类的药名资料。 08/18 19:54
5F:→ MOONY135: 记得双引号应该不用... 08/18 20:13
6F:推 boshings: &type 就是文字变数了 SAS巨集变数预设都是文字型态 08/18 20:15
7F:→ MOONY135: IF 改成WHERE看看 08/18 20:32
8F:推 tew: call symput 08/18 21:18
9F:→ MuteSun: 建议用ATC CODE或是健保码统一格式再做, 08/24 08:05