Форматирование SAS и INTNX



Я пытаюсь увидеть, попадает ли переменная в границу дат.
Я ненавижу дату 1 уже в MMDDYY10.



Я использую следующий код



DATA GIANT; 
SET GIANT;
UPPER_BOUND= intnx('week', DATE1, 2);
run;


Это возвращает мне что-то в Num 8.



Я хочу восстановить его в MMDDYY10., чтобы сравнить с другими датами.

Два Вопроса:




  1. Как я могу преобразовать число длины 8 в дату?

  2. Почему intnx ... предназначен для работы с датами, возвращающими числовое значение, а не что-то в одном и том же формат?


Я попытался преобразовать его следующим образом:



DATA GIANT; 
SET GIANT;
UP_DATE=INPUT(PUT(UPPER_BOUND, 8.), MMDDYY10.);
FORMAT UP_DOS MMDDYY10.;
run;


Но теперь все это выглядит как нуль.
745   1  

1 ответ:

Даты SAS всегда числовые (#дней с 1/1/1960). Форматы дат-это просто способ сделать эту цифру читаемой. INTNX возвращает числовое значение, потому что это все, что есть дата; вы можете применить формат даты к новой переменной.

В вашем случае все очень просто. Вы почти получили его правильно в вашей попытке, но вам не нужен бизнес ввода / вывода.
data giant;
  set giant;
  upper_bound=intnx('week',Date1,2);
  format upper_bound MMDDYY10.;
run;

INPUT преобразует читаемый человеком текст в значение (обычно в число). PUT преобразует значение в читаемое человеком текст. PUT(INPUT(...)) обычно используется для преобразования форматированного значения в другой вид форматированного значения (например, для преобразования строки "1/1/1960" в "01JAN1960"); INPUT(PUT(...)) не очень часто используется, если вы не разбираете строку, созданную PUT (например, для чтения только определенного элемента даты или что-то подобное). Оба изменяют тип (от числового до символьного в PUT или другим способом во входных данных) в большинстве случаев и, конечно, изменяют фактическое сохраненное значение.

Применить формат к числовой столбец оставляет столбец как числовой (что обычно хорошо), но сообщает SAS, как отобразить этот числовой столбец, чтобы вы могли его понять (также обычно хорошо). Таким образом, под значением находится 19857, но то, что отображается, является 05/14/2014.

Comments

    Ничего не найдено.