2016-12-20 2 views
1

Я хочу создать набор данных SAS только с одним столбцом, имеющим месяц значения в yymmn6. формат. Диапазон данных должен быть отSAS - Создайте набор данных с столбцом месяца в yymmn6. format

call symput('enddt',trim(left(intnx('month',today(),-2),yymmn6.))); 
call symput('startdt',trim(left(intnx('month',today(),-14),yymmn6.))); 

Теперь с этим, если я

data months; 
    do date = &startdt to &enddt; 
     output; 
    end; 
run; 

я получаю OUTPUT

 201511 
    201512 
    201513 
    201514 
    201515 
    201516 
    . 
    . 
    201610 

Но результат я ищу,

 201511 
    201512 
    201601 
    201602 
    201603 
    201604 
    . 
    . 
    201610 

Может кто-то помочь!

ответ

0

Возможно, вы должны сделать это несколько иначе. Я бы сделал два бита за один шаг.

data months; 
    do mon_incr = -14 to -2; 
    date = intnx('month',today(),mon_incr); 
    output; 
    end; 
    format date YYMMN6.; 
run; 

Вы можете поместить значение в строку символов, если вы хотите в дату = присвоение, или оставить его отформатированную дату, как я здесь.

Проблема с тем, что вы делаете, заключается в том, что вы конвертируете его в обычный номер, у которого нет памяти о дате на шаге симметрии вызова; так что видит

do month = 201511 to 201610; 
    ... 
end; 

и думать, что вы имели в виду «сделать двести одна тысяча пятьсот одиннадцать на двести одна тысяча шестьсот десять», а не «сделать двадцать пятнадцать ноября в двадцать шестнадцать октября».

Смежные вопросы