Sas:find和index的区别


您可以使用 SAS 中的FINDINDEX函数返回出现在字符串中的子字符串的第一个字符的位置。

这些函数之间的区别在于FIND函数允许您执行INDEX函数无法执行的两件事:

  • FIND允许您执行不区分大小写的搜索。
  • FIND允许您指定搜索的起始位置。

以下示例通过 SAS 中包含句子列的以下数据集说明了FINDINDEX函数在实践中的差异

 /*create dataset*/
data original_data;
    input sentence $40. ;
    datalines ;
A pig is my favorite animal
My name is piglet
Pigs are so cute
Here is a baby pig
His name is piggy
;
run ;

/*view dataset*/
proc print data = original_data; 

示例 1:毫无区别地使用 FIND 和 INDEX

以下代码演示如何使用FINDINDEX函数查找表达式列中子字符串“pig”第一次出现的位置:

 /*find position of first occurrence of 'pig' in phrase column*/
data new_data;
    set original_data;
    find_pig = find (phrase, 'pig');
    index_pig = index (phrase, 'pig');
run ;

/*view results*/
proc print data = new_data;

请注意, FINDINDEX函数返回完全相同的结果。

find_pigindex_pig 显示子字符串“pig”在短语列中第一次出现的位置。

示例 2:使用 FIND 和 INDEX 进行不区分大小写的搜索

以下代码演示如何使用FINDINDEX函数查找表达式列中单词“PIG”第一次出现的位置:

 /*find position of first occurrence of 'PIG' in phrase column*/
data new_data;
    set original_data;
    find_pig = find (phrase, 'PIG', 'i');
    index_pig = index (phrase, 'PIG');
run ;

/*view results*/
proc print data =new_data;

使用FIND函数中的“i”修饰符,我们能够对短语列中的“PIG”子字符串执行不区分大小写的搜索。

但是, INDEX函数无法执行不区分大小写的搜索,因此它只是为每行返回0 ,因为任何句子中都不存在大写子字符串“PIG”。

示例 3:使用具有特定起始位置的 FIND 和 INDEX

以下代码演示如何使用FIND函数在短语列中查找从位置 5 开始的子字符串“pig”,INDEX函数根本无法使用特定的起始位置:

 /*find position of first occurrence of 'pig' in phrase column starting at position 5*/
data new_data;
    set original_data;
    find_pig = find (phrase, 'pig', 5 );
    index_pig = index (phrase, 'pig');
run ;

/*view results*/
proc print data = new_data;

find_pig函数从短语列的位置 5 开始搜索子字符串“pig”。

index_pig函数只是在短语列中的任何位置搜索“pig”子字符串,因为它无法指定搜索的起始位置。

其他资源

以下教程介绍了如何使用 SAS 中的其他常用函数:

SAS中SUBSTR函数的使用方法
如何使用SAS中的COMPRESS函数
SAS中COALESCE函数的使用方法

添加评论

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