Как мне отформатировать новые переменные, которые я создаю? - PullRequest
0 голосов
/ 26 января 2019

Я пытаюсь создать новую переменную в SAS. Я использую если тогда логику, чтобы создать новую символьную переменную. Однако переменная усекается. Как мне отформатировать новую переменную, чтобы появились все символы?

DATA Clinic;
set stat201.clinic;
rename age_at_consent=Age ldiastolic=dbp lsystolic=sbp ldobp=datebp;
if smoking="" then smoking="Missing";
if smokecat=0 then smokecat_1="Never Smoker";
if smokecat=1 then smokecat_1="Current Everyday Smoker";
if smokecat=2 then smokecat_1="Former Smoker";
if smokecat=9 then smokecat_1="Never Assessed";
attrib smokecat_1 format =$25.;
drop smokecat;
rename smokecat_1= smokecat;
run;   

Ответы [ 2 ]

0 голосов
/ 28 января 2019

В дополнение к ответу Тома выше:

SAS определит переменную тип и длину в зависимости от того, когда она появляется впервые.

Я согласен, что хорошей практикой является определение переменной перед ее использованием.

0 голосов
/ 26 января 2019

SAS будет определять переменную в зависимости от того, когда она появляется впервые.Поскольку первое появление в этом операторе присваивания.

if smokecat=0 then smokecat_1="Never Smoker";

Он будет определен как символьная переменная длиной 12.

Просто определите переменную ДО того, как ее использовать.Вы можете использовать оператор LENGTH

length smokecat_1 $25;

или оператор ATTRIB для определения переменной.

attrib smokecat_1 length=$25;

Присоединение формата $25. не меняет длинупеременная.Это просто означает, что вы хотите, чтобы SAS использовал 25 символов для отображения значений.Но эта переменная будет по-прежнему содержать только 12 символов.Нет необходимости прикреплять любой формат к переменной.Форматы - это инструкции о том, как отображать значения, а SAS уже знает, как отображать значения символов.

...