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

Add a Comment

O seu endereço de email não será publicado. Campos obrigatórios marcados com *