Как использовать функцию prxmatch в sas (с примерами)
Вы можете использовать функцию PRXMATCH в SAS для поиска определенного шаблона в строке и возврата позиции, в которой этот шаблон найден.
Эта функция использует следующий базовый синтаксис:
PRXMATCH(регулярное выражение, источник)
Золото:
- регулярное выражение : регулярное выражение, определяющее шаблон для поиска.
- source : Имя переменной для поиска.
В следующих примерах показаны три распространенных способа использования этой функции на практике со следующим набором данных в SAS:
/*create dataset*/
data my_data;
input team $points;
datalines ;
Mavs 22
mavs 14
Warriors 23
Mavs 19
warriors 34
MAVS 40
WARRIORS 39
;
run ;
/*view dataset*/
proc print data =my_data;
Пример 1. Используйте PRXMATCH для поиска позиции шаблона в строке.
В следующем коде показано, как использовать функцию PRXMATCH для создания нового столбца с именем Position, который содержит позицию, в которой строка «avs» появляется в столбце команды:
/*create new dataset*/
data new_data;
set my_data;
position = prxmatch ("/avs/", team);
run ;
/*view new dataset*/
proc print data = new_data;
По результату мы видим:
- Первая строка содержит шаблон «avs» в столбце команды, начиная со второй позиции строки.
- Вторая строка содержит шаблон «avs» в начальной позиции 2 столбца команды.
- Третья строка не содержит шаблона «avs» в столбце «команда», поэтому возвращается значение 0 .
И так далее.
Пример 2. Используйте PRXMATCH, чтобы проверить, содержит ли строка шаблон.
В следующем коде показано, как использовать функцию PRXMATCH для создания нового столбца с именем mavs_flag , который содержит значение 1 , если строка столбца команды содержит «avs» в любом месте строки, и значение 0 , если это не так:
/*create new dataset*/
data new_data;
set my_data;
if prxmatch("/Mavs/i", team) > 0 then mavs_flag = 1 ;
else mavs_flag = 0 ;
run ;
/*view new dataset*/
proc print data = new_data;
Обратите внимание, что i в конце регулярного выражения указывает, что SAS должен выполнять поиск без учета регистра.
Просто забудьте i , если хотите вместо этого выполнить поиск с учетом регистра.
Пример 3. Используйте PRXMATCH для фильтрации набора данных по строкам, содержащим шаблон.
В следующем коде показано, как использовать функцию PRXMATCH для создания нового набора данных, содержащего только те строки в my_data , которые имеют строку «Mavs» (без учета регистра) в столбце команды:
/*create dataset*/
data original_doriginal_data;
Обратите внимание, что каждая строка в новом наборе данных содержит слово «Mavs» в столбце команды.
Дополнительные ресурсы
В следующих руководствах объясняется, как выполнять другие распространенные задачи в SAS:
Как извлечь числа из строки в SAS
Как удалить запятые из строки в SAS
Как разделить строки по разделителю в SAS