如何使用VVALUEX()函数的静态示例。
data result;
V01 = 2;
AMOUNT=100;
CALC = 'value of V01 * AMOUNT';
length arg1 arg2 $32;
arg1 = scan(compress(CALC, 'value of'), 1);
arg2 = scan(compress(CALC, 'value of'), 2);
put arg1 arg2;
result = input(VVALUEX(arg1), 16.) * input(VVALUEX(arg2), 16.);
run;
对于你的情况,你必须创建逻辑来认识都知道的变量CALC,类型patters和格式(自VVALUEX()
返回格式化值)。
一个动态的方法,但可能不适合大量的数据是为每行生成代码(见下文)。 目前假设一个简单的表达式可用于IF .. THEN
。
data input;
length CALC $50;
input V01 M08 AMOUNT CALC 9-58;
cards;
2 1 100 value of V01 * AMOUNT
2 4 100 value of M08 * AMOUNT
;
run;
/* code generation */
data _null_;
file 'mycalc.sas';
set input end=last;
length line $150;
if _N_=1 then do;
put 'data result;';
put ' set input;';
end;
line = 'if _N_ = ' || put(_N_, 8. -L) ||
' then RESULT = ' || compress(CALC, 'value of') || ';';
put line;
if last then put 'run;';
run;
%include 'mycalc.sas'; /* run the code */
好了,现在如果看到我没注意到你关于PLAN场注 - 请调整你所需要的。
你们真是太棒了!!!!!我得到了VVALUEX,但无法弄清楚如何应用它。 – Samuel