Основной вопрос SAS: почему MACRO? - PullRequest
2 голосов
/ 20 октября 2010

В чем уникальность и преимущество SAS MACRO над процедурами SAS?Если цель макроса состоит в том, чтобы уменьшить усилие по повторению задач для разных входных данных, разве это не может быть выполнено в виде процедур?

Ответы [ 5 ]

4 голосов
/ 21 октября 2010

Пользователи SAS делают имеют возможность создавать свои собственные SAS PROC.Они должны лицензировать SAS / Toolkit и код на C или на некоторых других языках.

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

4 голосов
/ 21 октября 2010

Это все равно, что спросить, почему у нас есть Perl, Python, ksh, bash и т. Д., Когда у нас есть все программы, доступные в UNIX. Макросы - это язык сценариев, который дает пользователям большую гибкость и контроль над тем, что они хотят, чтобы SAS делал. Вы также можете легко генерировать динамический код. Существующие процедуры довольно жесткие в том, что они могут принимать в качестве входных данных и что вы получаете в качестве выходных данных. Proc FCMP открыл шаг данных для пользовательских функций, но это все еще не заменяет гибкость, которую вы получаете с языком макросов.

3 голосов
/ 04 ноября 2010

Существует множество применений и расширенных функций макросов, но я в основном просто использую их, чтобы попытаться остаться верным DRY Princicple .Если вы оказались в ситуации, когда вы часто повторяете блоки кода, возможно, вы захотите сделать это.Например, я экспортирую наборы данных, чтобы все время превосходить.Если в конечном итоге я делаю это несколько раз в своем коде, я просто помещаю код в макрос:

%macro export_set_excel(data,path,filename,sheetname);
    PROC EXPORT DATA= &data. OUTFILE= "&path.&data." DBMS=EXCEL REPLACE;
      SHEET="&sheetname."; 
      NEWFILE=YES;
    RUN;
%mend export_set_excel;

Затем, когда я продвигаюсь в своем коде.Я делаю набор данных и хочу экспортировать его, я могу просто написать:

%export_set_excel (data=MyDataSet, path=C:\Temp\, filename=mydata.xlsx, sheetname=exportedData);

Это одна простая строка, которую я должен написать 30 раз в одном файле вместо того, чтобы писать 7 или 8 строк 30раз.Это помогает отследить ошибки, и если я хочу что-то изменить в том, как я экспортирую, я просто должен изменить это в одном месте.

Я использую его для гораздо большего, чем просто для экспорта, но это должно дать вам общее представление.

Если вы знакомы с другими языками, вы найдете, что язык макросов sas довольно отсутствуетгромоздким, но это определенно лучше, чем ничего.

2 голосов
/ 05 марта 2011

Большинство процедур SAS выполняют определенные операции с данными.Макросы позволяют выполнять условную обработку блоков кода SAS во время выполнения, например, повторять вызов процедуры для различных наборов данных с помощью цикла DO или принимать решение выполнить шаг данных в зависимости от того, существует ли файл.

Покановичкам код кажется неуклюжим, на самом деле его довольно легко найти после изучения BASE SAS, поскольку синтаксис практически идентичен (с разбросом% s и @s для аромата).

1 голос
/ 01 ноября 2010

вы можете создать собственный макрос без лицензионного инструментария, и, насколько я помню, не многие люди используют SAS Toolkit для пользовательских процедур.

макросы помогают многократно запускать программы с настроенными параметрами и неоценимы для манипулирования и создания переменных

процы обычно являются устройствами вывода. макросы также могут помочь в повторных пошаговых манипуляциях с данными.

вот код

enter image description here

...