3 лучших макроса SAS для автоматизации ваших задач
Программирование

3 лучших макроса SAS для автоматизации ваших задач

Выполняйте свою работу за долю времени с помощью макросов SAS

Будучи языком обработки и манипулирования данными, SAS предлагает вам множество эффективных процессов, ориентированных на работу с большими объемами данных

Программы SAS с повторяющимися блоками кода имеют тенденцию становиться длинными и перегруженными кодом; кроме того, ручное написание сценариев может стать трудоемким и монотонным, что увеличивает вероятность ошибок

Итак, как можно автоматизировать участки кода для выполнения повторяющихся задач?

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

Что такое макросы SAS?

Макросы – это переменные, которые можно использовать в кодах SAS для автоматизации повторяющихся задач. При использовании макросов в качестве элементов кодирования макропеременные хранят динамические символьные и числовые значения, включая имена, буквы и цифры

Код макроса состоит из двух строительных блоков – самого макроса и макропеременной. Программы SAS требуют различать их с помощью знаков & и %

Например, если вы пишете &Employee , вы вызываете макропеременную. Но если вы пишете %Employee , вы определяете макропеременную

Зачем использовать макросы SAS?

Использование макросов в коде SAS имеет ряд преимуществ. Они могут помочь вам:

  1. Заменить повторяющиеся строки кода одной единственной переменной.
  2. Зафиксировать изменения в одной переменной и отразить их в нескольких разделах программы.
  3. Ввод значений данных в реальном времени, чтобы сделать ваши программы управляемыми данными и эффективными.

Типы макросов SAS

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

1. Заявление %Let

Макрос %let можно использовать для любых строк или числовых значений. Он имеет следующие характеристики:

● Область видимости переменной находится в пределах от 0 до 65 534

● Математические выражения внутри макропеременной не оцениваются

● Свободное хранение числовых значений в строке

● Вы можете сохранять кавычки как часть символьного значения

● Любые пробелы с ведущими или отстающими символами удаляются перед присвоением

Чтобы объявить макрос %let , используйте имя макропеременной, которому предшествует амперсанд (&)

Вот синтаксис обычного макроса %let :

%letmacro variable = value

Обязательным условием является то, что имя макропеременной должно быть лишено пробелов, иметь длину не более 32 символов и не должно начинаться с числового значения

Вот пример использования оператора %let в его простейшей форме:

%letage = 10;

datasample;

inputname $ age sex $;

cards

Rob 30 M.

Alan 10 M.

Jerry 20 M.

Monica 35 F.

run;

proc sortdata = sample (where= (age NE&age.));

byage;

run;

Вот как этот код выглядит в среде SAS:

При выводе значения в столбце возраст , не равные 10, отфильтровываются, как только выполняется условие. Макропеременная определена рядом с оператором %let , который используется для приравнивания значений в условии

Если вы хотите выполнить значения после изменения условия фильтрации, все, что вам нужно сделать, это изменить значение с 10 на нужное число в операторе %let . Это очень просто; запустите код снова, чтобы увидеть новые результаты

Вот как выглядит результат после выполнения кода:

2. Параметры макроса

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

Например, предположим, вы хотите отсортировать существующий набор данных на основе определенных критериев

datatest_example;

inputID $ name $ age;

cards;

001 John 20.

002 Jack 30.

003 Ron 15.

001 Jack 30.

005 Aon 18.

run;

%macrosorting (in_ds= , sort_var =, out_ds=);

proc sortdata =&in_dsnodupkeyout&out_ds

by&sort_var

run;

%mend

В первом блоке кода создайте набор данных с некоторыми фиктивными значениями. После того как данные будут доступны, можно создать макрооператор внутри операторов %macro и %mend

В операторе %macro можно задать имя макроса, а также локальные переменные, которые будут содержать определенные значения при вызове макроса

Наконец, завершите блок кода макроса с помощью оператора %mend

Чтобы вызвать макрос, передайте оператор макроса следующим образом:

%sorting(in_ds= test_example, sort_var = name , out_ds=test_example_new);

Где:

  • %sorting: имя макропеременной, созданной в операторе макроса.
  • in_ds: имя набора данных для сортировки.
  • sort_var: переменная для использования при сортировке набора данных.
  • out_ds: имя результирующего набора данных, который будет создан после сортировки набора данных.

Связанное: Классные макросы Microsoft Excel для сортировки данных

3. Использование proc sql в качестве переменной макроса

SQL – один из наиболее часто используемых языков в SAS для манипулирования данными и их обработки. При этом крайне важно иметь возможность сохранять значения в переменной SQL для дальнейшего использования. Макросы и SQL – это сильная комбинация, и их совместное использование может принести много пользы

Например, если у вас есть список значений, которые вы хотите сохранить в макропеременной, вы можете использовать оператор Proc SQL для создания макропеременной

Для этого выполните следующий пример:

proc sql;

selectvariable_nameinto: macro_variable_name separatedby','

fromtable_name;

При желании можно использовать условия для фильтрации значений переменных с помощью оператора where. В противном случае, при использовании обычных условий, вы можете сохранять значения в одной переменной. Сюда входят символьные и числовые значения

Вот пример, демонстрирующий создание макропеременной с помощью proc sql :

proc sql;

selectageinto: age separatedby','

fromtest_example;

Вывод содержит список всех значений возраста из таблицы test_example , каждое из которых разделено запятой. Это можно использовать для фильтрации информации в другом операторе Proc SQL, когда вы извлекаете информацию из таблиц сервера

Output :

Использование макросов SAS для автоматизации повторяющихся задач

Этот список макросов не является исчерпывающим. Есть еще несколько вариантов, которые могут облегчить вам жизнь, особенно если вы кодите каждый день

Однако макросы не ограничиваются только SAS. Есть несколько вариантов макросов, доступных в VBA, которые можно использовать для автоматизации ежедневных повторяющихся задач в Excel, Word и других приложениях MS Office

Если вы любитель автоматизации, попробуйте макросы VBA

Об авторе

Алексей Белоусов

Привет, меня зовут Филипп. Я фрилансер энтузиаст . В свободное время занимаюсь переводом статей и пишу о потребительских технологиях для широкого круга изданий , не переставая питать большую страсть ко всему мобильному =)

Комментировать

Оставить комментарий