Sas: a diferença entre find e index
Você pode usar as funções FIND e INDEX no SAS para retornar a posição do primeiro caractere de uma substring que aparece dentro de uma string.
A diferença entre essas funções é que a função FIND permite fazer duas coisas que a função INDEX não pode fazer:
- FIND permite que você execute uma pesquisa sem distinção entre maiúsculas e minúsculas.
- FIND permite especificar uma posição inicial para a pesquisa.
Os exemplos a seguir ilustram a diferença entre as funções FIND e INDEX na prática com o seguinte conjunto de dados no SAS que contém uma coluna de frase:
/*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;
Exemplo 1: Usando FIND e INDEX sem diferenças
O código a seguir mostra como usar as funções FIND e INDEX para encontrar a posição da primeira ocorrência da substring “pig” na coluna de expressão :
/*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;
Observe que as funções FIND e INDEX retornam exatamente os mesmos resultados.
As colunas find_pig e index_pig exibir a posição da primeira ocorrência da substring “pig” na coluna da frase .
Exemplo 2: Usando FIND e INDEX com uma pesquisa que não diferencia maiúsculas de minúsculas
O código a seguir mostra como usar as funções FIND e INDEX para encontrar a posição da primeira ocorrência da palavra “PIG” na coluna de expressão :
/*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;
Usando o modificador “i” na função FIND , conseguimos realizar uma pesquisa sem distinção entre maiúsculas e minúsculas para a substring “PIG” na coluna da frase.
No entanto, a função INDEX não é capaz de realizar uma pesquisa sem distinção entre maiúsculas e minúsculas, portanto, simplesmente retornou 0 para cada linha, pois a substring maiúscula “PIG” não existia em nenhuma frase.
Exemplo 3: Usando FIND e INDEX com uma posição inicial específica
O código a seguir mostra como usar a função FIND para localizar a substring “pig” na coluna de frase começando na posição 5 , enquanto a função INDEX não é capaz de usar uma posição inicial específica:
/*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;
A função find_pig procura a substring ‘pig’ começando na posição 5 da coluna da frase .
A função index_pig simplesmente procura a substring “pig” em qualquer lugar da coluna da frase , pois não é capaz de especificar uma posição inicial para a pesquisa.
Recursos adicionais
Os tutoriais a seguir explicam como usar outras funções comuns no SAS:
Como usar a função SUBSTR no SAS
Como usar a função COMPRESS no SAS
Como usar a função COALESCE no SAS