我有两行数据,
订单 17/01/2016 2014年1月2日
基本上我想运行这样的逻辑;
data A.test_active;
set A.Weekly_Email_files_cleaned4;
length active :8.;
length inactive :8.;
if first.Order between '01Jan2014'd and '31Dec2015'd then active= 1;
if last.order between '01Jan2014'd and '31Dec2015'd then inactive= 1;
run;
字段"订单"当我检查文件属性时,由DDMMYY10格式化,但我一直收到此错误 错误388-185:期待算术运算符。
任何人都可以在同样的徒劳中帮助或建议不同的东西吗?
答案 0 :(得分:2)
在SAS中,between
仅在SQL
上下文中有效:通常是实际的PROC SQL
或WHERE
语句。它在SAS中无效。您可以使用in (firstval:lastval)
代替,如果这些值是整数(日期是)。如果它们不是整数,则需要使用if firstval le val le lastval
或类似的(也可以使用ge/lt/gt/>/<
或任何您喜欢的内容,具体取决于事物的顺序。)
其次,first.order
和last.order
是布尔值 - 1或0,没有别的,表示您在按该变量排序时是新行的第一行的行,或类似的最后一行。如果你打算使用它,你也必须有一个by
语句。
第三,你的长度陈述错了;我想,你在这里混淆了三件不同的东西。如果您使用默认长度8,则不需要数字的长度语句,如果您确实喜欢使用它们,则需要:
length active 8;
否:
或.
,两者都用于不同目的。
答案 1 :(得分:0)
ID first_order Order
alex 01/01/2013 23/01/2015
alex 01/01/2013 23/01/2015
alex 01/01/2013 03/04/2013
基本上如果订单存在于第一个订单之后的某个时间范围内(第一个订单日期的一年内),那么用户就是“活跃的”
任何想法都非常感激 感谢