Поиск…


Вступление

Информации и форматы используются, чтобы сообщить 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;


Modified text is an extract of the original Stack Overflow Documentation
Лицензировано согласно CC BY-SA 3.0
Не связан с Stack Overflow