Como usar a função match() em r (com exemplos)


A função match() em R retorna a posição da primeira correspondência entre dois objetos.

Esta função usa a seguinte sintaxe básica:

 match(object1, object2)

Os exemplos a seguir mostram como usar essa função em diferentes cenários.

Exemplo 1: Combinando um valor em um vetor

O código a seguir mostra como usar a função match() para encontrar a primeira ocorrência de um valor específico em um vetor:

 #define value to look for in vector
value <- 10

#define vector of values
vector1 <- c(8, 9, 1, 10, 13, 15)

#find first occurrence of 10
match(value, vector1)

[1] 4

Isto nos diz que o valor 10 aparece primeiro na posição do vetor.

Observe que se vários valores corresponderem, apenas a posição da primeira correspondência será retornada.

Por exemplo, o vetor a seguir possui dois valores iguais a 10 mas apenas a posição dos 10 primeiros é retornada:

 #define value to look for in vector
value <- 10

#define vector of values with multiple '10' values
vector1 <- c(8, 9, 1, 10, 10, 10)

#find first occurrence of 10
match(value, vector1)

[1] 4

O valor 10 aparece nas posições 4, 5 e 6, mas somente a posição 4 é retornada.

Exemplo 2: Correspondência de valores em dois vetores

O código a seguir mostra como usar a função match() para encontrar a primeira ocorrência de valores em um vetor em outro vetor:

 #define vectors of values
vector1 <- c(1, 2, 3, 4, 5, 6)
vector2 <- c(8, 6, 1, 10, 10, 15)

#find first occurrence of values in vector1 within vector2
match(vector1, vector2)

[1] 3 NA NA NA NA 2

Veja como interpretar o resultado:

  • A primeira ocorrência do valor 1 no vetor1 ocorre na posição 3 do vetor2.
  • O valor 2 em vector1 nunca aparece em vector2.
  • O valor 3 em vector1 nunca aparece em vector2.
  • O valor 4 em vector1 nunca aparece em vector2.
  • O valor 5 em vector1 nunca aparece em vector2.
  • A primeira ocorrência do valor 6 no vetor1 ocorre na posição 2 do vetor2.

Observe que também podemos especificar um valor diferente para usar nos casos em que não há correspondência.

Por exemplo, poderíamos retornar um valor 0 em vez de NA:

 #define vectors of values
vector1 <- c(1, 2, 3, 4, 5, 6)
vector2 <- c(8, 6, 1, 10, 10, 15)

#find first occurrence of values in vector1 within vector2
match(vector1, vector2, nomatch= 0 )

[1] 3 0 0 0 0 2

Recursos adicionais

Os tutoriais a seguir explicam como usar outras funções comuns em R:

Como usar a função summary() em R
Como usar a função replicate() em R
Como usar a função gsub() em R
Como usar a função par() em R

Add a Comment

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