如何使用 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 中执行其他常见任务:

SAS中如何从字符串中提取数字
如何从SAS中的字符串中删除逗号
如何在SAS中按分隔符分割字符串

添加评论

您的电子邮箱地址不会被公开。 必填项已用*标注