Sas:find和index的区别
您可以使用 SAS 中的FIND和INDEX函数返回出现在字符串中的子字符串的第一个字符的位置。
这些函数之间的区别在于FIND函数允许您执行INDEX函数无法执行的两件事:
- FIND允许您执行不区分大小写的搜索。
- FIND允许您指定搜索的起始位置。
以下示例通过 SAS 中包含句子列的以下数据集说明了FIND和INDEX函数在实践中的差异:
/*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
以下代码演示如何使用FIND和INDEX函数查找表达式列中子字符串“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;
请注意, FIND和INDEX函数返回完全相同的结果。
find_pig和index_pig列 显示子字符串“pig”在短语列中第一次出现的位置。
示例 2:使用 FIND 和 INDEX 进行不区分大小写的搜索
以下代码演示如何使用FIND和INDEX函数查找表达式列中单词“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 中的其他常用函数: