Полную ссылку на операторов SAS можно найти в справке SAS, выполнив поиск SAS Operators in Expression
.В выражениях SAS могут использоваться некоторые операторы, которые являются относительно уникальными по всему спектру языков кодирования.Вот некоторые из них, которые обычно не встречаются во вновь закодированном SAS (на момент публикации)
<>
оператор MAX ><
оператор MIN - подразумевается
AND
оператор
Два сравнения с общей переменной, связанной с И, могут быть сжаты с подразумеваемым И.
Такнепосвященные читатели вопроса могут неправильно понять
…
if today()+35 = Week > today()+30 then group=5;
…
как неверный, вместо того, чтобы признать его как подразумеваемый И
…
if today()+35 = Week AND Week > today()+30 then group=5;
…
Когда синтаксически правильно, =
в implied AND
заставляет выражение быть истинным только на равенстве.Значение недели в открытый интервал (сегодня () + 35, сегодня () + 34) никогда не будет оцениваться как истинное в вышеприведенном выражении.Это вероятная причина пропущенных значений (.
), которые вы видите.
- Почему код демонстрирует нестатическую дельту 7 в последовательности
30,23,16,11,2,-5
? - Должно ли это быть
30,23,16,9,2,-5
. - Другими словами, почему группа 1, очевидно, стреляет для 5-дневного диапазона [+7, +2), когда все остальные 3, например [+14, +11)?
- Почему существуют двухдневные домены, предполагаемые выходные, в которых группа не назначена и, следовательно, будет отсутствовать (
.
)?
Этот тип кода обоев часто лучше представить арифметическим выражением.
Например, предполагая целочисленные значения даты SAS:
group = ifn ( MOD (week-today(), 7) in (1,2)
, .
, CEIL (week-today() / 7 )
);
if not ( 0 <= group <= 12 ) then group = .; * probably dont want this but makes it compliant with OP;
Завтра значение группы может 'неправильно', потому что это сегодня ().Попробуйте создать код вместо создания постоянного набора данных - ИЛИ - поместите метаинформацию в имя переменной group_on_20190622 = …
Если вы настаиваете на обоях, рассмотрите возможность использования select
оператор, который менее подвержен ошибкам ввода, которые могут произойти с ошибочными точками с запятой или отсутствующими символами.