我有一张桌子是SAS说t
看起来像这样
A B C D
--------------------------------------------------------------
VOLUME 172631922966528 IMPLIED 2012-10-04
VOLUME 173731441803264 IMPLIED 2012-10-04
PRIX_VOLUME 189124634214400 IMPLIED 2012-10-04
PRIX_VOLUME 123153895784448 IMPLIED 2012-10-04
VOLUME 266090408574976 IMPLIED 2012-10-04
VOLUME 119855364243456 IMPLIED 2012-10-04
D列是Date
(格式yymmdd10
)colume,我有一个值date0
的宏变量2012-10-04
我正在尝试做一个简单的数据步骤
data test;
set t (where=(A eq "VOLUME" and D eq &date0.));
run;
但这不起作用
你能帮忙解决一下吗?
答案 0 :(得分:3)
那是因为当处理宏变量时,你得到:
data test;
set t (where=(A eq "VOLUME" and D eq 2012-10-04));
run;
哪个SAS将解决为:
数据测试;
set t(where =(A eq“VOLUME”和D eq 1998));
跑;
因为它看数学而不是约会。
您需要向SAS明确说明:
1.它不是代数。
2.应将其视为日期。
要将其作为字符串读取,请添加引号。要明确字符串表示日期,请在引号后附加d:
data test;
set t (where=(A eq "VOLUME" and D eq "&date0."d));
run;
这应该可以解决问题。