2014-12-12 2 views
2

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

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

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

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

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

два вопроса:

  1. Как я могу преобразовать NUMERIC длиной 8 в дату?
  2. Почему intnx ... предназначен для работы с датами, возвращает числовое значение, а не что-то в том же формате?

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

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

, но теперь все это приходит в нуль.

ответ

5

Даты SAS всегда являются числовыми (количество дней с 01.01.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 или другим способом в INPUT) в большинстве случаев и, конечно, изменяют фактическое сохраненное значение.

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

+0

СПАСИБО ТАК МНОГО! Это имеет больше смысла. –

+0

Вы мужчина, Джо. –