使用逻辑比较对日期范围进行分组



我有一个有日期的数据集,我需要把所有的数据分成4组。下面是我尝试运行的代码。
我得到以下错误:

ERROR 22-322: Syntax error, expecting one of the following: !, !!, &, (, *, **, +, -, /, <, <=, <>, =, >, ><, >=, AND, EQ, GE, GT, 
LE, LT, MAX, MIN, NE, NG, NL, OR, [, ^=, {, |, ||, ~=.  
Data _null_;
call symput ('timenow',put (time(),time.));
call symput ('datenow',put (date(), date9.));
run;
data Unemployment_Groups;
set WORK.import;
if missing(observation_date) then unemployment_Grp = .;
else if observation_date le 1969-12-31 THEN Unemployment_Grp = 1;
else if observation_date ge 1970-01-01 AND le 1984-12-31 THEN Unemployment_Grp = 2;
else if observation_date ge 1985-01-01 AND le 2007-12-31 THEN Unemployment_Grp = 3;
else if observation_date ge 2008-01-01 THEN Unemployment_Grp = 4;
run;
title "The current time is &timenow and the date is &datenow";
proc print data=Unemployment_Groups (obs=10) noobs;
run;

您的日期值没有被识别,日期文字的一般语法是'DD Mon YYYY'd(例如2022年11月27日将是'27NOV2022'd)。
你也没有正确使用逻辑运算符。

试试这个:

data unemployment_groups;
set import;
if missing(observation_date) then unemployment_Grp = .;
else if observation_date le '31DEC1969'd then Unemployment_Grp = 1;
else if '01JAN1970'd <= observation_date <='31DEC1984'd then Unemployment_Grp = 2;
else if '01JAN1985'd <= observation_date <='31DEC2007'd then Unemployment_Grp = 3;
else if observation_date ge '01JAN2008'd then Unemployment_Grp = 4;
run;

相关内容

  • 没有找到相关文章

最新更新