Como fazer um vlookup (semelhante ao excel) em r


A função VLOOKUP no Excel permite encontrar um valor em uma tabela comparando-o em uma coluna.

Por exemplo, na planilha Excel a seguir, podemos pesquisar o nome do time de um jogador usando VLOOKUP para corresponder ao nome do jogador e retornar o time do jogador:

Podemos replicar esta função usando base R ou o pacote dplyr:

Usando Base R:

 merge(df1, df2, by=" merge_column ")

Usando dplyr:

 inner_join(df1, df2, by=" merge_column ")

Os exemplos a seguir mostram como usar cada uma dessas funções em R para replicar a função VLOOKUP do Excel.

PROCV usando Base R

O código a seguir mostra como executar uma função semelhante a VLOOKUP na base R usando a função merge() :

 #create first data frame
df1 <- data.frame(player= LETTERS [1:15],
                  team= rep (c(' Mavs ', ' Lakers ', ' Rockets '), each =5))

#create second data frame 
df2 <- data.frame(player= LETTERS [1:15],
                  points=c(14, 15, 15, 16, 8, 9, 16, 27, 30, 24, 14, 19, 8, 6, 5))

#merge the two data frames
merge(df1, df2, by=" player ")

   player team points
1 A Mavs 14
2 B Mavs 15
3C Mavs 15
4D Mavs 16
5 E Mavs 8
6 F Lakers 9
7G Lakers 16
8 a.m. Lakers 27
9 I Lakers 30
10 J Lakers 24
11K Rockets 14
12L Rockets 19
13 M Rockets 8
14 N Rockets 6
15 O Rockets 5

Observe que isso retorna os mesmos resultados que a função VLOOKUP no exemplo introdutório. Observe também que você pode especificar várias colunas para mesclar usando o argumento by .

PROCV usando dplyr

 library (dplyr)

#create first data frame
df1 <- data.frame(player= LETTERS [1:15],
                  team= rep (c(' Mavs ', ' Lakers ', ' Rockets '), each =5))

#create second data frame 
df2 <- data.frame(player= LETTERS [1:15],
                  points=c(14, 15, 15, 16, 8, 9, 16, 27, 30, 24, 14, 19, 8, 6, 5))

#merge the two data frames using inner_join
inner_join(df1, df2, by=" player ")

   player team points
1 A Mavs 14
2 B Mavs 15
3C Mavs 15
4D Mavs 16
5 E Mavs 8
6 F Lakers 9
7G Lakers 16
8 a.m. Lakers 27
9 I Lakers 30
10 J Lakers 24
11K Rockets 14
12L Rockets 19
13 M Rockets 8
14 N Rockets 6
15 O Rockets 5

Observe que isso retorna os mesmos resultados que a função VLOOKUP no Excel. Observe também que você pode especificar várias colunas para mesclar usando o argumento by .

Além disso, se quiser que não-correspondências sejam exibidas, você pode usar a função left_join .

Recursos adicionais

Como calcular somas cumulativas em R
Como padronizar dados em R
Como adicionar linhas a um quadro de dados em R

Add a Comment

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