如何使用 sas 中的 prxmatch 函数(附示例)
您可以使用 SAS 中的PRXMATCH函数来搜索字符串中的特定模式并返回找到该模式的位置。
该函数使用以下基本语法:
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”在 team 列中出现的位置:
/*create new dataset*/
data new_data;
set my_data;
position = prxmatch ("/avs/", team);
run ;
/*view new dataset*/
proc print data = new_data;
从结果我们可以看出:
- 第一行在 team 列中包含模式“avs”,从字符串的位置2开始。
- 第二行包含模式“avs”,位于字符串中团队列起始位置2中。
- 第三行的 team 列中不包含“avs”模式,因此返回值0 。
等等。
示例 2:使用 PRXMATCH 检查字符串是否包含模式
以下代码演示如何使用PRXMATCH函数创建一个名为mavs_flag的新列,如果团队列字符串在字符串中的任何位置包含“avs”,则该列包含值1 ;如果不是这种情况,则包含值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中 team 列中包含字符串“Mavs”(不区分大小写)的行:
/*create dataset*/
data original_doriginal_data;
请注意,新数据集中的每一行在球队列中都包含“Mavs”。
其他资源
以下教程解释了如何在 SAS 中执行其他常见任务: