楼主: blliufan
4718 29

[原创博文] 求高手,小弟又来了 [推广有奖]

21
blliufan 发表于 2012-2-14 12:13:22
blliufan 发表于 2012-2-14 12:12
这个程序我打进去了。那个求到的nob3是在哪里储存的。如何调用啊。
1456  proc sql noprint;
1457  select count(*) into :nobs3 from c3;
1458  quit;
NOTE: PROCEDURE SQL used (Total process time):
      real time           0.13 seconds
      cpu time            0.01 seconds
日志,就是这样,没有错误,但是我也不清楚哪里找nob3
jennings!

22
blliufan 发表于 2012-2-14 12:21:17
zhangzachary 发表于 2012-2-14 09:57
你用call symput("nobs3",coalesce(nobs,0))来代替原code试试看~
哈哈,我想了个办法。我给每个数据集都加了一行,这样保证没有不是0观测的数据集。然后你的方法就可用了
jennings!

23
zhangzachary 发表于 2012-2-14 12:29:05
blliufan 发表于 2012-2-14 12:21
哈哈,我想了个办法。我给每个数据集都加了一行,这样保证没有不是0观测的数据集。然后你的方法就可用了
nobs3就是宏变量了,用&nobs3解析
寒冰凤凰 My blog: http://blog.sina.com.cn/u/1058955485

24
逍遥我游 发表于 2012-2-14 22:13:47
楼主处女程序,就调用宏了,厉害,记得我的处女程序就是用data步创建了一个变量一个观测的数据集

25
blliufan 发表于 2012-2-15 21:35:15
逍遥我游 发表于 2012-2-14 22:13
楼主处女程序,就调用宏了,厉害,记得我的处女程序就是用data步创建了一个变量一个观测的数据集
往往第一次都不止一次。我也是从data步开始,马上就进入新花样了
jennings!

26
blliufan 发表于 2012-2-15 23:11:59
zhangzachary 发表于 2012-2-14 12:11
更好啊,一般是向下兼容的,应该可以直接用~
%macro yes;
data c;
set c;
minb=(nhigh-high)*100/high;
call symput('minb',minb);
run;
%if &minb<1 %then %yestrade;
%else %notrade;
%mend yes;
问高手,我这个怎么会错啊;
报错说
ERROR: A character operand was found in the %EVAL function or %IF
       condition where a numeric operand is required. The condition
       was: &minb<1
ERROR: The macro YES will stop executing.
jennings!

27
jingju11 发表于 2012-2-15 23:21:17
change to:
%sysevalf(&minb<1)

jingju

28
blliufan 发表于 2012-2-16 10:04:20
jingju11 发表于 2012-2-15 23:21
change to:
%sysevalf(&minb
3Q
但比较奇怪的是,我前面也用了类似的语句,却没有提醒错误。
jennings!

29
hottwyoming 发表于 2012-2-21 11:19:36
支持

30
Jackywolf_2008 发表于 2012-2-22 20:06:47
简单的方法就是对obs1... obsn先用%let 语句初始化为0,这样就可以了,如果数据集中有观测,则该值就会被替换,没有就还是0,就不会持续按not resolve的问题了。

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

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