由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
Statistics版 - SAS help
相关主题
a question about SAS请问SAS ADV 130中74 和80题
Need advice on SAS macro debugging请教SAS adv 题库一道macro题
请帮忙看3道SAS题。在线等:急问大牛帮我看看SAS macro里的问题
问个SAS题目,SAS里用macro的文件名里数字的问题
请问SAS advanced macro global 和localIn SAS , How to call a macro thousands of times?
SAS ADVANCED 一道题求助[合集] 一个sas问题
SAS call symput questionkilltest Q78 79 80
求助,SAS ADV 130 中94一道ADV 130 题目
相关话题的讨论汇总
话题: macro话题: data话题: ur话题: sas话题: match
进入Statistics版参与讨论
1 (共1页)
a********a
发帖数: 3176
1
I need to match cases in data file A with cases in data B, by closest values
, and without replacement, so it has to be one to one match.
I have to sort file A randomly, and then take each of the records in A to
select a match in B. Once a record in B is selected, it is dropped from the
pool.
I wnat to use a do loop in the macro, but how can I get a macro variable
with the value of the number of records in A? The following didn't work:
data A;
set A;
by Radom_Order;
Order=_n_;
%do x=1 %to
A*******s
发帖数: 3942
2
i don't understand most of questions you asked.
For this one, "how can I get a macro variable with the value of the number
of records in A"
two ways:
data _null_;
set A nobs=nobs;
call symput('Ur_Macro', nobs);
run;
proc sql;
select distinct * into: Ur_macro
from A;
run;

values
the

【在 a********a 的大作中提到】
: I need to match cases in data file A with cases in data B, by closest values
: , and without replacement, so it has to be one to one match.
: I have to sort file A randomly, and then take each of the records in A to
: select a match in B. Once a record in B is selected, it is dropped from the
: pool.
: I wnat to use a do loop in the macro, but how can I get a macro variable
: with the value of the number of records in A? The following didn't work:
: data A;
: set A;
: by Radom_Order;

a********a
发帖数: 3176
3
谢谢啊. 但该怎么用'Ur_Macro'呢?
可以
%DO I=1 %TO &Ur_Macro;
DATA A&I;
SET A;
IF _N_=I;
%END;
吗? 好象SAS不认这个MACRO VARIABLE.
ERROR:CHARACTER OPERAND WERE FOUND....

【在 A*******s 的大作中提到】
: i don't understand most of questions you asked.
: For this one, "how can I get a macro variable with the value of the number
: of records in A"
: two ways:
: data _null_;
: set A nobs=nobs;
: call symput('Ur_Macro', nobs);
: run;
: proc sql;
: select distinct * into: Ur_macro

A*******s
发帖数: 3942
4
这个i也是macro var的,要写成
if _n_=&i;
我不大明白你这个macro的目的,不过下面这个效率应该会高一些
%do i=1 %to &ur_macro;
data a&i;
set A point=&i;
output;
stop;
run;
%end;

【在 a********a 的大作中提到】
: 谢谢啊. 但该怎么用'Ur_Macro'呢?
: 可以
: %DO I=1 %TO &Ur_Macro;
: DATA A&I;
: SET A;
: IF _N_=I;
: %END;
: 吗? 好象SAS不认这个MACRO VARIABLE.
: ERROR:CHARACTER OPERAND WERE FOUND....

a********a
发帖数: 3176
5
我其实写了&I, 可还是
warning:apparent symbolic reference ui_macro not resolved.
还可能是什么问题呢?我也试了你下面的CODE, 还是ui_macro 出一样的问题.

【在 A*******s 的大作中提到】
: 这个i也是macro var的,要写成
: if _n_=&i;
: 我不大明白你这个macro的目的,不过下面这个效率应该会高一些
: %do i=1 %to &ur_macro;
: data a&i;
: set A point=&i;
: output;
: stop;
: run;
: %end;

A*******s
发帖数: 3942
6
丢脸了,我的code应该改成
%macro loop;
%do i=1 %to &ur_macro;
data a&i;
point=&i;
set test point=point;
output;
stop;
run;
%end;
%mend;
%loop
point=后面不能直接跟数字。
你原来的code没有问题啊,看你打出来的,莫非你用了全角文字?

