2017-01-12 4 views
0

Я искал поисковой запрос в течение нескольких часов (вкл./Выкл.), Чтобы найти ответ на этот вопрос.SAS - переформатирование от непрерывной переменной до категориальной

У меня есть числовое (категориальное) поле, которое, я думаю, SAS автоматически считается непрерывным. Это номер клиента, и SAS автоматически разбивает его на графиках, когда мне это нужно как отдельный элемент. Может ли кто-нибудь с опытом работы с SAS объяснить мне, как переформатировать непрерывное число до категориального?

На самом деле нет никакого смысла отправлять какой-либо код, потому что это очень общий вопрос. Мои данные выглядят так, и это поле custno, которое я пытаюсь изменить категориально, используя функцию формата.

Obs custno gender age postcode Region cnt 
1 1 Male 48 18 S 50 
2 2 Female 56 20 N 38 
3 3 Female 51 25 N 50 
4 4 Male 27 9 W 16 

Любая помощь будет принята с благодарностью.

спасибо, говядина

data customers_full; 
merge customers_pc (in=cust_pc) orders_flat (in=ord); 
by custno; 
if cust_pc; 
drop date _FREQ_ _TYPE_; 
format gender gender_fmt.; 
custno_char = put(custno, best32. -1); 
/*Region = tranwrd(Region,"N","North"); */ 
/*if Region="N" then Region="North";*/ 
run; 
+0

Хотя я отправил ответ, мне было бы интересно узнать, как это происходит, поскольку я не вижу его на первый взгляд. – Reeza

+0

Я только что сделал попытку использования этого - ввел код в мой оригинальный пост. получение синтаксической ошибки (это может быть что-то очевидное, я только что взял sas ...) thx @Reeza – roastbeeef

+0

В PUT последним параметром является L (буква L), а не 1. Это используется для выравнивания слева вывод. И теперь, когда я думаю об этом, он должен быть -r, для правильного выравнивания. Это также необязательно. – Reeza

ответ

0

Изменить его символьной переменной, а не числовой переменной, вам необходимо создать новую переменную, чтобы сделать это.

custno_char = put(custno, best32. -l); 

Затем используйте эту переменную в своих программах.

EDIT: -l используется для выравнивания данных слева, если вы хотите, чтобы выравнивание по правому краю изменилось на -r. Вы также можете опустить его полностью, так как это необязательный параметр.

custno_char = put(custno, best32. -r); 
Смежные вопросы