z**********i 发帖数: 12276 | 1 我有个id list file, id1, id2, id3,....
用proc sql,把它变成了一个macro variable。
然后,我想把它用在一个macro程序里,自动把id1, id2, id3...,一直读到最后一个
,报告出来,每个id一个。用什么办法?我想或许可以用do-loop.
谢谢! |
s*******e 发帖数: 1385 | 2 proc sql;
select id into: id_var separated by " "
from data
group by id
order by id;
quit;
%do i=1 %to &sqlobs;
%let id_t=%scan(&id_var,i, ' ');
%put &id_t;
%end;
语法不一定对,你可以试试!
【在 z**********i 的大作中提到】 : 我有个id list file, id1, id2, id3,.... : 用proc sql,把它变成了一个macro variable。 : 然后,我想把它用在一个macro程序里,自动把id1, id2, id3...,一直读到最后一个 : ,报告出来,每个id一个。用什么办法?我想或许可以用do-loop. : 谢谢!
|
s*********e 发帖数: 1051 | 3 do loop 没有效率,直接用data step 调用宏。there is an implicit iterator in
the data step.
在我的博客里有类似的例子。
【在 z**********i 的大作中提到】 : 我有个id list file, id1, id2, id3,.... : 用proc sql,把它变成了一个macro variable。 : 然后,我想把它用在一个macro程序里,自动把id1, id2, id3...,一直读到最后一个 : ,报告出来,每个id一个。用什么办法?我想或许可以用do-loop. : 谢谢!
|
z**********i 发帖数: 12276 | 4 非常感谢!能给个连接吗?
【在 s*********e 的大作中提到】 : do loop 没有效率,直接用data step 调用宏。there is an implicit iterator in : the data step. : 在我的博客里有类似的例子。
|
z**********i 发帖数: 12276 | 5 谢谢!这个跟我想的差不多.
【在 s*******e 的大作中提到】 : proc sql; : select id into: id_var separated by " " : from data : group by id : order by id; : quit; : %do i=1 %to &sqlobs; : %let id_t=%scan(&id_var,i, ' '); : %put &id_t; : %end;
|
z**********i 发帖数: 12276 | 6 blog has been removed.
【在 s*********e 的大作中提到】 : do loop 没有效率,直接用data step 调用宏。there is an implicit iterator in : the data step. : 在我的博客里有类似的例子。
|
k*******a 发帖数: 772 | 7 下面这个例子可能和你比较类似 (来源:http://www.ats.ucla.edu/stat/sas/seminars/sas_macros_introduction/)
%macro mylogit1(all_deps);
%let k=1;
%let dep = %scan(&all_deps, &k);
%do %while("&dep" NE "");
title "dependent variable is &dep";
proc logistic data=xxx des;
model &dep = ind1 ind2;
run;
%let k = %eval(&k + 1);
%let dep = %scan(&all_deps, &k);
%end;
%mend;
*run the program for the first three v's;
%mylogit1(v1 v2 v3) |
z**********i 发帖数: 12276 | 8 用do-loop应该是可以的,statcompute说的很好,这个不如data step效率高,如果
list里面有很多的话,比如1000。
昨天,被老印用这个问题给面了。所以,到这里来请教一下。
谢谢你的回复!
【在 k*******a 的大作中提到】 : 下面这个例子可能和你比较类似 (来源:http://www.ats.ucla.edu/stat/sas/seminars/sas_macros_introduction/) : %macro mylogit1(all_deps); : %let k=1; : %let dep = %scan(&all_deps, &k); : %do %while("&dep" NE ""); : title "dependent variable is &dep"; : proc logistic data=xxx des; : model &dep = ind1 ind2; : run; : %let k = %eval(&k + 1);
|
s*********e 发帖数: 1051 | 9 https://statcompute.wordpress.com/2013/03/17/passing-many-parameter-values-
into-a-macro-iteratively/
【在 z**********i 的大作中提到】 : 用do-loop应该是可以的,statcompute说的很好,这个不如data step效率高,如果 : list里面有很多的话,比如1000。 : 昨天,被老印用这个问题给面了。所以,到这里来请教一下。 : 谢谢你的回复!
|
z**********i 发帖数: 12276 | 10 Thanks! Very helpful.
【在 s*********e 的大作中提到】 : https://statcompute.wordpress.com/2013/03/17/passing-many-parameter-values- : into-a-macro-iteratively/
|