2013-12-04 4 views
2

У меня есть набор данных с переменной, которая имеет дату заказа (MMDDYY10.). Мне нужно выделить месяц и год, чтобы посмотреть заказы по месяцам, потому что существует несколько лет. Я смутно знаю функции и year, но как их использовать для создания нового месяца?Извлечь месяц и год для новой переменной

В идеале я хотел бы создать ящик за каждый месяц/год, поэтому мой вывод может выглядеть примерно так:

    Date 
Item 2011OCT 2011NOV 2011DEC 2012JAN ... 
a   50  40  30  20 
b   15  20  25  30 
c   1  2  3  4 
total  

Вот пример кода, я создал:

data dsstabl; 
    set dsstabl; 
    order_month = month(AC_DATE_OF_IMAGE_ORDER); 
    order_year = year(AC_DATE_OF_IMAGE_ORDER); 
    order = compress(order_month||order_year); 
run; 

proc freq data 
    table item * _order; 
run; 

Заранее спасибо!

ответ

2

Когда вы проводите анализ, используйте соответствующий формат. MONYY. звучит как правильный. Это будет правильно сортироваться и соответствующим образом будет группировать значения. Что-то вроде:

proc means data=yourdata; 
class datevar; 
format datevar MONYY7.; 
var whatever; 
run; 

Так ваш стол:

proc tabulate data=dsstabl; 
class item datevar; 
format datevar MONYY7.; 
tables item,datevar*n; 
run; 
+0

Джо, вы просто зажигаете мой мир сегодня. Не могу вас поблагодарить. Я как раз собирался изменить свой вопрос, чтобы включить новый код для обратной связи - обновить выше. Но ваше предложение кажется более эффективным. – Jebediah15

+0

Проблема (или полезность, иногда) изменения ее в поле символов заключается в том, что вы получаете другой порядок сортировки. Ваш подход в верхней части не является необоснованным, если вы не возражаете, чтобы порядок сортировки был в алфавитном порядке по месяцам, а не в порядке даты (хотя у вас есть неправильные имена переменных в компрессии). Кроме того, функция 'CATS' будет выполнять сжатие + конкатенация в одном. – Joe

+0

Должен ли я сделать вид, если бы я хотел расслоить «Item»? – Jebediah15

0

Или вы можете сделать это с хорошим трюком.

data my_data_with_months; 
    set my_data; 
    MONTH = INTNX('month', NORMAL_DATE, 0, 'B'); 
run; 

Всегда пользуйтесь им.

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