Поиск…
Вступление
Информации и форматы используются, чтобы сообщить SAS, как читать и записывать данные соответственно. Информации обычно используются в datastep при чтении данных из внешнего файла. Информации редко используются в PROC. Форматы обычно используются как на этапах данных, так и на PROC.
замечания
Форматы SAS преобразуют числовые или символьные значения в значения символов. Формат может быть применен с использованием оператора format
или put
, который изменяет способ отображения значения или использует функцию put
для хранения форматированного значения в новой переменной.
Существует четыре категории форматов:
- Character - указывает SAS на запись значений символьных данных из символьных переменных.
- Дата и время - инструктирует SAS записывать значения данных из переменных, которые представляют даты, время и время.
- ISO 8601 - инструктирует SAS записывать значения даты, времени и даты и времени, используя стандарт ISO 8601.
- Numeric - указывает SAS на запись числовых значений данных из числовых переменных.
Форматы обычно принимают форму <formatname><w>.<d>;
, w
- ширина (включая любые десятичные числа и точка), d
- число десятичных знаков.
Общие форматы дат (применяются к значениям даты SAS):
-
date9.
например, 02AUG2016 -
ddmmyyn8.
например 02082016 -
ddmmyy8.
например, 02/08/16 -
yymmdd10.
например, 20160802 -
year4.
например, 2016 год
Общие числовые форматы (применяются к номерам):
-
comma11.0
например, 1 234 567 -
comma12.2
например, 1 234 567,00 -
dollar11.2
например, 5 789,12 долларов США -
nlmnlgbp11.2
например, 2468,02
Другие форматы:
-
$hex8.
, конвертировать строку в шестнадцатеричную -
$upcase.
, конвертировать строку в верхний регистр -
$quote.
, заключить строку в кавычки
Полный список форматов можно найти здесь> https://support.sas.com/documentation/cdl/en/lrdict/64316/HTML/default/viewer.htm#a001263753.htm
Использование оператора формата
Оператор format
применяет данный формат к указанной переменной только для целей отображения , то есть базовое значение не изменяется.
data example1 ; Date = '02AUG2016'd ; /* stored as a SAS date, i.e. a number */ Date2 = '31AUG2016'd ; format Date monyy7. Date2 yymmddn8. ; run ;
Дата | Дата2 |
---|---|
AUG2016 | 20160831 |
Использование оператора формата для группировки данных
Вы можете применять форматы в рамках процедуры, например, для изменения группировок в proc summary
proc freq
или proc freq
.
Группировка дат SAS
data example2 ; do Date = '01JUN2016'dt to '31AUG2016'dt ; Days = 1 ; output ; end ; run ; /* Summarise by year & month */ proc summary data=example2 nway ; class Date ; var Days ; output out=example2_sum (drop=_TYPE_ _FREQ_) sum= ; format Date yymmn6. ; /* e.g. 201606 */ run ;
Дата | дней |
---|---|
201606 | 30 |
201607 | 31 |
201608 | 31 |
/* Summarise by month & year */ proc summary data=example2 nway ; class Date ; var Days ; output out=example2_sum2 (drop=_TYPE_ _FREQ_) sum= ; format Date monyy7. ; /* e.g. JUN2016 */ run ;
Дата | дней |
---|---|
JUN2016 | 30 |
JUL2016 | 31 |
AUG2016 | 31 |
Преимущество использования формата заключается в том, что порядок естественного сортировки сохраняется.
Например, используя sashelp.class
, скажем, вы хотели сравнить частоту первой буквы каждого имени. Вы можете использовать функцию substr()
чтобы найти первую букву, и запустить proc freq
для новой переменной. Кроме того, вы можете применить $1.
формат для переменной Name
:
proc freq data=sashelp.class ; table Name ; format Name $1. ; run ;
название | COUNT |
---|---|
7 | |
В | 4 |
С | 2 |
и т.п. |
Пользовательские форматы
Пользовательские форматы, также известные как пользовательские форматы, могут быть созданы и использованы как любые другие форматы по умолчанию.
/*Create new character format for state variables*/
PROC FORMAT;
VALUE $statef 'CA' = 'California'
'MA' = 'Massachusetts'
'NY' = 'New York';
/*Once created, you can use your custom format in PROC and DATA steps*/
PROC PRINT DATA=table;
FORMAT state-var $statef.;
RUN;
Переменная state-var
будет напечатана в соответствии с новым форматом. Например, значение 'CA'
будет напечатано как 'California'
. Если значение не было отформатировано, например 'CT'
, тогда это значение будет напечатано, как оно отображается в наборе данных.
Использование информации для чтения данных
Информаты используются, чтобы сообщить SAS, как читать данные, и идентифицировать их с помощью informat
сообщения.
data test;
infile test.csv;
informat id $6.
date mmddyy10.
cost comma10.2
;
input @1 id
@7 date
@20 cost
;
run;
Информации и форматы также могут использоваться вместе для чтения в данных и записывать их в другом формате, например, с переменной зарплаты ниже:
DATA workers;
informat first last $16.;
informat salary 12.1;
informat birthdate 8.;
input
first $
last $
birthdate
salary;
format salary dollar10.;
datalines;
John Smith 19810505 54998.5
Jane Doe 19950925 45884.5
Frank James 19600222 70000.5
Jamie Love 19630530 292000.5
;
run;