【在 a********a 的大作中提到】
: 我其实写了&I, 可还是
: warning:apparent symbolic reference ui_macro not resolved.
: 还可能是什么问题呢?我也试了你下面的CODE, 还是ui_macro 出一样的问题.

a********a
发帖数: 3176
7
MACRO的目的是让DATA A 里的RECORDS一个一个地和DATA B
里的合起来, 好选配对.
整个MACRO 是MATCHING BY PROPENSITY SCORE.
以前是WITH REPLACEMENT, 即B里的一个RECORD可以配多个
A里的. 现在要改成WIthoutREPLACEMENT, 要一对一地配,所
以要把A们RANDOMLY SORT, 不然分高的A先配,会挑最好的分高的B.
还有什么好办法吗?
不知讲明白了没有.又愁又急.多谢帮忙.
这个i也是macro var的,要写成
a********a
发帖数: 3176
8
谢谢 - 等我把孩子收拾上床后再试.
什么是'半角文字'?

【在 A*******s 的大作中提到】
: 丢脸了,我的code应该改成
: %macro loop;
: %do i=1 %to &ur_macro;
: data a&i;
: point=&i;
: set test point=point;
: output;
: stop;
: run;
: %end;

A*******s
发帖数: 3942
9
说错了,你打出来很多都是全角文字。不过我试过了,sas可以正确识别全角的,不是
这个问题。
你用了我改过后的code也不行么?

【在 a********a 的大作中提到】
: 谢谢 - 等我把孩子收拾上床后再试.
: 什么是'半角文字'?

a********a
发帖数: 3176
10
那个MACRO VARIABLE 还是不行.我得把这个MACRO理一遍,不知
是不是别的DO LOOP 的影响搞错了.
你后面的用'POINT' 的CODE, 如果我把那MACRO VARIABLE 换成
个数, 是行的.
谢谢,等会再求教.

【在 A*******s 的大作中提到】
: 说错了,你打出来很多都是全角文字。不过我试过了,sas可以正确识别全角的,不是
: 这个问题。
: 你用了我改过后的code也不行么?

w*******n
发帖数: 469
11
proc sort data=one; by id; run;
%macro search()
%do i=1 %to num;
%searchone(&i);
%end;
%mend;
%macro searchone(index);
data oneobs;
set DatA(firstobs=&index obs=&index);
run;
data one;
if 1=1 then delete;
run;
data dataB one;
merge oneobs(in=inone) dataB(in B);by id;
if inone & B then output one;
if inone & B then delete;
output dataB;
data match;
set match one; run;
%mend;
a********a
发帖数: 3176
12
谢谢 - 可我不是MATCH ON ID,而是要找最相近的值, 是不是和你下面的不一样?

【在 w*******n 的大作中提到】
: proc sort data=one; by id; run;
: %macro search()
: %do i=1 %to num;
: %searchone(&i);
: %end;
: %mend;
: %macro searchone(index);
: data oneobs;
: set DatA(firstobs=&index obs=&index);
: run;

A*******s
发帖数: 3942
13
给个sample data吧,要不不好debug

样?

【在 a********a 的大作中提到】
: 谢谢 - 可我不是MATCH ON ID,而是要找最相近的值, 是不是和你下面的不一样?
a********a
发帖数: 3176
14
But how? Can a SAS data file be sent to your mailbox?

【在 A*******s 的大作中提到】
: 给个sample data吧,要不不好debug
:
: 样?

1 (共1页)
进入Statistics版参与讨论
相关主题
一道ADV 130 题目请问SAS advanced macro global 和local
请教一个macro的问题SAS ADVANCED 一道题求助
sas macro 问题,SAS call symput question
【包子】求问个简单sas macro问题求助,SAS ADV 130 中94
a question about SAS请问SAS ADV 130中74 和80题
Need advice on SAS macro debugging请教SAS adv 题库一道macro题
请帮忙看3道SAS题。在线等:急问大牛帮我看看SAS macro里的问题
问个SAS题目,SAS里用macro的文件名里数字的问题
相关话题的讨论汇总
话题: macro话题: data话题: ur话题: sas话题: match